<?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: Lucis</title>
    <description>The latest articles on DEV Community by Lucis (@lucis).</description>
    <link>https://dev.to/lucis</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%2F171383%2F4bf92003-beb6-4c3d-a33c-7a45d05ac4b3.png</url>
      <title>DEV Community: Lucis</title>
      <link>https://dev.to/lucis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lucis"/>
    <language>en</language>
    <item>
      <title>Por que usar Deno Fresh como framework web?</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Mon, 10 Oct 2022 17:55:33 +0000</pubDate>
      <link>https://dev.to/lucis/por-que-usar-deno-fresh-como-framework-web-2g23</link>
      <guid>https://dev.to/lucis/por-que-usar-deno-fresh-como-framework-web-2g23</guid>
      <description>&lt;p&gt;O &lt;a href="https://fresh.deno.dev/"&gt;&lt;strong&gt;Fresh&lt;/strong&gt;&lt;/a&gt; foi &lt;a href="https://deno.com/blog/fresh-is-stable"&gt;lançado oficialmente&lt;/a&gt; há pouco tempo e se apresenta como uma excelente alternativa para criação de aplicações web de alta performance, ideal para casos como ecommerce e landing pages. Nesse post pretendo comentar sobre suas características e como ele se posiciona quando comparado a outras tecnologias.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d8xOu2kV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/194725779-64e0770f-0a0f-464a-ba85-e3f81b834c4e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d8xOu2kV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/194725779-64e0770f-0a0f-464a-ba85-e3f81b834c4e.png" alt="Deno - The next-gen web framework" width="880" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sendo um framework web completo, o Fresh oferece &lt;strong&gt;Server-Side Rendering por padrão na Edge&lt;/strong&gt; e foca em simplicidade na experiência de desenvolvimento. Similar ao &lt;a href="https://remix.run/"&gt;Remix&lt;/a&gt;, as APIs da Web são utilizadas sempre que possível (ex: uso de HTML Forms ao invés de &lt;code&gt;&amp;lt;input value={state} onChange={(e) =&amp;gt; setState(e.target.value)&lt;/code&gt; ) e o roteamento é baseado em arquivos – também similar ao &lt;a href="https://nextjs.org/"&gt;Next.js&lt;/a&gt;. É interessante que o Fresh traz de volta um modelo de desenvolvimento comum nos anos 2000 com &lt;a href="https://www.php.net/"&gt;PHP &lt;/a&gt;e &lt;a href="https://rubyonrails.org/"&gt;Ruby On Rails&lt;/a&gt;, agora com a evolução de ter apenas uma linguagem para browser e servidor e também com a facilidade do JSX para a criação de componentes. &lt;/p&gt;

&lt;p&gt;🎥 O vídeo &lt;a href="https://www.youtube.com/watch?v=4boXExbbGCk"&gt;a fresh new web framework is out&lt;/a&gt; do canal Fireship explica em ~3min alguns detalhes da arquitetura utilizada.&lt;/p&gt;

&lt;p&gt;O diferencial do Fresh ocorre pelas tecnologias escolhidas, e entender cada uma delas é importante para concluir como o Fresh se propõe ser o framework da &lt;strong&gt;próxima geração!&lt;/strong&gt; As tecnologias que irei comentar aqui são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deno&lt;/li&gt;
&lt;li&gt;Preact&lt;/li&gt;
&lt;li&gt;Twind&lt;/li&gt;
&lt;li&gt;Deno Deploy&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Deno&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://deno.land/"&gt;Deno&lt;/a&gt; é um &lt;em&gt;runtime&lt;/em&gt; (ambiente de execução) para &lt;a href="https://www.typescriptlang.org/"&gt;Typescript&lt;/a&gt; e &lt;strong&gt;Javascript&lt;/strong&gt;, similar ao &lt;strong&gt;Node.js&lt;/strong&gt;. Não é coincidência que o &lt;em&gt;Deno&lt;/em&gt; tem as mesmas letras de &lt;em&gt;Node&lt;/em&gt;: ambos foram criados pela mesma pessoa, &lt;a href="https://en.wikipedia.org/wiki/Ryan_Dahl"&gt;Ryan Dahl&lt;/a&gt;. Uma das &lt;em&gt;talks&lt;/em&gt; mais emblemáticas de Ryan é &lt;a href="https://www.youtube.com/watch?v=M3BM9TB-8yA"&gt;10 coisas que eu me arrependo sobre Node.js&lt;/a&gt;, onde ele descreve problemas já conhecidos pela comunidade e detalha sua proposta para o &lt;strong&gt;Deno&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Os pontos que mais se destacam do Deno são &lt;strong&gt;simplicidade&lt;/strong&gt; e &lt;strong&gt;performance&lt;/strong&gt;, focando em uma experiência de desenvolvimento melhorada em relação ao Node.js. Algumas características do Deno são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uso das &lt;a href="https://deno.land/manual/runtime/web_platform_apis"&gt;APIs da Web&lt;/a&gt; sempre que possível.&lt;/li&gt;
&lt;li&gt;Os &lt;em&gt;imports&lt;/em&gt; de bibliotecas são feitos por URL, sem a necessidade de um gerenciador de pacotes como o &lt;a href="https://www.npmjs.com/"&gt;NPM&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Suporte a &lt;strong&gt;Typescript por padrão&lt;/strong&gt;, sem a necessidade de configuração.&lt;/li&gt;
&lt;li&gt;Utiliza Rust, ao invés de C++ do Node, para o código interno do &lt;em&gt;runtime.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Otimizado para performance. O objetivo do Deno é sempre ser &lt;a href="https://deno.com/blog/changes#the-fastest-javascript-runtime"&gt;o runtime mais rápido para Typescript/Javascript&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esses pontos fazem com que boa parte dos projetos que usam Deno &lt;strong&gt;não precisem de build&lt;/strong&gt;, o que se torna uma vantagem para o processo de desenvolvimento.&lt;/p&gt;

&lt;p&gt;🎥 O vídeo &lt;a href="https://www.youtube.com/watch?v=F0G9lZ7gecE"&gt;deno in 100 seconds&lt;/a&gt; explica bem brevemente o Deno. Ressalto que alguns pontos já foram melhorados, como o &lt;a href="https://deno.com/blog/changes"&gt;suporte a módulos que estão no NPM&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Eu acredito que o Deno possibilita um salto em experiência de desenvolvimento comparado ao Node.js, especialmente quando notamos o tempo que é gasto em problemas de build e em &lt;code&gt;npm install&lt;/code&gt;, algo que já é considerado "normal" na vida de um dev.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Preact&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A escolha do &lt;a href="https://preactjs.com/"&gt;Preact&lt;/a&gt; como biblioteca para UI é fundamental para que o Fresh entregue o salto de performance que propõe, e é importante entender os motivos dessa escolha.&lt;/p&gt;

&lt;p&gt;É indiscutível a popularidade do &lt;a href="https://reactjs.org/"&gt;React.js&lt;/a&gt; na comunidade e no mercado, e o Preact se destaca por &lt;strong&gt;ter as mesmas APIs do React, porém ser muito mais leve e otimizado&lt;/strong&gt;. Isso foi possível graças a otimizações nos algoritmos internos e também por ter aprendido com as limitações do React ao longo dos anos. O código principal do Preact &lt;strong&gt;pesa apenas 3kb&lt;/strong&gt;, diminuindo o tamanho do bundle de Javascript que uma página precisa pra ser interativa no navegador.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Preact vs React&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Sabendo que o Preact traz benefícios claros em relação a performance, fica a pergunta: o que preciso abrir mão em relação ao React para usá-lo? A resposta é: &lt;strong&gt;quase nada!&lt;/strong&gt; 😁&lt;/p&gt;

&lt;p&gt;&lt;a href="https://preactjs.com/guide/v10/differences-to-react"&gt;Essa página&lt;/a&gt; lista as diferenças entre as duas bibliotecas e, pessoalmente, não senti nenhuma limitação criando meus apps em Preact, onde uso Functional Components e Hooks. As bibliotecas externas que não funcionam automaticamente podem ser habilitadas utilizando o pacote &lt;a href="https://preactjs.com/guide/v10/switching-to-preact/"&gt;preact/compat&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Recentemente contribui com o projeto &lt;a href="https://github.com/Meu-Santinho/meu-santinho/blob/main/components"&gt;Meu Santinho&lt;/a&gt;, que usa o Fresh. Você pode verificar nos arquivos de componentes que tudo é familiar para quem já desenvolveu componentes React. Todas as funcionalidades que você já conhece do React funcionam no Preact.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;React&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Preact&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;JSX support&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;useState/useEffect&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Event Listeners&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context API&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Para saber mais detalhes das diferenças entre os dois, acesse &lt;a href="https://preactjs.com/guide/v10/differences-to-react"&gt;Differences to React&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Twind&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://twind.dev/"&gt;Twind&lt;/a&gt; é a solução padrão para estilização de componentes (CSS) no Fresh. O nome que lembra o &lt;a href="https://tailwindcss.com/"&gt;TailwindCSS&lt;/a&gt; não é coincidência: &lt;strong&gt;o Twind é o Tailwind otimizado para performance&lt;/strong&gt;, especialmente para dispensar a necessidade de &lt;em&gt;build&lt;/em&gt;. O Tailwind/Twind são bibliotecas de estilização CSS baseada em tokens de classe (ex: &lt;code&gt;text-center&lt;/code&gt;, &lt;code&gt;flex&lt;/code&gt;, &lt;code&gt;justify-center&lt;/code&gt;...) que facilitam a criação de componentes de UI.&lt;/p&gt;

&lt;p&gt;Recentemente, o Fresh &lt;a href="https://deno.com/blog/fresh-1.1"&gt;anunciou o plugin para Twind&lt;/a&gt; que tornou a experiência de desenvolvimento mais simples.&lt;/p&gt;

&lt;p&gt;O suporte a outros modelos de estilização como &lt;em&gt;CSS modules&lt;/em&gt; é possível, porém não é o foco do projeto no momento. Pessoalmente, o Twind oferece uma ótima experiência para os desenvolvedores, especialmente usando a &lt;a href="https://github.com/tw-in-js/vscode-twind-intellisense"&gt;extensão do Twind para VSCode&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Deno Deploy&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A cereja do bolo do Fresh não está nas soluções acima, mas no último passo do processo de desenvolvimento: colocar a aplicação online. O &lt;a href="https://deno.com/deploy"&gt;&lt;strong&gt;Deno Deploy&lt;/strong&gt;&lt;/a&gt; é, de longe, o que mais me impressionou nessa stack: &lt;strong&gt;em 3s&lt;/strong&gt;, um app Fresh é &lt;em&gt;deployado&lt;/em&gt; para 34 regiões ao redor do mundo! Isso possibilita que o código execute perto dos usuários, resultando em uma latência impossível com frameworks tradicionais.&lt;/p&gt;

&lt;p&gt;O artigo &lt;a href="https://deno.com/blog/the-future-of-web-is-on-the-edge"&gt;The Future of the Web is on the Edge&lt;/a&gt; explica muito bem as vantagens que mencionei aqui e recomendo a leitura.&lt;/p&gt;

&lt;p&gt;A rapidez do deploy ocorre principalmente pela escolha de &lt;strong&gt;não existir build&lt;/strong&gt;, e isso torna a geração de &lt;strong&gt;Deploy Previews&lt;/strong&gt; a partir de commits no Github praticamente instantânea:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HXrgt0xz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/194727515-78311e6b-c060-47ac-8130-07b4e1f2ca29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HXrgt0xz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/194727515-78311e6b-c060-47ac-8130-07b4e1f2ca29.png" alt="Deploys no Deno Deploy do app Meu Santinho" width="880" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Você pode testar o Deno Deploy a partir do seu navegador criando &lt;a href="https://deno.com/deploy/docs/playgrounds#creating-a-playground"&gt;playgrounds&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Comparando com outras soluções&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Outros frameworks dividem espaço com o Fresh e também buscam otimizações de performance para aplicações Web, mas a vantagem competitiva ao usar o &lt;strong&gt;Deno&lt;/strong&gt; se torna clara nos &lt;em&gt;benchmarks&lt;/em&gt;. Por exemplo, no vídeo &lt;a href="https://youtu.be/qCX8rw4qOSA?t=1025"&gt;Bun vs Node: Round 2 (feat. Astro, Deno, Fresh and more) do canal &lt;strong&gt;Jack Herrington&lt;/strong&gt;&lt;/a&gt; é possível verifica a forte diferença nas métricas requisições por segundo e latência ao usar o Fresh.&lt;/p&gt;

&lt;p&gt;Vale ressaltar, no tempo que o vídeo foi publicado, o Fresh ainda não tinha sido integrado com &lt;a href="https://deno.com/blog/v1.25#new-experimental-http-server-api"&gt;o novo servidor HTTP do Deno&lt;/a&gt; que traz ainda mais melhorias de performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YGfoWzSX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/194926137-3ce741ee-30a5-4b7d-a90b-83687f0975b2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YGfoWzSX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/194926137-3ce741ee-30a5-4b7d-a90b-83687f0975b2.png" alt="f9038d2d-6dd6-4c83-b8e1-57a0ce66d7f3" width="880" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Tendo já estudado e desenvolvido apps com outras soluções, o Fresh me agrada por trazer de volta bons modelos de desenvolvimento, mas utilizando tecnologias modernas e permitindo uso de bibliotecas React. O fluxo de criar aplicações fica mais simples, e sobra mais tempo pra focar no que realmente importa: o produto.&lt;/p&gt;

&lt;p&gt;Caso tenha se interessado, recomendo seguir os passos em &lt;a href="https://fresh.deno.dev/"&gt;https://fresh.deno.dev/&lt;/a&gt; e criar um projeto usando o Fresh. Também recomendo verificar &lt;a href="https://github.com/denoland/fresh"&gt;o repositório no Github&lt;/a&gt; e ingressar na &lt;a href="https://discord.com/invite/deno"&gt;comunidade do Deno no Discord&lt;/a&gt;, especialmente no canal &lt;em&gt;#fresh&lt;/em&gt;.&lt;/p&gt;

</description>
      <category>deno</category>
      <category>typescript</category>
      <category>fresh</category>
    </item>
    <item>
      <title>Um guia prático para aprender programação do zero</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Thu, 28 Oct 2021 01:44:06 +0000</pubDate>
      <link>https://dev.to/lucis/um-guia-pratico-para-aprender-programacao-do-zero-51h9</link>
      <guid>https://dev.to/lucis/um-guia-pratico-para-aprender-programacao-do-zero-51h9</guid>
      <description>&lt;h2&gt;
  
  
  Quem é você?
&lt;/h2&gt;

&lt;p&gt;O público-alvo desse artigo é quem tem pouca ou nenhuma experiência com programação mas que deseja aprender a programar no intuito de usar essas habilidades no mercado de trabalho. Portanto, serei pragmático nas escolhas do conteúdo.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é isso?
&lt;/h2&gt;

&lt;p&gt;Nesse texto, farei sugestões de tópicos sobre programação capazes de gerar rápidos resultados, garantindo que a sua jornada seja divertida desde o início. Te garanto: é bem mais simples do que parece.&lt;/p&gt;

&lt;p&gt;Explicarei alguns conceitos básicos sobre a área e depois comentarei sobre a trilha de aprendizado que escolhi, baseado na minha percepção do mercado enquanto profissional. Fiz uma seleção otimizada dos conteúdos para manter o artigo conciso, garantindo que há o necessário para sólidos primeiros passos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que escrevo?
&lt;/h2&gt;

&lt;p&gt;Eu escrevo este artigo após receber feedbacks positivos ao assessorar alguns colegas que me pediram indicações de estudo sobre como aprender programação do zero.&lt;/p&gt;

&lt;p&gt;Outro fator que me motivou foi a inundação de informações que a internet sofreu sobre a área de tecnologia nos últimos anos. Infelizmente, há muitos materiais, cursos e vídeos introdutórios que considero contra-intuitivos, com falsas promessas de salários fartos associados à ilusão de pouco esforço e pouco estudo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quem sou eu?
&lt;/h2&gt;

&lt;p&gt;Formado em Ciência da Computação pela Universidade Federal de Campina Grande, atualmente trabalho como Engenheiro de Software desenvolvendo produtos para internet. Quando eu tinha 7 anos, já imaginava construir uma carreira em tecnologia, e vivia deslumbrado com o todo-poderoso Google, descobrindo como tudo o que estava internet havia sido criado. &lt;/p&gt;

&lt;p&gt;Ainda criança, ouvi de um colega mais velho que o curso de Ciência da Computação (CC) na Universidade Federal de Campina Grande era um dos melhores do Brasil. Então, quando me perguntavam o que eu queria "ser quando crescer", dizia: Cientista da Computação. &lt;/p&gt;

&lt;p&gt;Naquela época, acho que a maioria das pessoas ao ouvir sobre esse curso provavelmente presumia que o foco de estudo seria "como montar um computador" (o que não sei bem até hoje). Era raro alguém saber o que era um &lt;em&gt;software&lt;/em&gt; ou quais as competências necessárias para desenvolver um.&lt;/p&gt;

&lt;p&gt;Anos depois, quando eu já estava no primeiro semestre na universidade, a situação era outra: a área de TI era bem mais conhecida e vista como promissora. Alguns colegas de ensino médio, que estavam indecisos no que cursar, escolheram CC para "ver no que vai dar". Nos anos seguintes, eu já observava um fenômeno que hoje, em 2021, está no seu ápice: o êxodo de estudantes e profissionais de diversas áreas para a tecnologia.&lt;/p&gt;

&lt;p&gt;Ficava cada vez mais evidente que os cursos tradicionais estavam perdendo os seus alunos devido a essa migração de área e, inclusive, muitos estudantes faziam transferência interna na própria Universidade, aproveitando disciplinas equivalentes que já haviam cursado. Ao mesmo tempo, muito se falava sobre a alta demanda de profissionais de TI para construir o tão desenhado futuro digital.&lt;/p&gt;

&lt;p&gt;Hoje, esse fenômeno migratório tem bastante força e não é exclusivo dos estudantes, mas também de pessoas já graduadas e profissionais que buscam aprimorar seus currículos. É importante notar que a pandemia do COVID-19 acelerou tudo isso, especialmente em três relevantes aspectos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Digitalização forçada das áreas tradicionais;&lt;/li&gt;
&lt;li&gt;Flexibilização do trabalho;&lt;/li&gt;
&lt;li&gt;Estímulo para exportar mão-de-obra qualificada.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Antes, algumas dicas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tente sempre associar seu aprendizado com algum &lt;strong&gt;projeto interessante&lt;/strong&gt; que você gostaria de fazer. Sua família tem um pequeno negócio que precisa de um site? Tente implementá-lo! Meus melhores momentos de aprendizado foram com projetos de &lt;em&gt;hobby&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Devagar e sempre.&lt;/em&gt; &lt;strong&gt;Priorize a frequência&lt;/strong&gt; em seu aprendizado. É melhor várias doses pequenas porém frequentes do que poucas longas e exaustivas.&lt;/li&gt;
&lt;li&gt;Treine bastante sua &lt;strong&gt;habilidade de pesquisa&lt;/strong&gt; online. Esse ponto talvez seja uma das dicas mais importantes aqui. Um bom desenvolvedor é aquele que sabe como achar algo que precisa. Exercite suas habilidades de usar o Google ou seu buscador preferido.&lt;/li&gt;
&lt;li&gt;Tente encontrar alguma &lt;strong&gt;mentoria com quem você possa contar&lt;/strong&gt;. Há várias pessoas experientes que se voluntariam para ajudar iniciantes, você pode achá-las por portais de &lt;em&gt;mentoria tech&lt;/em&gt; na internet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Que seja divertido!&lt;/strong&gt; A sua satisfação no decorrer dessas etapas é fundamental para um bom resultado.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Como cheguei nessas recomendações?
&lt;/h2&gt;

&lt;p&gt;Em um curso formal de nível superior, a grade curricular é realizada de forma gradual e incremental, na qual diversas matérias são pré-requisito para outras; ou seja, muito do que você aprende em um semestre é necessário para você aprender no próximo. Uma graduação de bacharel em Ciência da Computação dura em média 4 anos.&lt;/p&gt;

&lt;p&gt;Apesar de considerar a graduação importante para a formação profissional e cidadã, tenho forte convicção que ela não é estritamente necessária para formação de bons profissionais. Eu poderia detalhar esse ponto, mas o assunto merece um outro &lt;em&gt;post&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;É importante ressaltar que a área de computação/software é imensa e abriga diferentes campos e habilidades. Uma graduação, na maioria dos casos, tenta abordar as áreas com bastante amplitude e pouca profundidade, dando a chance de cada estuante decidir no que vai se especializar. Os conteúdos que vou recomendar aqui serão bem mais sucintos e diretos.&lt;/p&gt;

&lt;p&gt;Como falei, há diversas funções que um profissional de tecnologia pode exercer e, até quando analisamos apenas aquelas que requerem programação, também há uma série de ramificações. Alguns principais exemplos são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web  &lt;em&gt;(assunto que escolhi para esse guia);&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Engenharia de Dados;&lt;/li&gt;
&lt;li&gt;Inteligência Artificial;&lt;/li&gt;
&lt;li&gt;Programação Nativa (apps para iOS, Android, Windows...);&lt;/li&gt;
&lt;li&gt;Jogos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Todas essas áreas são muito promissoras e interessantes, mas a Web se destaca pela sua popularidade. Nela, os &lt;em&gt;softwares&lt;/em&gt; produzidos são executados num navegador, tal como o &lt;em&gt;app&lt;/em&gt; que você está usando para ler este texto. Embora a Web não seja a melhor plataforma para todos os problemas que existem, ela está se tornando um ecossistema cada vez mais robusto, poderoso e adaptável.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do que consiste programação web?
&lt;/h2&gt;

&lt;p&gt;A &lt;a href="https://en.wikipedia.org/wiki/World_Wide_Web" rel="noopener noreferrer"&gt;World Wide Web (WWW)&lt;/a&gt;, que muitos chamam de &lt;strong&gt;&lt;em&gt;internet&lt;/em&gt;&lt;/strong&gt;, consiste em um conjunto de tecnologias, protocolos e &lt;em&gt;softwares&lt;/em&gt; idealizados entre os anos 80 e 90 pelo britânico &lt;a href="https://en.wikipedia.org/wiki/Tim_Berners-Lee" rel="noopener noreferrer"&gt;Tim Berners-Lee&lt;/a&gt;. O principal &lt;em&gt;software&lt;/em&gt; da Web é o &lt;em&gt;browser&lt;/em&gt; (navegador), que permite aos usuários o acesso a um ecossistema de informações através de uma rede mundial de computadores (a real &lt;strong&gt;&lt;em&gt;internet&lt;/em&gt;&lt;/strong&gt;). Alguns exemplos de browser são: Google Chrome, Safari e Firefox.&lt;/p&gt;

&lt;p&gt;O &lt;em&gt;browser&lt;/em&gt; possui várias responsabilidades para fazer a Web funcionar, e uma delas é "desenhar" as informações dos sites na tela do dispositivo no qual está sendo executado. Esses &lt;em&gt;sites&lt;/em&gt; são definidos por documentos que utilizam &lt;em&gt;linguagens de programação ou de declaração.&lt;/em&gt; A Web moderna é composta por 3 destas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTML:&lt;/strong&gt; define os elementos visuais e semânticos que um usuário percebe em um site;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSS:&lt;/strong&gt; estiliza e customiza os elementos previamente declarados com HTML;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript (JS):&lt;/strong&gt; adiciona interatividade entre usuário e aplicação em páginas HTML.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essas 3 tecnologias são igualmente fundamentais para o funcionamento da Web e na maioria das vezes trabalham em conjunto. Se eu pudesse exemplificar que tipo de informação cada linguagem consegue passar, seria algo assim:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTML:&lt;/strong&gt; "Minha página tem um cabeçalho que tem uma imagem e, logo após, um parágrafo de texto"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSS:&lt;/strong&gt; "O parágrafo de texto na minha página é vermelho e a imagem do cabeçalho está alinhada à direita"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript:&lt;/strong&gt; "Quando o usuário passar mais de 30s na página, eu quero que o texto mude da cor vermelho para azul"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Você deve imaginar que dominar programação Web significa dominar essas 3 linguagens. Por mais que pareça bastante para aprender, te garanto que é possível entender o básico em pouco tempo e fazer coisas bem legais. Todos os sites e aplicações que você usa diariamente são feitos, também, apenas com essas linguagens, e é possível analisar os códigos para estudar ou se inspirar.&lt;/p&gt;

&lt;p&gt;Quer ver como funciona? Se você estiver num computador, clique com o botão direito na página e selecione a opção "inspecionar". Será exibido o HTML utilizado para gerar a página e o CSS que foi aplicado para estilizá-la.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F18706156%2F139171058-3b50d206-85c8-4c54-8362-b1d175613893.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F18706156%2F139171058-3b50d206-85c8-4c54-8362-b1d175613893.png" alt="Inspecionando um elemento com as ferramentas de desenvolvedor do navegador"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Precisa saber inglês e matemática?
&lt;/h2&gt;

&lt;p&gt;Essa é a pergunta que eu mais recebo. Minha resposta: matemática, não; inglês, mais ou menos...&lt;/p&gt;

&lt;p&gt;De fato, graduações em Computação são de exatas e possuem verticais de matemática em sua grade curricular, mas isso não significa que você precisa amar ou ser o gênio dos cálculos para ser um bom desenvolvedor Web. Dito isso, é necessário ter uma boa base das operações básicas que são ensinadas no ensino fundamental e médio. &lt;/p&gt;

&lt;p&gt;Já sobre o inglês, não é estritamente necessário, porém recomendo que você comece a praticá-lo no dia-a-dia. Inicialmente, pratique a leitura (você pode usar a &lt;a href="https://chrome.google.com/webstore/detail/google-translate/aapbdbdomjkkjkaonfhkkikfgjllcleb?hl=en" rel="noopener noreferrer"&gt;extensão do Google Translator&lt;/a&gt; pra te ajudar). Após isso, tente praticar suas habilidades de escuta e, quando possível, treine a comunicação oral e escrita. Minhas recomendações pessoais são: usar o &lt;a href="https://www.duolingo.com" rel="noopener noreferrer"&gt;Duolingo&lt;/a&gt; e assistir séries e filmes com legenda em inglês.&lt;/p&gt;

&lt;p&gt;Eis os motivos para considerar o inglês importante:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O conhecimento da programação é esparso e nós programadores - tanto os iniciantes como os experientes - consultamos e estudamos códigos e materiais que, na maioria das vezes, estão em fóruns que usam o inglês;&lt;/li&gt;
&lt;li&gt;Dominar o idioma é mais do que entender palavras, porque você se expõe à pessoas e culturas diferentes que superam traduções literais. Algo que me encanta em TI é a presença de comunidades fortes, e o inglês aumenta as suas chances de achar uma que você se identifique;&lt;/li&gt;
&lt;li&gt;O inglês pode te colocar numa opção privilegiada para conseguir um emprego, já que nos últimos dois anos o número de vagas internacionais remotas &lt;a href="https://twitter.com/michael_nielsen/status/1452349695959785472" rel="noopener noreferrer"&gt;aumentou bastante.&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Como começar?
&lt;/h2&gt;

&lt;p&gt;A jornada de cada pessoa com tecnologia pode ser muito particular, e é provável que você ainda vá descobrir o que mais te interessa. Isso inclui áreas específicas &lt;em&gt;(será que você vai gostar mais de criar páginas estáticas/landing pages, ou aplicações interativas?)&lt;/em&gt; ou também formas de aprender específicas &lt;em&gt;(prefere vídeos ou material escrito?)&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Irei sugerir o que têm funcionado para a maioria das pessoas com as quais conversei, mas entenda que você pode não gostar de algo logo de cara, e &lt;em&gt;tá tudo bem (e é sobre isso?).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;O primeiro passo é começar a aprender as linguagens que apresentei acima, e minha recomendação é estudá-las na ordem apresentada.&lt;/p&gt;

&lt;p&gt;Como plataforma de ensino, recomendo o &lt;strong&gt;&lt;a href="https://www.codecademy.com" rel="noopener noreferrer"&gt;CodeAcademy&lt;/a&gt;&lt;/strong&gt;, um portal interativo com conteúdos completos e ótimos desafios. Os cursos das 3 linguagens que mencionei (HTML, CSS e JavaScript) são gratuitos e podem ser feitos em português ou inglês. No quesito de aprendizagem introdutória, o CodeAcademy é o mais elogiado por aqueles que o recomendei e, de fato, considero que seja devido a essas características:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apresentação teórica com exemplos;&lt;/li&gt;
&lt;li&gt;Desafios com correção automática;&lt;/li&gt;
&lt;li&gt;Revisões com conteúdos incrementais.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aqui estão os links dos cursos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.codecademy.com/learn/learn-html" rel="noopener noreferrer"&gt;Learn HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codecademy.com/learn/learn-css" rel="noopener noreferrer"&gt;Learn CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codecademy.com/learn/introduction-to-javascript" rel="noopener noreferrer"&gt;Learn JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Após finalizar esses cursos, você será capaz de criar sites e aplicações para Web! Se quiser publicar algo na internet, recomendo olhar o &lt;a href="https://www.netlify.com/blog/2019/03/26/deploy-codesandbox-to-netlify/" rel="noopener noreferrer"&gt;Code Sandbox junto com a integração ao Netlify.&lt;/a&gt; Todos esses serviços são gratuitos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Alternativas
&lt;/h3&gt;

&lt;p&gt;Deixarei aqui algumas sugestões alternativas para caso você se interesse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/channel/UCrWvhVmt0Qac3HgsjQK62FQ" rel="noopener noreferrer"&gt;&lt;strong&gt;Canal Curso em Vídeo do Gustavo Guanabara&lt;/strong&gt;&lt;/a&gt;: onde há um &lt;a href="https://www.youtube.com/watch?v=Ejkb_YpuHWs&amp;amp;list=PLHz_AreHm4dkZ9-atkcmcBaMZdmLHft8n" rel="noopener noreferrer"&gt;curso de HTML e CSS&lt;/a&gt; e um &lt;a href="https://www.youtube.com/watch?v=1-w1RfGIov4&amp;amp;list=PLHz_AreHm4dlsK3Nr9GVvXCbpQyHQl1o1" rel="noopener noreferrer"&gt;curso de Javascript&lt;/a&gt;.  🇧🇷&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://exercism.io/" rel="noopener noreferrer"&gt;Exercism&lt;/a&gt;: mantido pela comunidade, esse portal apresenta várias trilhas em diversas linguagens de programação.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;Free Code Camp&lt;/a&gt;: plataforma de código aberto semelhante ao CodeAcademy, também conta com uma ótima comunidade.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quais são os próximos passos?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  React
&lt;/h3&gt;

&lt;p&gt;Embora HTML, CSS e JS sejam a base da Web, na prática, a comunidade dificilmente trabalha apenas com elas, isso porque há formas &lt;em&gt;melhores&lt;/em&gt; de se desenvolver. Esse é o papel das bibliotecas e &lt;em&gt;frameworks&lt;/em&gt;: auxiliar desenvolvedores a criarem sites e aplicações de médio e grande porte. Em geral, as próprias vagas de emprego são direcionadas a &lt;em&gt;frameworks&lt;/em&gt; específicos. Mas não se preocupe, tudo que você aprendeu até agora continua sendo bem importante.&lt;/p&gt;

&lt;p&gt;A tecnologia mais usada nessa categoria é o &lt;a href="https://reactjs.org/" rel="noopener noreferrer"&gt;React&lt;/a&gt;, criado pelo Facebook. Ele permite a criação de aplicações web baseadas em componentes, nos quais você faz o desenvolvimento em um só lugar, ao invés de programar HTML, CSS e JS em arquivos diferentes, além de facilitar a programação de interações.&lt;/p&gt;

&lt;p&gt;Neste mês, o Facebook lançou uma nova página de documentação para o React com um conteúdo inédito e bem interessante. Você pode acessá-la pelo &lt;a href="https://beta.reactjs.org/learn" rel="noopener noreferrer"&gt;https://beta.reactjs.org/learn&lt;/a&gt; e seguir os passos apresentados. É uma experiência parecida com o &lt;em&gt;CodeAcademy&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Após finalizar os estudos básicos de React, você vai aproveitar uma grande vantagem: acessar milhares de bibliotecas e códigos prontos para uso. Em especial, para criar seus elementos visuais, recomendo checar o &lt;a href="https://chakra-ui.com" rel="noopener noreferrer"&gt;ChakraUI&lt;/a&gt; ou o &lt;a href="https://ant.design" rel="noopener noreferrer"&gt;Ant Design&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Typescript
&lt;/h3&gt;

&lt;p&gt;TypeScript (TS) é uma linguagem de programação criada pela Microsoft muito similar ao JavaScript (formalmente, dizemos que TS é um &lt;em&gt;superset&lt;/em&gt; de JS, ou seja: todo código JavaScript é um código Typescript válido). Por ser uma &lt;a href="https://digitalinnovation.one/artigos/o-que-sao-tipagem-dinamica-estatica-fraca-e-forte" rel="noopener noreferrer"&gt;linguagem fortemente tipada&lt;/a&gt;, Typescript torna a experiência de desenvolvimento mais previsível e ajuda a prevenir problemas ("&lt;em&gt;bugs"&lt;/em&gt;) no código.&lt;/p&gt;

&lt;p&gt;Você pode aprender TS através do &lt;a href="https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html" rel="noopener noreferrer"&gt;ótimo portal de documentação da linguagem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Quando você se sentir pronto para fazer uma aplicação completa, algumas pergunta podem surgir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Onde guardar os dados online de uma aplicação?&lt;/li&gt;
&lt;li&gt;Como implementar um fluxo de login/cadastro?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bem, para isso, há uma área especial de Web chamada &lt;em&gt;backend&lt;/em&gt;, e muito provavelmente você irá encontrar esse termo por aí. Mas, uma boa notícia: &lt;strong&gt;você não precisa ter que estudar outro apanhado de coisas para adicionar essas funcionalidades em suas aplicações.&lt;/strong&gt; Deixarei aqui minha recomendação do &lt;a href="https://firebase.google.com/" rel="noopener noreferrer"&gt;Firebase&lt;/a&gt;, uma tecnologia da Google que tenta preencher esse espaço, porém usando apenas o TS/JS que você aprendeu.&lt;/p&gt;

&lt;h2&gt;
  
  
  É só isso?
&lt;/h2&gt;

&lt;p&gt;Infelizmente, não... Há vários outros conteúdos que são importantes e você pode precisar uma hora ou outra, mas não quero deixar o post muito saturado. Não precisa se abduzir: ninguém sabe tudo desde o início! Acredito que o conteúdo que apresentei aqui abrirá sua mente para conseguir aprender melhor e saber galgar os próximos passos.&lt;/p&gt;

&lt;p&gt;Alguns desses conteúdos são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Git e Github&lt;/strong&gt;, usados para organização dos projetos. Para ver do que se trata, recomendo &lt;a href="https://www.youtube.com/watch?v=DqTITcMq68k" rel="noopener noreferrer"&gt;esse conteúdo&lt;/a&gt; do canal da Rafaella Ballerini;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Introdução à computação,&lt;/strong&gt; onde você pode aprender nos &lt;a href="https://www.youtube.com/watch?v=dpoU8ODXZGw&amp;amp;t=226s" rel="noopener noreferrer"&gt;vídeos iniciais&lt;/a&gt; do professor Dalton Serey;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estruturas de dados e algoritmos,&lt;/strong&gt; onde você pode começar aprendendo por &lt;a href="https://joaoarthurbm.github.io/eda/" rel="noopener noreferrer"&gt;esse site&lt;/a&gt; do professor João Arthur Brunet. Outra ótima dica é a plataforma &lt;a href="https://leetcode.com" rel="noopener noreferrer"&gt;LeetCode&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Confira também essas dicas extras sensacionais:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/kamranahmedse/developer-roadmap" rel="noopener noreferrer"&gt;Developer Roadmap&lt;/a&gt;: várias trilhas de conteúdo para desenvolvedores;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ossu/computer-science" rel="noopener noreferrer"&gt;Curso aberto de Ciência da Computação&lt;/a&gt;: material aberto que cobra os conteúdos de uma graduação em CC.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Espero que tenha gostado. Fique à vontade pra contar a sua história ou fazer alguma sugestão :-)&lt;/p&gt;

&lt;p&gt;(Muitíssimo obrigado a Emanuelly Assuéria, Izabella Morais, Matheus Monteiro, Thiago Granja e Viviane Oliveira que me ajudaram com ótimos feedbacks e também a Beatriz Cunha que fez uma belíssima revisão do texto)&lt;/p&gt;

</description>
      <category>web</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Try something new this week</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Tue, 08 Sep 2020 11:32:47 +0000</pubDate>
      <link>https://dev.to/lucis/try-something-new-this-week-3ljd</link>
      <guid>https://dev.to/lucis/try-something-new-this-week-3ljd</guid>
      <description>&lt;p&gt;Did you ever wonder why there's so much tech for "doing the same thing"?&lt;/p&gt;

&lt;p&gt;It's probably not news to any of you, but &lt;strong&gt;there's always something new and different coming off&lt;/strong&gt; in Web Dev. This might generate a haunting feeling that you're outdated, but could it be why you succeed on your next project or job interview?&lt;/p&gt;

&lt;p&gt;I won't be long, as this should be a morning text that you finish while drinking a cup of coffee, but let's take a look at the last results of &lt;a href="https://stateofjs.com/"&gt;State of JS&lt;/a&gt; survey, especially about &lt;strong&gt;Javascript flavors&lt;/strong&gt;. For those who've never heard of it, these are &lt;strong&gt;languages that compile to Javascript&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C1Ksnvvf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/92467855-aa2b8500-f1a8-11ea-868a-a3c9cc0da580.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C1Ksnvvf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/92467855-aa2b8500-f1a8-11ea-868a-a3c9cc0da580.png" alt="Javascript Flavors"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://2019.stateofjs.com/javascript-flavors/#javascript_flavors_experience_ranking"&gt;Javascript Flavors&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most of you probably have never written a line of code on Elm or Clojurescript, but should you learn it? &lt;/p&gt;

&lt;p&gt;Probably everything that's on this radar, even not being so mainstream, has a &lt;em&gt;Reason&lt;/em&gt; to be there. I know for sure that most of these programmers love the language they work on.  Another thing is that &lt;strong&gt;it pays the bills.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In fact, it's common for big companies to choose one of these languages to &lt;strong&gt;hire good developers&lt;/strong&gt;, as it's &lt;a href="https://2019.stateofjs.com/javascript-flavors/#javascript_flavors_experience_heatmap"&gt;unusual for beginners to have experience in them.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h65x9IG5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/92468296-4fdef400-f1a9-11ea-9a2d-de5793c90227.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h65x9IG5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/92468296-4fdef400-f1a9-11ea-9a2d-de5793c90227.png" alt="Usage by salary range"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://2019.stateofjs.com/javascript-flavors/#javascript_flavors_salary_heatmap"&gt;Usage by salary range&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I want to do here is to pique your curiosity!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I want to propose the following: &lt;strong&gt;take a couple of hours this week and learn at least one of these new languages&lt;/strong&gt;. You don't need to build a pet project with it, just try them on their Playground to see how it feels. Before doing that, I ask you to watch these presentations about ReasonML, Elm and Clojurescript:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=5fG_lyNuEAw"&gt;React to the Future - ReasonML&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=gsffg5xxFQI"&gt;Clojurescript for Skeptics&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=rU-W6557Dos"&gt;Why Elm?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most importantly, try to &lt;strong&gt;grasp the design decisions behind them&lt;/strong&gt;. There's a high chance you'll watch one of these videos and it won't motivate you to switch your language of choice, but it's important that you understand why those things were crafted in the first place.&lt;/p&gt;

&lt;p&gt;In the end, the language you use or know won't matter all that much, but the experience you get creating stuff in a different environment is rewarding.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>elm</category>
      <category>reason</category>
      <category>clojurescript</category>
    </item>
    <item>
      <title>Como criar aplicações da noite pro dia</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Mon, 24 Aug 2020 00:30:40 +0000</pubDate>
      <link>https://dev.to/lucis/guia-hackathon-como-criar-aplicacoes-da-noite-pro-dia-58l7</link>
      <guid>https://dev.to/lucis/guia-hackathon-como-criar-aplicacoes-da-noite-pro-dia-58l7</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;TL;DR&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Neste post falo um pouco da minha evolução como desenvolvedor web, especialmente sobre o "primeiro release" (ou &lt;a href="https://en.wikipedia.org/wiki/Minimum_viable_product"&gt;MVP&lt;/a&gt;) de uma aplicação. Também comento sobre &lt;em&gt;no-code&lt;/em&gt; e escalabilidade, explicando algumas decisões que tomei nos meus últimos projetos pessoais.&lt;/p&gt;

&lt;p&gt;As tecnologias que recomendarei serão:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://codesandbox.io/"&gt;Codesandbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/"&gt;React.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tachyons.io/"&gt;Tachyons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://firebase.google.com"&gt;Firebase&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://react-jsonschema-form.readthedocs.io/en/latest/"&gt;React JSON Schema Form&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://netlify.com/"&gt;Netlify&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contexto
&lt;/h2&gt;

&lt;p&gt;Um dos maiores prazeres que tenho como programador é implementar soluções para problemas das comunidades que pertenço, e provavelmente você também se identifica com isso. Sabe quando você usa o seu conhecimento técnico para ajudar alguém da família com um problema? Essa sensação é um dos grandes motivadores para mim, sendo, até hoje, responsável por vários ensinamentos.&lt;/p&gt;

&lt;p&gt;Quando você é o dono de uma solução, logo começa a entender e sentir os problemas que a literatura de Engenharia de Software tanto pesquisa, e é assim que você, como profissional, realmente amadurece.&lt;/p&gt;

&lt;p&gt;Mas hoje eu quero falar sobre uma fase específica de um projeto: &lt;strong&gt;o começo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Um grande pensador, Frank Sherman Land, falava que &lt;em&gt;"O início é o que mais importa"&lt;/em&gt; se tratando dos anos de nossa vida. Mas, quando o assunto é &lt;em&gt;software&lt;/em&gt; (ou soluções em &lt;em&gt;software&lt;/em&gt;), é ainda mais fundamental o que você faz no começo e quão rápido você o faz.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://en.wikipedia.org/wiki/Time_to_market"&gt;Time to market&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Saindo da Engenharia e analisando esta fase no campo de Produto, o "começo" e todas decisões relacionadas são cruciais e determinantes para o futuro de uma ideia. Não pretendo discorrer muito sobre isso (principalmente por desconhecimento), mas, se você está interessado em se aprofundar nessa análise, os livros &lt;a href="http://theleanstartup.com/"&gt;The Lean Startup&lt;/a&gt; e &lt;a href="https://www.amazon.com.br/INSPIRED-Create-Products-Customers-English-ebook/dp/B077NRB36N/ref=asc_df_B077NRB36N/?tag=googleshopp00-20&amp;amp;linkCode=df0&amp;amp;hvadid=379787267723&amp;amp;hvpos=&amp;amp;hvnetw=g&amp;amp;hvrand=5797173220937812343&amp;amp;hvpone=&amp;amp;hvptwo=&amp;amp;hvqmt=&amp;amp;hvdev=c&amp;amp;hvdvcmdl=&amp;amp;hvlocint=&amp;amp;hvlocphy=1001655&amp;amp;hvtargid=pla-406131090225&amp;amp;psc=1"&gt;Inspired&lt;/a&gt; são boas referências.&lt;/p&gt;

&lt;p&gt;Para uma introdução mais branda, você pode ler alguns textos do Marty Cagan que estão no seu site &lt;em&gt;&lt;a href="https://svpg.com/"&gt;Silicon Valley Product Group&lt;/a&gt;,&lt;/em&gt; especialmente &lt;a href="https://svpg.com/product-fail/"&gt;Product Fail&lt;/a&gt; e &lt;a href="https://svpg.com/four-big-risks/"&gt;The Four Big Risks.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  O primeiríssimo passo
&lt;/h2&gt;

&lt;p&gt;Vamos lá: você identificou um problema que quer resolver e, no mesmo instante, já visualiza as telas da sua solução. Provavelmente, já começa a rabiscar os fluxos da aplicação. No mesmo momento que você sente aquele &lt;em&gt;boost&lt;/em&gt; de motivação, também já começa a modelar arquiteturalmente o seu &lt;em&gt;software&lt;/em&gt;. Aqui, é crucial que você &lt;strong&gt;não se perca!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Uma coisa que eu sempre senti medo nessa fase inicial foi de &lt;strong&gt;errar na mão&lt;/strong&gt;, querendo fazer tudo da melhor maneira possível: modelando o sistema &lt;strong&gt;como se ele já começasse com milhões de usuários&lt;/strong&gt;; ou então tendo usuários com diversas necessidades.&lt;/p&gt;

&lt;p&gt;O conselho é: pense bem qual a &lt;strong&gt;funcionalidade-chave&lt;/strong&gt; da sua solução e foque nela.&lt;/p&gt;

&lt;p&gt;Assim, uma dica muito importante é evitar &lt;a href="https://stackify.com/premature-optimization-evil/"&gt;otimizações prematuras&lt;/a&gt;. Existem &lt;a href="https://davnicwil.com/if-its-a-nice-problem-to-have-dont-solve-it-now/"&gt;vários problemas que são bons para ter&lt;/a&gt; e, na minha opinião, tentar resolver tudo no começo pode potencialmente lhe desmotivar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Caixa de ferramentas
&lt;/h2&gt;

&lt;p&gt;Ciente sobre o que falei acima &lt;em&gt;(e também acessado os links das entrelinhas)&lt;/em&gt;, falemos sobre como por as mãos na massa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; leia toda frase aqui com um "&lt;em&gt;na minha humilde e sincera opinião"&lt;/em&gt; logo antes. Caso discorde de alguma coisa, fique a vontade para comentar no post. Estou cada dia errando um pouco mais, e ainda bem :)&lt;/p&gt;

&lt;h3&gt;
  
  
  CodeSandbox
&lt;/h3&gt;

&lt;p&gt;A palavra-chave para desenvolvimento de soluções "do zero" é &lt;strong&gt;iteração&lt;/strong&gt;. Dificilmente você será capaz de programar 20 minutos sem parar e só depois ver como ficou. Escolher uma ferramenta que lhe ajude nesse processo é essencial. &lt;/p&gt;

&lt;p&gt;Ao longo dos anos, já experimentei várias formas diferentes de começar minhas soluções, e hoje não tenho dúvida: o melhor lugar para começar a fazer algo é o &lt;strong&gt;CodeSandbox&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0knKeEgG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://codesandbox.io/static/hero-ide-home-4ca67e8548248798ba899468ba3fa64e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0knKeEgG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://codesandbox.io/static/hero-ide-home-4ca67e8548248798ba899468ba3fa64e.png" alt="Codesandbox"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pra quem não conhece, o &lt;a href="https://codesandbox.io/"&gt;CodeSandbox&lt;/a&gt; é um ambiente de desenvolvimento que &lt;strong&gt;roda no navegador&lt;/strong&gt; e possibilita que você programe sua solução, veja ela rodando lado-a-lado, compartilhe facilmente com outras pessoas e &lt;strong&gt;itere muito rápido&lt;/strong&gt;, ainda mais quando você usa  uma tecnologia com &lt;em&gt;hot-reload&lt;/em&gt;. Eles suportam a maioria das tecnologias atuais de &lt;em&gt;frontend&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Olha algumas coisas que dá pra fazer no CSB:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sincronização com o Github (você pode criar novas branchs por lá, e o CSB cria Pull Requests automaticamente).&lt;/li&gt;
&lt;li&gt;Usar suas configurações do VSCode &lt;em&gt;(inclusive o VSCodeVim).&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Projetos backend (como API's REST ou GraphQL)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para começar a usar o Codesandbox &lt;em&gt;(com React)&lt;/em&gt;, basta digitar na sua barra de endereço &lt;strong&gt;&lt;a href="//react.new"&gt;react.new&lt;/a&gt;&lt;/strong&gt; e é isso!&lt;/p&gt;

&lt;h3&gt;
  
  
  React.js
&lt;/h3&gt;

&lt;p&gt;É difícil que você não tenha ouvido falar de React, mas vale ressaltar que é uma das tecnologias para construir interfaces web &lt;a href="https://stateofjs.com/"&gt;mais usadas&lt;/a&gt; e com mais demanda no mercado. &lt;strong&gt;React é uma escolha fácil&lt;/strong&gt;, e ao menos que você queira muito experimentar algo diferente, é o que eu lhe indico.&lt;/p&gt;

&lt;p&gt;Mesmo após escolher o React, existem algumas opções sobre como usá-lo, e irei comentar sobre minhas recomendações.&lt;/p&gt;

&lt;h4&gt;
  
  
  Framework: &lt;a href="%5Bhttps://www.gatsbyjs.org/%5D(https://www.gatsbyjs.org/)"&gt;Gatsby.js&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;É muito rápido começar um projeto com o Gatsby, e tem sido uma tecnologia muito comentada nos últimos meses. Aqui ele funciona como uma alternativa ao famoso &lt;a href="https://github.com/facebook/create-react-app"&gt;Create React App&lt;/a&gt;, e a vantagem que você tem é que, caso parte da sua solução inclua páginas estáticas, o Gatsby consegue ser bem mais rápido (assunto pra outro post).&lt;/p&gt;

&lt;h4&gt;
  
  
  UI Framework: &lt;a href="https://ant.design/https://material-ui.com/"&gt;Material UI&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Um UI framework vai ter oferecer um &lt;strong&gt;conjunto de componentes customizáveis&lt;/strong&gt; e acelerar bastante o desenvolvimento do seu produto. Coisas como &lt;em&gt;datepickers, modais e drag-n-drop&lt;/em&gt; são fáceis de usar e têm uma UI consistente. O MaterialUI segue os princípios do &lt;a href="https://material.io/design/"&gt;Material Design&lt;/a&gt; da Google, além de permitir &lt;a href="https://material-ui.com/styles/basics/#getting-started"&gt;várias customizações&lt;/a&gt; para deixar sua aplicação com sua cara (o que eu também recomendo).&lt;/p&gt;

&lt;h4&gt;
  
  
  Linguagem:  &lt;a href="%5Bhttps://www.typescriptlang.org/%5D(https://www.typescriptlang.org/)"&gt;Typescript&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Por mim, não tem discussão: não há muitos motivos para começar um projeto em Javascript puro hoje em dia. &lt;em&gt;Typescript&lt;/em&gt; consegue lhe acelerar como desenvolvedor de várias maneiras possíveis, e a maioria das tecnologias que comento aqui funcionam perfeitamente utilizando a versão tipada do Javascript.&lt;/p&gt;

&lt;p&gt;Eu já defendi que &lt;em&gt;"Typescript é só pra projetos grandes"&lt;/em&gt;, depois passei pro time de &lt;em&gt;"comece com Javascript e no futuro migre"&lt;/em&gt;, e hoje, com a adoção por vários &lt;em&gt;frameworks&lt;/em&gt; e ferramentas, não consigo mais usar um dado sem o editor jogar na minha cara o seu tipo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tachyons
&lt;/h3&gt;

&lt;p&gt;Já faz muito tempo que eu acompanho o mundo do desenvolvimento Web, e uma das coisas que parece que ninguém achou a resposta certa ainda é: &lt;strong&gt;como usar CSS&lt;/strong&gt;. Já sabemos há anos que é a única forma de estilizar os elementos de uma página na internet, mas volta e meia alguém fala que estamos usando errado até então.&lt;/p&gt;

&lt;p&gt;Dentre essas soluções, uma que me conquistou foi o &lt;a href="https://tachyons.io/"&gt;Tachyons&lt;/a&gt;, e vou explicar como ele funciona. Basicamente, o Tachyons é um &lt;strong&gt;conjunto de definições de classes CSS&lt;/strong&gt;, porém definições &lt;strong&gt;atômicas&lt;/strong&gt; e baseadas em&lt;br&gt;
&lt;a href="https://css-tricks.com/what-are-design-tokens/"&gt;Design Tokens&lt;/a&gt;. Ao invés de classes como &lt;code&gt;.card&lt;/code&gt; ou &lt;code&gt;.box&lt;/code&gt;, temos &lt;code&gt;b&lt;/code&gt; para &lt;code&gt;{ font-weight: bold }&lt;/code&gt; ou &lt;code&gt;flex-column&lt;/code&gt; para &lt;code&gt;{ flex-direction: column }&lt;/code&gt;, e fazemos a estilização dos componentes &lt;strong&gt;usando várias dessas definições&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Uma das maiores vantagens do Tachyons é que &lt;strong&gt;é muito fácil testar as variações direto no navegador&lt;/strong&gt;, coisa que sou acostumado a fazer. Com o &lt;em&gt;autocomplete&lt;/em&gt; de classes CSS do Dev Tools do Chrome, é uma experiência rápida e eficaz de criar seus layouts. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kmBPljM4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/90984179-c3e29080-e549-11ea-815a-5827a717b7cb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kmBPljM4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/90984179-c3e29080-e549-11ea-815a-5827a717b7cb.png" alt="Tachyons"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Firebase
&lt;/h3&gt;

&lt;p&gt;De longe, esta é a tecnologia que eu mais sou apaixonado! O &lt;a href="https://firebase.google.com/"&gt;Firebase&lt;/a&gt; é um serviço &lt;em&gt;serverless&lt;/em&gt; da Google para desenvolver aplicações, oferecendo banco de dados, autenticação e muito mais. Além disso, o &lt;strong&gt;plano gratuito&lt;/strong&gt; do Firebase dá acesso a vários recursos, talvez suficientes para uma aplicação "média" por muito tempo. Você pode verificar &lt;a href="https://firebase.google.com/pricing"&gt;aqui&lt;/a&gt; a política de preço deles e também entender como funciona a cobrança caso os limites básicos sejam ultrapassados.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CpGL98xr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/90992636-6ff69c80-e587-11ea-9e48-0b8b31beaa07.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CpGL98xr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/90992636-6ff69c80-e587-11ea-9e48-0b8b31beaa07.png" alt="Firebase"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Os projetos mais legais que já fiz usaram o Firebase, e é impressionante como sempre há algo novo no produto deles. A principal funcionalidade que evidencio aqui é o &lt;strong&gt;Firestore&lt;/strong&gt;, solução de banco de dados &lt;em&gt;NoSQL as a service&lt;/em&gt; bastante completa, oferecendo transmissão de dados em tempo real. Além do Firestore, existem vários outros serviços que podem ser muito úteis para MVPs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authentication:&lt;/strong&gt; serviço de autenticação que permite oferecer login por Google, Facebook ou até número de celular na sua aplicação.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Functions&lt;/strong&gt;: serviço que roda na infa da Google Cloud e permite que você &lt;strong&gt;rode código backend&lt;/strong&gt;, permitindo reagir a mudanças no banco de dados ou criar uma API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Messaging&lt;/strong&gt;: serviço de mensageria com envio ilimitado de notificações para usuários.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: serviço de armazenamento que permite até 5GB de arquivos estáticos no plano gratuito. Ótimo para apps que precisam de upload de imagens.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  React JSON Schema Form
&lt;/h3&gt;

&lt;p&gt;Esse ano foi a primeira vez que usei essa solução e, por mais que pareça algo "que não pertence", é uma peça fundamental da minha caixa de ferramentas. O &lt;a href="https://react-jsonschema-form.readthedocs.io/en/latest/"&gt;React JSON Schema Form&lt;/a&gt; é uma biblioteca capaz de &lt;strong&gt;gerar formulários completos&lt;/strong&gt; a partir de um &lt;a href="https://json-schema.org/"&gt;JSON Schema&lt;/a&gt;, que é uma espécie de "linguagem" que te permite definir um modelo de dado. &lt;/p&gt;

&lt;p&gt;Todo desenvolvedor sabe &lt;strong&gt;como pode ser complicado&lt;/strong&gt; criar e gerenciar formulários, e essa &lt;em&gt;lib&lt;/em&gt; permite que você automatize esse trabalho &lt;strong&gt;sem abrir mão do controle&lt;/strong&gt;. Caso você queira adicionar uma validação específica para um campo, você pode, e esse foi exatamente o que precisei. Na minha opinião, o React JSON Schema Form está na linha tênue entre as tecnologias &lt;em&gt;"no-code"&lt;/em&gt;, que são rápidas, porém te impedem de tomar o controle quando você precisa de algo específico, e as formas "tradicionais" de criar formulários que requerem conectar vários objetos e gerenciar estado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kxj2PLQ4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/90990903-6bc48200-e57b-11ea-98b4-7677d5cc4cee.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kxj2PLQ4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/18706156/90990903-6bc48200-e57b-11ea-98b4-7677d5cc4cee.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eu escolhi essa biblioteca porque foi a maneira mais rápida de criar um formulário de cadastro com &lt;strong&gt;vários campos e validações importantes.&lt;/strong&gt; Com poucas linhas, consigo um formulário da criação e edição que já me entrega o dado do jeito que eu quero.&lt;/p&gt;

&lt;p&gt;Eventualmente, quando a aplicação vai crescendo e preciso melhor a experiência do usuário, vou substituindo os formulários por componentes próprios para cada seção (talvez usando o seu UI Framework).&lt;/p&gt;

&lt;p&gt;Você pode verificar o que o RJSF é capaz de fazer no &lt;a href="https://rjsf-team.github.io/react-jsonschema-form/"&gt;playground da ferramenta&lt;/a&gt;, que é bastante divertido! Outra possibilidade que ele oferece é &lt;a href="https://stackoverflow.com/questions/49037130/how-to-use-react-jsonschema-form-with-material-ui"&gt;usar o estilo do UI Framework&lt;/a&gt;, e também, através do &lt;code&gt;uiSchema&lt;/code&gt;, configurar como alguns campos automáticos são renderizados.&lt;/p&gt;

&lt;h3&gt;
  
  
  Netlify
&lt;/h3&gt;

&lt;p&gt;Agora que você já montou sua aplicação e quer logo compartilhar com as pessoas, é necessário &lt;strong&gt;hospedá-la&lt;/strong&gt;. Todos os serviços que mencionei têm a vantagem de &lt;strong&gt;não precisarem de servidor&lt;/strong&gt;, o que torna o &lt;em&gt;deploy&lt;/em&gt; fácil e muito barato; afinal, você só precisa servir arquivos HTML, JS e CSS. É exatamente o &lt;a href="https://www.netlify.com/"&gt;Netlify&lt;/a&gt; que pode te ajudar com isso, integrando-se com o seu repositório no Github e, automaticamente, &lt;strong&gt;colocando sua aplicação online&lt;/strong&gt;. O serviço configura automaticamente o certificado HTTPS do seu site e também serve os arquivos em uma CDN.&lt;/p&gt;

&lt;p&gt;Na &lt;a href="https://www.netlify.com/"&gt;página inicial do Netlify&lt;/a&gt; é fácil entender como usá-lo, e também pode checar outros serviços oferecidos (como o Netlify Forms para guardar dados de formulário). Caso você queira &lt;strong&gt;usar o seu próprio dominio.com.br&lt;/strong&gt;, também é fácil de configurar!&lt;/p&gt;

&lt;h2&gt;
  
  
  É isso
&lt;/h2&gt;

&lt;p&gt;E foi mais ou menos com essa &lt;em&gt;stack&lt;/em&gt; que fiz em poucas horas a primeira versão do &lt;a href="https://github.com/alt-zap/alt-zap"&gt;Alt&lt;/a&gt;, um dos meus últimos projetos de &lt;em&gt;hobbie&lt;/em&gt;. Inicialmente, criei para resolver um problema específico de alguns amigos, mas desde então tenho desenvolvido uma solução completa para ajudar pequenos negócios venderem online. Inclusive, chega lá se quiser contribuir :)&lt;/p&gt;

&lt;p&gt;Um outro serviço bem legal que usei no Alt e vale mencionar aqui, foi o &lt;a href="https://developer.here.com/"&gt;Here&lt;/a&gt;. Ele é uma solução para desenvolvedores lidarem com mapas e localização, também com um plano gratuito bastante generoso. Caso você queira fazer um novo Uber, o Here é uma ótima opção. &lt;/p&gt;

&lt;p&gt;Então é isso, fiquem a vontade para comentar e talvez adicionar aquela ferramenta que você acha que se encaixa aqui!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>firebase</category>
      <category>hackathon</category>
      <category>iniciante</category>
    </item>
    <item>
      <title>Como criar um blog com Gatsby.js e Prismic</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Fri, 17 Jul 2020 02:46:47 +0000</pubDate>
      <link>https://dev.to/lucis/como-criar-um-blog-com-gatsby-js-e-prismic-4552</link>
      <guid>https://dev.to/lucis/como-criar-um-blog-com-gatsby-js-e-prismic-4552</guid>
      <description>&lt;p&gt;[PT-BR]&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Dessa vez não é um post, foi mal para os &lt;em&gt;read &amp;gt; watch&lt;/em&gt;, mas se você quiser dar uma olhada no que fiz no vídeo, o repositório tá aqui: &lt;a href="https://github.com/lucis/blog-do-lucis"&gt;https://github.com/lucis/blog-do-lucis&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Esse foi o meu primeiro vídeo em um longo tempo, e é sem edição, com bugs ao vivo, e contando um pouco da história do Gatsby.js. Espero que vocês gostem.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/qtsvV4H98mg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Caso você queira construir um blog com o Prismic, e já tenha entendido como o Gatsby.js funciona, recomendo &lt;strong&gt;usar o Gatsby Prismic Starter&lt;/strong&gt; (&lt;a href="https://www.gatsbyjs.org/starters/LekoArts/gatsby-starter-prismic/"&gt;https://www.gatsbyjs.org/starters/LekoArts/gatsby-starter-prismic/&lt;/a&gt;) que já vai vir com toda estrutura pronta para você.&lt;/li&gt;
&lt;li&gt;Há um plugin mais moderno para integrar com o Prismic, o &lt;code&gt;gatsby-source-prismic-graphql&lt;/code&gt; (&lt;a href="https://github.com/birkir/gatsby-source-prismic-graphql"&gt;https://github.com/birkir/gatsby-source-prismic-graphql&lt;/a&gt;), mas o meu intuito no vídeo foi mais explicar um fluxo básico do Gatsby, e o plugin que usei era o mais simples&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Fontes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.gatsbyjs.org/docs/sourcing-from-prismic/"&gt;https://www.gatsbyjs.org/docs/sourcing-from-prismic/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>video</category>
      <category>gatsby</category>
      <category>prismic</category>
      <category>jamstack</category>
    </item>
    <item>
      <title>Tech Writing Cheat Sheet</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Sun, 21 Jun 2020 17:23:22 +0000</pubDate>
      <link>https://dev.to/lucis/tech-writing-cheat-sheet-3kho</link>
      <guid>https://dev.to/lucis/tech-writing-cheat-sheet-3kho</guid>
      <description>&lt;p&gt;This is a curated list of summaries from Google's &lt;a href="https://developers.google.com/tech-writing"&gt;Tech Writing courses&lt;/a&gt; that I constantly consult when reviewing documents &lt;del&gt;since I sometimes forget things&lt;/del&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  General/Introduction
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Determine your &lt;strong&gt;audience&lt;/strong&gt; and &lt;strong&gt;what they will learn.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fit documentation to your audience.&lt;/li&gt;
&lt;li&gt;Introduce a document's scope and any &lt;strong&gt;prerequisites.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Outline a document. Alternatively, write free form and then organize.&lt;/li&gt;
&lt;li&gt;Make a practice of &lt;strong&gt;continuous revision.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Establish your document's &lt;strong&gt;key points&lt;/strong&gt; at the start of the document.&lt;/li&gt;
&lt;li&gt;Read documents out loud (to yourself) when reviewing.&lt;/li&gt;
&lt;li&gt;Find a good &lt;strong&gt;peer editor.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Return to documents well after you've written the draft.&lt;/li&gt;
&lt;li&gt;Compare and contrast with something that readers are already familiar with.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Content
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Prefer task-based headings.&lt;/li&gt;
&lt;li&gt;Use terms &lt;strong&gt;consistently.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;If you change the name of a variable midway through a method, your code won’t compile. Similarly, if you rename a term in the middle of a document, your ideas won’t compile (in your users’ heads).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Avoid ambiguous pronouns.&lt;/li&gt;
&lt;li&gt;Prefer active voice to passive voice.

&lt;ul&gt;
&lt;li&gt;"Python interprets code" instead of "Code is interpreted by Python". &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Pick specific verbs over vague ones.&lt;/li&gt;
&lt;li&gt;Focus each sentence on a &lt;strong&gt;single idea.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Convert some long sentences to lists.&lt;/li&gt;
&lt;li&gt;Eliminate unneeded words.

&lt;ul&gt;
&lt;li&gt;Like &lt;code&gt;simply&lt;/code&gt; or &lt;code&gt;just&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Use a numbered list when ordering is important and a bulleted list when ordering is irrelevant.&lt;/li&gt;
&lt;li&gt;Keep list items &lt;em&gt;parallel.&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt;All items in a parallel list look like they "belong" together. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Start numbered list items with imperative words.

&lt;ul&gt;
&lt;li&gt;"Install that".&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Introduce&lt;/strong&gt; lists and tables appropriately.&lt;/li&gt;
&lt;li&gt;Create great opening sentences that establish a paragraph's central point.&lt;/li&gt;
&lt;li&gt;Focus each paragraph on a &lt;strong&gt;single topic.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Code Examples
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In tutorials, reinforce concepts with examples.&lt;/li&gt;
&lt;li&gt;Create concise sample code that is &lt;strong&gt;easy to understand.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Avoid writing comments about obvious code.&lt;/li&gt;
&lt;li&gt;Keep code comments short, but prefer clarity over brevity.&lt;/li&gt;
&lt;li&gt;Provide not only examples but also anti-examples.&lt;/li&gt;
&lt;li&gt;Provide code samples that demonstrate a &lt;strong&gt;range of complexity.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Simple and complex examples.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Drawings
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Consider writing the caption before creating the illustration.&lt;/li&gt;
&lt;li&gt;Focus the reader's attention on the &lt;strong&gt;relevant part&lt;/strong&gt; of a picture or diagram by describing the takeaway in the caption or by adding a visual cue to the picture.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you would like to learn more about these points, check out &lt;a href="https://developers.google.com/tech-writing"&gt;the courses&lt;/a&gt;. There are two and they're very good!&lt;/p&gt;

</description>
      <category>writing</category>
      <category>documentation</category>
      <category>cheatsheet</category>
    </item>
    <item>
      <title>It's okay to still write REST APIs</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Tue, 19 May 2020 00:01:38 +0000</pubDate>
      <link>https://dev.to/lucis/it-s-okay-to-still-write-rest-apis-3704</link>
      <guid>https://dev.to/lucis/it-s-okay-to-still-write-rest-apis-3704</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclaimer:&lt;/em&gt; This is pretty much a message to me. &lt;/p&gt;

&lt;p&gt;The forever-changing Web world impacts directly how we build things, usually in a good way. No more advanced Apache setup, or grasping SQL to be able to store data. Today, almost everything is possible with a simple &lt;code&gt;cli init&lt;/code&gt; and signing in with a SaaS.&lt;/p&gt;

&lt;p&gt;Personally, &lt;em&gt;I love that.&lt;/em&gt; I always get excited saying to someone &lt;em&gt;"You can create that with a PWA and Firebase"&lt;/em&gt;, and, in fact, we can. Trade-offs are easier to decide, and I almost can't believe how much is possible with free tier today...&lt;/p&gt;

&lt;p&gt;As nice as all of this sounds, in the past year it has put me in tough spots. &lt;strong&gt;It's hard to learn something new when it's so easy/good to do it like everyone is doing&lt;/strong&gt;. And that's not about comfort, trust me on that! The &lt;em&gt;React + Typescript + Firebase + Node.js + GraphQL&lt;/em&gt; combo, for me, has been so great that I always get second thoughts when trying to learn a new technology.&lt;/p&gt;

&lt;p&gt;It always goes like this: &lt;em&gt;"I really want to learn this new language. Let's find out how to create a GraphQL service with it"&lt;/em&gt;. After some googling, I realize that it's hard to accomplish that "simple thing". Sometimes, not even "hard", but way less easy than using Node. Same for frontend: &lt;em&gt;React Hooks, Apollo, and async/await&lt;/em&gt; have spoiled me into thinking it's not worth learning something like ReasonML because my Typescript environment is so safe and cool that has features not yet implemented in other languages.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Why would I still create a REST API?"&lt;/em&gt;, it's what I ask myself after searching for the standards for a new language, like Clojure or F#, and for a long time, it has stopped me. But really, why? Just because it's not what Facebook is using?&lt;/p&gt;

&lt;p&gt;Learning new things will never be easy, not always because of what you don't know, but what you already do.&lt;/p&gt;

&lt;p&gt;That pet project you have in mind, create it with a toolset you've only heard of and was interested! The extra lines you may have to write might teach you what the easy way has always hidden.&lt;/p&gt;

</description>
      <category>projects</category>
      <category>languages</category>
      <category>clojure</category>
      <category>graphql</category>
    </item>
    <item>
      <title>Displaying current VTEX account and workspace on Mac's Menu Bar with link to Store</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Sun, 05 Apr 2020 22:17:16 +0000</pubDate>
      <link>https://dev.to/lucis/showing-current-vtex-account-and-workspace-on-mac-s-menu-bar-469k</link>
      <guid>https://dev.to/lucis/showing-current-vtex-account-and-workspace-on-mac-s-menu-bar-469k</guid>
      <description>&lt;h2&gt;
  
  
  Audience
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mac users who develop on VTEX IO&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Permission to install programs on your Mac&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;vtex&lt;/code&gt; official CLI installed&lt;/li&gt;
&lt;li&gt;Basic command-line knowledge &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When developing for VTEX IO, working across different accounts and workspaces can become confusing. Before committing actions like &lt;code&gt;vtex install&lt;/code&gt; and &lt;code&gt;vtex link&lt;/code&gt;, I'm always interested in checking &lt;strong&gt;if I'm logged in the right account and workspace&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you use &lt;a href="https://github.com/romkatv/powerlevel10k"&gt;ZSH + Powerlevel&lt;/a&gt;, I've also created a &lt;a href="https://gist.github.com/lucis/179b9c49cda4001fa5fb6339c728030d"&gt;simple customization&lt;/a&gt; to show such info on the shell&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To help you &lt;em&gt;(and myself)&lt;/em&gt; with that, I'm gonna show how to display that information on &lt;strong&gt;Mac's Menu Bar&lt;/strong&gt;, so it'll be visible for you all the time!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The &lt;strong&gt;Menu Bar&lt;/strong&gt; is the fixed top bar on your computer, which shows icons, menus and other information.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's go! For this to work you need to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install &lt;a href="https://getbitbar.com/"&gt;BitBar&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Select a folder of your preference to be the &lt;strong&gt;plugins' folder&lt;/strong&gt; (you're prompted when installing).&lt;/li&gt;
&lt;li&gt;Create the file &lt;code&gt;vtex.10s.sh&lt;/code&gt; on the folder you've selected on the last step.&lt;/li&gt;
&lt;li&gt;Paste and save the following content to &lt;code&gt;vtex.10s.sh&lt;/code&gt; file:
    &lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Inside the plugins folder on the terminal, run &lt;code&gt;chmod +x vtex.10s.sh&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click on &lt;code&gt;BitBar&lt;/code&gt; menu item on the Top Bar and click "Refresh"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;That's it!&lt;/strong&gt; It should work just fine ✨&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_h-59XXM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/NXrQ9cB.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_h-59XXM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/NXrQ9cB.png" alt="VTEX account and workspace on Mac Top Bar"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you want to display it colored like I've done, &lt;a href="https://gist.github.com/lucis/8e0a08c643e87030bbb070857084a413"&gt;try this instead&lt;/a&gt;. I've removed it on the default snippet because &lt;strong&gt;some shells don't support it!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Extra:&lt;/strong&gt; If you click on it, &lt;strong&gt;it opens that workspace's store&lt;/strong&gt; on &lt;em&gt;myvtex.com&lt;/em&gt;!&lt;/p&gt;

&lt;p&gt;Note that you can do &lt;strong&gt;a lot more&lt;/strong&gt; with &lt;strong&gt;BitBar&lt;/strong&gt;. If you're interested in finding out how to create custom plugins, go to &lt;a href="https://github.com/matryer/bitbar"&gt;BitBar Github Page&lt;/a&gt;. On &lt;a href="https://getbitbar.com/"&gt;it's home page&lt;/a&gt;, there's already a &lt;strong&gt;ton of free plugins!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Some considerations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The script reruns &lt;strong&gt;every 10 seconds&lt;/strong&gt;, so it'll update after &lt;code&gt;vtex switch&lt;/code&gt;. If you want to configure this time, click &lt;a href="https://github.com/matryer/bitbar#configure-the-refresh-time"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I've edited the &lt;a href="https://en.wikipedia.org/wiki/Shebang_(Unix)"&gt;&lt;em&gt;Shebang&lt;/em&gt;&lt;/a&gt; to &lt;code&gt;#!/bin/bash&lt;/code&gt; because most people use &lt;em&gt;bash&lt;/em&gt;. If you use another shell (like &lt;em&gt;zsh&lt;/em&gt;), update it accordingly.&lt;/li&gt;
&lt;li&gt;I've added &lt;strong&gt;some color&lt;/strong&gt; using ANSI codes. Click &lt;a href="https://misc.flogisoft.com/bash/tip_colors_and_formatting#colors"&gt;here&lt;/a&gt; to see other options.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vtex</category>
      <category>mac</category>
      <category>bitbar</category>
    </item>
    <item>
      <title>Do people like Javascript?</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Thu, 02 Apr 2020 01:37:53 +0000</pubDate>
      <link>https://dev.to/lucis/do-people-like-javascript-118a</link>
      <guid>https://dev.to/lucis/do-people-like-javascript-118a</guid>
      <description>&lt;h1&gt;
  
  
  Do people like Javascript?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; I don't know... Some of them.&lt;/p&gt;

&lt;p&gt;In some Facebook groups about programming that I'm part of &lt;em&gt;(yeah, I’m still on that)&lt;/em&gt;, beginners post a lot asking for guidance of where to start or &lt;em&gt;“What’s better, language X or Y?“&lt;/em&gt;. After a couple of years of trying to help, I've noticed one thing about others' responses that motivated me to write this: &lt;strong&gt;people frequently mock Javascript&lt;/strong&gt;, saying it's &lt;em&gt;bad.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It’s no secret that  &lt;strong&gt;Javascript is, in fact, very popular&lt;/strong&gt;. It’s popular on Github, it’s popular on universities and it’s been a couple of months since I’ve seen a job offer that didn’t require Javascript in some way. So, why all that hate I see?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://postimg.cc/Z9F4cbLc"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dT_hiFkN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.postimg.cc/43jyXn7r/image.png" alt="image.png"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Screenshot from Wat presentation&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Always backed up with some code executions like the ones from &lt;a href="https://www.destroyallsoftware.com/talks/wat"&gt;Wat&lt;/a&gt;, those blame JS for its weak typing. Sometimes also for &lt;a href="https://medium.com/better-programming/why-is-0-1-0-2-not-equal-to-0-3-in-most-programming-languages-99432310d476"&gt;IEEE754&lt;/a&gt;. I assume that this could be challenging for who's starting to learn, but, come on: &lt;em&gt;hardly.&lt;/em&gt; Especially on &lt;strong&gt;the age of Typescript&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What I see is some experienced but conservative programmers, who might've spent the last 10 years of their lives coding on a platform that doesn't change, and feel like in hell with the crazy forever-changing ecosystem. Some of them are truly bothered by the unstable state of technologies, and some of them are just afraid of being left out of the buzz. &lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;I like Javascript and its ecosystem I lot&lt;/strong&gt;. I enjoy seeing different people trying to solve problems in so many different ways that I can't keep up with them... And, lastly, &lt;strong&gt;I love how easy it is to create things today&lt;/strong&gt;. Tools like &lt;a href="http://firebase.google.com/"&gt;Firebase&lt;/a&gt;, &lt;a href="http://reactjs.org/"&gt;React&lt;/a&gt; and &lt;a href="https://www.gatsbyjs.org/"&gt;Gatsby.js&lt;/a&gt; create an amazing empowerment experience for those who aren't software engineers but can create maybe not &lt;em&gt;enterprisey&lt;/em&gt; apps but &lt;strong&gt;useful apps.&lt;/strong&gt; Help their communities, their parent's store and so on. &lt;/p&gt;

&lt;p&gt;I don't know about you, but, from the products I've developed until now, the ones I'm most proud of &lt;strong&gt;are not those with great technical challenges.&lt;/strong&gt; In fact, it's the CRUD PWA for handling payments on a closed event of a group of mine; the simple report generator used on my dad's shop; a simple browser extensions for my college's system.&lt;/p&gt;

&lt;p&gt;The Javascript community has &lt;strong&gt;almost every library possible on the world&lt;/strong&gt; and the Web is each day more integrated with native systems, &lt;a href="https://whatwebcando.today/"&gt;it's truly amazing what the web can do today!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Amazing design and modern programming languages are great, I know, but, IMO, the majority of people don't care all that much about it. It's only about how fast you can deliver useful things.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
      <category>developers</category>
      <category>community</category>
    </item>
    <item>
      <title>Delete all node_modules from your machine and save space</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Wed, 05 Feb 2020 23:23:36 +0000</pubDate>
      <link>https://dev.to/lucis/delete-all-nodemodules-from-your-machine-and-save-space-i3h</link>
      <guid>https://dev.to/lucis/delete-all-nodemodules-from-your-machine-and-save-space-i3h</guid>
      <description>&lt;p&gt;Couple of months ago I has having disk space problems on my development machine and started to look for unused folders that were taking some space. Looking for solutions on the internet, I've found that &lt;strong&gt;local &lt;code&gt;node_modules&lt;/code&gt;s take a lot of space&lt;/strong&gt; when you have a couple of Javascript projects. Then, I started looking for solutions on how to smartly delete these folders, since I can rebuild them with &lt;code&gt;yarn&lt;/code&gt; if I need.&lt;/p&gt;

&lt;p&gt;Just FYI, a raw &lt;code&gt;npx create-react-app&lt;/code&gt; folder has a &lt;strong&gt;227mb &lt;code&gt;node_modules&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, let's go to the recipe. I present you two ways of deleting these folders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;npx npkill&lt;/code&gt; will spawn an &lt;strong&gt;interactive interface&lt;/strong&gt; for you to select the &lt;code&gt;node_modules&lt;/code&gt; you want to delete.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +&lt;/code&gt; will find and delete &lt;strong&gt;every &lt;code&gt;node_modules&lt;/code&gt; folder under the current directory&lt;/strong&gt;, so beware where you're running it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want more options, check &lt;a href="https://stackoverflow.com/questions/42950501/delete-node-modules-folder-recursively-from-a-specified-path-using-command-line"&gt;this SOF question&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>npm</category>
      <category>nodemodules</category>
      <category>save</category>
      <category>space</category>
    </item>
    <item>
      <title>How to save disk space when using PM2</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Wed, 05 Feb 2020 00:37:28 +0000</pubDate>
      <link>https://dev.to/lucis/how-to-save-disk-space-when-using-pm2-3736</link>
      <guid>https://dev.to/lucis/how-to-save-disk-space-when-using-pm2-3736</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Run &lt;code&gt;pm2 install pm2-logrotate&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;PM2 is a process manager for Node.js, usually used in production&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yesterday I've ran into a problem on one of the production machines that I manage. Suddenly, the database stopped working and soon I found out that &lt;strong&gt;I was almost out of disk space.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4j1v2un2bhbwiwqlvhgk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4j1v2un2bhbwiwqlvhgk.png" alt="Running df-h on a Linux machine"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At first sight, I've checked my database records: all ok, as big as I was expecting.&lt;/p&gt;

&lt;p&gt;Then, I had to start &lt;em&gt;&lt;code&gt;du -h&lt;/code&gt;ing&lt;/em&gt; my largest directories to check what was taking so much space from my disk. I found the guilty one to be the &lt;strong&gt;&lt;code&gt;~/.pm2/logs&lt;/code&gt; folder&lt;/strong&gt;, and instantly realized that my app's logs where just stacking up there. I solved temporarily with &lt;code&gt;pm2 flush&lt;/code&gt;, but had to look for a way for that not to happen again.&lt;/p&gt;

&lt;p&gt;And, then, I've found this guy: &lt;a href="https://github.com/keymetrics/pm2-logrotate" rel="noopener noreferrer"&gt;https://github.com/keymetrics/pm2-logrotate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's as easy as running &lt;code&gt;pm2 install pm2-logrotate&lt;/code&gt; on your machine. Done! PM2 will start to &lt;strong&gt;limit its logs size&lt;/strong&gt;, by default to &lt;strong&gt;10 megabytes&lt;/strong&gt;, but it's easily configurable with something like &lt;code&gt;pm2 set pm2-logrotate:max_size 1K&lt;/code&gt;. You can read more about the option &lt;a href="https://github.com/keymetrics/pm2-logrotate" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>node</category>
      <category>pm2</category>
      <category>logs</category>
      <category>space</category>
    </item>
    <item>
      <title>Please don't make a mobile app (unless if you have to)</title>
      <dc:creator>Lucis</dc:creator>
      <pubDate>Sun, 02 Feb 2020 04:01:34 +0000</pubDate>
      <link>https://dev.to/lucis/please-don-t-make-a-mobile-app-unless-if-you-have-to-g7j</link>
      <guid>https://dev.to/lucis/please-don-t-make-a-mobile-app-unless-if-you-have-to-g7j</guid>
      <description>&lt;p&gt;Last december I've started my first "real job" and, apart from the great onboarding experience, I've been having a bit of trouble setting up my benefits plans. Yeah, there are some UI quirks and weird verification challenges but, by far, &lt;strong&gt;having to install a bunch of apps on my phones&lt;/strong&gt; caused most part of this pain.&lt;/p&gt;

&lt;p&gt;Some of this apps exists for the sole puporse of consulting information, like the one from the healthcare company. No need for background processing, no notifications, nor some fancy use of the camera, and it still is shipped only as a native mobile app. One funny thing about this app in particular is that it has an "online chat" functionality that, when accessed, guess what: &lt;strong&gt;it redirects to a webpage.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;I know that mobile apps are still &lt;em&gt;a hit&lt;/em&gt;. Companies are proud to say "download our app on Play Store or App Store", and most users get into that as well, but &lt;strong&gt;we have to start evangelizing more about web apps.&lt;/strong&gt; And it's not a hard job, since, after battery draining, the most common complain from my close ones is their cellphones being low on storage, and, for the companies, building a native apps is more time-and-resource consuming compared to web development.&lt;/p&gt;

&lt;p&gt;Whenever I see a new startup releasing a mobile app for its shine new CRUD, I feel a bit of the pain of every developer that has been doing an awesome job pushing &lt;a href="https://developers.google.com/web/progressive-web-apps"&gt;&lt;strong&gt;PWA&lt;/strong&gt;&lt;/a&gt; technologies forward for the last couple of years. And, in fact, being up-to-date with their job is a great way for us to embrace this campaign as developers. &lt;/p&gt;

&lt;p&gt;We still have a long way to support every native API on the browser, but we &lt;strong&gt;&lt;a href="https://whatwebcando.today/"&gt;already have a ton of features&lt;/a&gt;&lt;/strong&gt; that makes it possible to implement most of the apps I use everyday. There are also &lt;a href="https://www.simicart.com/blog/progressive-web-apps-examples/"&gt;great web apps&lt;/a&gt; that are already PWAs (in fact, I use &lt;strong&gt;dev.to&lt;/strong&gt; as an installed PWA on my phone).&lt;/p&gt;

&lt;p&gt;An accesible and inclusive WEB is everyone's goal!&lt;/p&gt;

</description>
      <category>pwa</category>
      <category>webdev</category>
      <category>mobile</category>
      <category>apps</category>
    </item>
  </channel>
</rss>
