<?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: Nahue</title>
    <description>The latest articles on DEV Community by Nahue (@nahuelhds).</description>
    <link>https://dev.to/nahuelhds</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%2F184707%2F4dffabbb-cb9a-4440-8da3-fdf38f9b70ab.jpg</url>
      <title>DEV Community: Nahue</title>
      <link>https://dev.to/nahuelhds</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nahuelhds"/>
    <language>en</language>
    <item>
      <title>Bots de Twitter y diarios de Uruguay 🇺🇾</title>
      <dc:creator>Nahue</dc:creator>
      <pubDate>Sun, 26 Apr 2020 03:00:00 +0000</pubDate>
      <link>https://dev.to/nahuelhds/bots-de-twitter-y-diarios-de-uruguay-28ok</link>
      <guid>https://dev.to/nahuelhds/bots-de-twitter-y-diarios-de-uruguay-28ok</guid>
      <description>&lt;p&gt;Bueno, hace unos días hice públicos unos bots que armé para monitorear las noticias que publican algunos medios de prensa uruguayos 🇺🇾&lt;/p&gt;

&lt;p&gt;El país&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📰 &lt;a href="https://twitter.com/elpaisuy"&gt;@elpaisuy&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🤖 &lt;a href="https://twitter.com/ep_diff"&gt;@ep_diff&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El observador&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📰 &lt;a href="https://twitter.com/ObservadorUY"&gt;@ObservadorUY&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🤖 &lt;a href="https://twitter.com/ob_diff"&gt;@ob_diff&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La diaria&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📰 &lt;a href="https://twitter.com/ladiaria"&gt;@ladiaria&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🤖 &lt;a href="https://twitter.com/ld_diff"&gt;@ld_diff&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Montevideo portal&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📰 &lt;a href="https://twitter.com/portalmvd"&gt;@portalmvd&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🤖 &lt;a href="https://twitter.com/mp_diff"&gt;@mp_diff&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Semanario Brecha&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📰 &lt;a href="https://twitter.com/SemanarioBrecha"&gt;@SemanarioBrecha&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🤖 &lt;a href="https://twitter.com/sb_diff"&gt;@sb_diff&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Les cuento un poco más 👇
&lt;/h2&gt;

&lt;p&gt;Primero que nada, pueden verlos a todos juntos funcionando en &lt;a href="https://twitter.com/i/lists/1251295778045378561"&gt;esta lista&lt;/a&gt;. Por supuesto, la idea es sumar más medios (LaRed21, La República, etc), así que si tienen alguno para sugerir, ¡me avisan! ☝️&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Para qué? 🤔
&lt;/h3&gt;

&lt;p&gt;Para ver cómo los distintos medios van moldeando la redacción de la noticia, desde que nace la noticia hasta que pasa el editor y le pone el “toque editorial”. ✍️&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Cómo funciona? 🧐
&lt;/h3&gt;

&lt;p&gt;Los bots leen la fuente RSS de cada medio cada hora. Si hay una diferencia respecto de la lectura anterior (sea URL, título o contenido), simplemente lo tuitean en un hilo.&lt;/p&gt;

&lt;p&gt;Si detectan nuevas diferencias, continúan publicando sobre el mismo hilo. 🤖&lt;/p&gt;

&lt;p&gt;Tiene varias ajustes para hacer aún. Por ejemplo, &lt;a href="https://twitter.com/portalmvd"&gt;@portalmvd&lt;/a&gt; tiene problemas de acentos y todo el tiempo se detectan cambios por eso. Tengo que hacer que omita este tipo de cosas. No aportan a las diferencias que me gustaría destacar. Es un monitoreo editorial, no de redacción.&lt;/p&gt;

&lt;p&gt;Otro caso de ejemplo es que &lt;a href="https://twitter.com/ladiaria"&gt;@ladiaria&lt;/a&gt; cada tanto pone que se llegó al límite de consultas (la querida suscripción). Tendría que poder detectar que eso en realidad no es un cambio en la noticia.&lt;/p&gt;

&lt;p&gt;Detalles que iré mejorando.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Cómo lo hice? 👨‍💻
&lt;/h3&gt;

&lt;p&gt;Investigué lo que hizo &lt;a href="https://twitter.com/j_e_d"&gt;@j_e_d&lt;/a&gt; con sus bots, que hacen lo mismo que acá pero sobre medios argentinos como Clarín o La Nación y encontré varias cuestiones interesantísimas…&lt;/p&gt;

&lt;p&gt;Del proyecto este, nacen dos que toman caminos distintos para hacer lo mismo: leer fuentes RSS para realizar el monitoreo.&lt;/p&gt;

&lt;p&gt;Uno armado por &lt;a href="https://twitter.com/xuv"&gt;@xuv&lt;/a&gt;, que es sobre el cual se basa por ejemplo el laburo hecho por &lt;a href="https://twitter.com/cuasiperfecto"&gt;@cuasiperfecto&lt;/a&gt; en su bot &lt;a href="https://twitter.com/canillita_uy"&gt;@canillita_uy&lt;/a&gt; que hace lo mismo que estos bots que publico hoy, pero todo en la misma cuenta-bot de TW (desarrollado casi a la vez que esto, apenas unas semanas antes jaja).&lt;/p&gt;

&lt;p&gt;Y otro armado por &lt;a href="https://twitter.com/edsu"&gt;@edsu&lt;/a&gt;, que se llama “diffengine” (DE) y es sobre el cual partí yo. Me gustó más este porque además de publicar las diferencias en TW, las guarda en &lt;a href="https://twitter.com/internetarchive"&gt;@internetarchive&lt;/a&gt; que, como ya sabemos, guarda para siempre lo que le pidamos.&lt;/p&gt;

&lt;p&gt;De todos modos, a diffengine le hice algunos agregados, ya que por ejemplo publicaba todo, sí, pero de forma aislada y no como hilo. Así que mi primer mejora fue esa: que se publique en forma de hilo aquellas noticias sobre las que encuentran diferencias en el tiempo.&lt;/p&gt;

&lt;p&gt;Hubieron otros agregados más técnicos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;el cambio de motor de gecko a chrome,&lt;/li&gt;
&lt;li&gt;el paso de sqlite a postgresql,&lt;/li&gt;
&lt;li&gt;la posibilidad de generar una URL de autorización para las cuentas bots que quiero que usen este motor&lt;/li&gt;
&lt;li&gt;y finalmente, poder guardar datos sensibles a nivel de variables de entorno. Esto último para poder compartir el código del proyecto pero sin compartir datos sensibles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Estas mejoras técnicas se hicieron para poder subir todo esto a servicios como Heroku, cosa de que quede corriendo en la nube y que no precise de mi máquina local para vivir.&lt;/p&gt;

&lt;p&gt;Así que bueno, los que quieran chismear el código de diffengine + agregados, lo pueden hacer en la repo que tengo forkeada. 👇&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qF2jUiUG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-6a5bca60a4ebf959a6df7f08217acd07ac2bc285164fae041eacb8a148b1bab9.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nahuelhds"&gt;
        nahuelhds
      &lt;/a&gt; / &lt;a href="https://github.com/nahuelhds/diffengine"&gt;
        diffengine
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      track changes to the news, where news is anything with an RSS feed
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Por otro lado, dejo también el proyecto que conecta los bots con este motor, acá 👇&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qF2jUiUG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-6a5bca60a4ebf959a6df7f08217acd07ac2bc285164fae041eacb8a148b1bab9.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nahuelhds"&gt;
        nahuelhds
      &lt;/a&gt; / &lt;a href="https://github.com/nahuelhds/diffbots"&gt;
        diffbots
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Bots que tuitean las ediciones que se vean realizando en las fuentes RSS integradas
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Cualquier idea o mejora sobre esto, ¡me avisan!&lt;/p&gt;

</description>
      <category>bots</category>
    </item>
    <item>
      <title>Solving MariaDB errors on Travis CI</title>
      <dc:creator>Nahue</dc:creator>
      <pubDate>Sun, 21 Jul 2019 03:00:00 +0000</pubDate>
      <link>https://dev.to/nahuelhds/solving-mariadb-errors-on-travis-ci-3p60</link>
      <guid>https://dev.to/nahuelhds/solving-mariadb-errors-on-travis-ci-3p60</guid>
      <description>&lt;h2&gt;
  
  
  ERROR 1698 (28000): Access denied for user ‘root’@’localhost’
&lt;/h2&gt;

&lt;p&gt;You need to use &lt;code&gt;sudo&lt;/code&gt; in the line execution. Yeah. Just that.&lt;/p&gt;

&lt;p&gt;I had this &lt;code&gt;.travis.yml&lt;/code&gt; file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;addons:
  mariadb: 10.4

before_script:
  - mysql -e 'create database testing;'

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Notice the &lt;code&gt;mysql -e 'create database testing;'&lt;/code&gt; line. The fix was using &lt;code&gt;sudo&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;addons:
  mariadb: 10.4

before_script:
  - sudo mysql -e 'create database testing;'

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  SQLSTATE[HY000] [1698] Access denied for user ‘travis’@’localhost’
&lt;/h2&gt;

&lt;p&gt;This error happens because Travis by default uses &lt;code&gt;dist: xenial&lt;/code&gt; which is not fully compatible with the MariaDB addon yet.&lt;/p&gt;

&lt;p&gt;The solution is setting &lt;code&gt;dist: precise&lt;/code&gt; in your &lt;code&gt;.travis.yml&lt;/code&gt; file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dist: precise

# ... rest of your config file

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;And that’s it. Hope it helps!&lt;/p&gt;

</description>
      <category>travis</category>
      <category>mariadb</category>
      <category>ci</category>
    </item>
    <item>
      <title>Basic Travis CI configuration for Laravel</title>
      <dc:creator>Nahue</dc:creator>
      <pubDate>Sun, 21 Jul 2019 03:00:00 +0000</pubDate>
      <link>https://dev.to/nahuelhds/basic-travis-ci-configuration-for-laravel-4k8c</link>
      <guid>https://dev.to/nahuelhds/basic-travis-ci-configuration-for-laravel-4k8c</guid>
      <description>&lt;p&gt;After some hours of trial and error, I’ve came up with this basic &lt;code&gt;.travis.yml&lt;/code&gt; file ready to work with my Laravel project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; my Laravel is 5.8 version and works with MariaDB and PHP 7.2.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# .travis.yml
dist: precise

language: php

php:
  - 7.2

addons:
  mariadb: 10.4

cache:
  directories:
    - node_modules
    - vendor

before_script:
  - cp .env.travis .env
  - sudo mysql -e 'CREATE DATABASE testing;'
  - composer self-update
  - composer install --no-interaction
  - php artisan migrate --no-interaction -vvv

script:
  - vendor/bin/phpunit

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;.env.travis&lt;/code&gt; file is versioned and contains the following code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# .env.travis

APP_NAME=Laravel
APP_ENV=testing
APP_KEY=base64:Dhtsut2yoe1Oc7Glgl4zPrGLQEKECbi3NoRNQh2N4/c=
APP_DEBUG=true
APP_URL=http://localhost/

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=testing
DB_USERNAME=travis
DB_PASSWORD=

BCRYPT_ROUNDS=4
CACHE_DRIVER=array
MAIL_DRIVER=array
QUEUE_CONNECTION=sync
SESSION_DRIVER=array

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>travis</category>
      <category>github</category>
      <category>tutorial</category>
      <category>laravel</category>
    </item>
    <item>
      <title>Publishing your Expo Standalone App with push notifications into the App Store. The easy way... 😅</title>
      <dc:creator>Nahue</dc:creator>
      <pubDate>Fri, 19 Jul 2019 03:00:00 +0000</pubDate>
      <link>https://dev.to/nahuelhds/publishing-your-expo-standalone-app-with-push-notifications-into-the-app-store-the-easy-way-147p</link>
      <guid>https://dev.to/nahuelhds/publishing-your-expo-standalone-app-with-push-notifications-into-the-app-store-the-easy-way-147p</guid>
      <description>&lt;p&gt;Let’s do a simple check.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did you receive a &lt;strong&gt;undetermined&lt;/strong&gt; status from the push notifications permission? ✅&lt;/li&gt;
&lt;li&gt;Did you receive an email saying something about &lt;strong&gt;ITMS-90078: Missing Push Notification Entitlement&lt;/strong&gt; after delivering your app through the Application Loader? ✅&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Making the push notifications work 📱
&lt;/h2&gt;

&lt;p&gt;It took my two days and several hours to find out… 😡&lt;/p&gt;

&lt;p&gt;The answers are on several Github issues and some threads in the Expo forums. I’m just gathering some of the info together. Basically you need to do two things.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enable push notification for your app identifier. ☝️&lt;/li&gt;
&lt;li&gt;Rebuild with Expo clear provisioning file parameter. ✌️&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Enable push notifications on your App ID’s Identifier
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/expo/turtle/issues/62#issuecomment-469528206"&gt;As it’s mentioned in this GitHub issue&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In order to fix this, you need to enable “Push notifications” for your app on the app store.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Login to &lt;a href="https://developer.apple.com/"&gt;https://developer.apple.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Go to the “Certificates, Identifiers and Profiles” section&lt;/li&gt;
&lt;li&gt;Select “App IDs” in the Identifiers section on the left column&lt;/li&gt;
&lt;li&gt;Choose your app ID, edit it and check “Push Notifications”. Save changes&lt;/li&gt;
&lt;li&gt;Generate a certificate for the production push service: go to the “Certificates” section, and follow the assistant to add a “Apple Push Notification service SSL (Sandbox &amp;amp; Production)” certificate for your app. Acute readers will notice that expo does not need this certificate since it uses a key to talk to Apple directly&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;TL;DR: Expo needs to enable the “Push Notification” service when creating the app in the Apple Developer Portal&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Rebuild your Expo app
&lt;/h3&gt;

&lt;p&gt;Second, I’m sure you already has published you app, so what you need to do is change the &lt;code&gt;expo.ios.buildNumber&lt;/code&gt; in your &lt;strong&gt;app.json&lt;/strong&gt; file and then rebuild the app &lt;strong&gt;clearing the provisioning profile&lt;/strong&gt; like this. 👨‍💻👩‍💻&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;expo build:ios --clear-provisioning-profile

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;In that way Expo will generate the build with the Push Notifications that are now activated in your App ID Identifier.&lt;/p&gt;

&lt;p&gt;Finally, upload it again from the Application Loader. You should be fine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IMPORTANT!&lt;/strong&gt; If clearing the provisioning profile doesn’t work, try &lt;em&gt;clearing all&lt;/em&gt; with the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;expo build:ios -c

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>reactnative</category>
      <category>expo</category>
      <category>ios</category>
      <category>javascript</category>
    </item>
    <item>
      <title>API de Votaciones Argentinas 🇦🇷</title>
      <dc:creator>Nahue</dc:creator>
      <pubDate>Tue, 16 Jul 2019 23:22:55 +0000</pubDate>
      <link>https://dev.to/nahuelhds/api-de-votaciones-argentinas-390c</link>
      <guid>https://dev.to/nahuelhds/api-de-votaciones-argentinas-390c</guid>
      <description>&lt;p&gt;Acabo de publicar &lt;a href="https://www.comovoto.com.ar/" rel="noopener noreferrer"&gt;Cómo Votó&lt;/a&gt;. Por ahora es simplemente un API disponibilizado para consultas. No requiere autorización y &lt;a href="https://www.comovoto.com.ar/docs/#general" rel="noopener noreferrer"&gt;está documentado&lt;/a&gt; lo suficiente como para que cualquier nerd que haya manejado APIs en algún momento de su vida, pueda interactuar con ella. 🤓&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%2Fnahuelhds.dev%2Fimg%2Fcomovoto.com.ar.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%2Fnahuelhds.dev%2Fimg%2Fcomovoto.com.ar.png" alt="Pantalla de bienvenida del proyecto"&gt;&lt;/a&gt;Pantalla de bienvenida del proyecto&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;El proyecto está en estado alpha&lt;/strong&gt; por lo que es inestable y va a sufrir cambios; pero lo interesante es que ya puede utilizarse para generar consultas rápidas y hacer aplicaciones o clientes web con esta información. 🎉🎊🥳&lt;/p&gt;

&lt;p&gt;Podés leer más sobre parte del proceso de elaboración del API en el post original, acá:&lt;br&gt;
&lt;a href="https://nahuelhds.dev/datos-abiertos/2019/07/16/Votaciones-Argentinas-API-Un-ID-para-el-Congreso.html" rel="noopener noreferrer"&gt;https://nahuelhds.dev/datos-abiertos/2019/07/16/Votaciones-Argentinas-API-Un-ID-para-el-Congreso.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>datosabiertos</category>
      <category>argentina</category>
      <category>opendata</category>
      <category>votaciones</category>
    </item>
    <item>
      <title>What is the best config for a Vue project?</title>
      <dc:creator>Nahue</dc:creator>
      <pubDate>Tue, 25 Jun 2019 14:01:01 +0000</pubDate>
      <link>https://dev.to/nahuelhds/what-is-the-best-config-for-a-vue-project-19o4</link>
      <guid>https://dev.to/nahuelhds/what-is-the-best-config-for-a-vue-project-19o4</guid>
      <description>&lt;p&gt;I work with VSCode and I can't make the debugging work properly with vue files. No matter if it's a vue-cli or a nuxt based project.&lt;/p&gt;

&lt;p&gt;I can only manage to work with &lt;code&gt;debugger&lt;/code&gt; statements wich is very annoying and time consuming.&lt;/p&gt;

&lt;p&gt;I need recommendations or examples. Thanks in advance.&lt;/p&gt;

&lt;p&gt;PS: I know I can debug through Chrome DevTools. I just want the full XP of debugging all inside the IDE, like I do with React or Angular&lt;/p&gt;

</description>
      <category>help</category>
      <category>vue</category>
      <category>javascript</category>
      <category>productivit</category>
    </item>
    <item>
      <title>Setup Dark Mode in Slack on MacOS</title>
      <dc:creator>Nahue</dc:creator>
      <pubDate>Mon, 24 Jun 2019 10:26:23 +0000</pubDate>
      <link>https://dev.to/nahuelhds/setup-dark-mode-in-slack-on-macos-1mnd</link>
      <guid>https://dev.to/nahuelhds/setup-dark-mode-in-slack-on-macos-1mnd</guid>
      <description>&lt;h3&gt;
  
  
  July 2019 update 😭
&lt;/h3&gt;

&lt;p&gt;The Slack version 4.0.0 is not compatible with this solution. Need to investigate and if we can do this in this version as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  June 2019 update 💁‍
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Added a bonus step at the end &lt;a href="https://nahuelhds.dev/slack/2018/11/22/Setup-Dark-Mode-in-Slack-on-MacOS.html"&gt;(on my blog only)&lt;/a&gt;, for automating the dark theme implementation with a simple double-click. 😁&lt;/li&gt;
&lt;li&gt;Dark mode has arrived for mobile apps. &lt;a href="https://get.slack.help/hc/en-us/articles/360019434914-Dark-mode-for-Slack-s-mobile-apps"&gt;Read it in the Slack blog itself.&lt;/a&gt; Desktop dark mode still in progress. Hopefully we can use this little hack here.&lt;/li&gt;
&lt;li&gt;Updated the rawgit.com links to jsdelivr.com.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Credits to&lt;/em&gt; &lt;a href="https://gist.github.com/a7madgamal/c2ce04dde8520f426005e5ed28da8608"&gt;&lt;em&gt;this Gist&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  First, configure the general theme 👨‍💻
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Close Slack&lt;/li&gt;
&lt;li&gt;Open this file &lt;code&gt;/Applications/Slack.app/Contents/Resources/app.asar.unpacked/src/static/ssb-interop.js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Append this at the very bottom
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;DOMContentLoaded&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;tt__customCss&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;.menu ul li a:not(.inline_menu_link) {color: #fff !important;}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ajax&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://cdn.jsdelivr.net/gh/laCour/slack-night-mode@master/css/raw/black.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;css&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;style&amp;gt;&amp;lt;/style&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;appendTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;head&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;html&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;css&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;tt__customCss&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Second, choose a proper sidebar theme 💅
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to Preferences / Sidebar&lt;/li&gt;
&lt;li&gt;At the end of that page, choose to set a custom color&lt;/li&gt;
&lt;li&gt;Paste this custom theme:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#171717,#404245,#424242,#ECF0F1,#4A4A4A,#FAFAFA,#2ECC71,#00A362&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You can see other sidebar themes at &lt;a href="https://slackthemes.net"&gt;Slack Theme&lt;/a&gt;. The one I chose is &lt;a href="https://slackthemes.net/#/green_lantern"&gt;Green Lantern&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enjoy the darkness 😈
&lt;/h3&gt;

&lt;p&gt;That’s it. You can now open Slack and see the results!&lt;/p&gt;

&lt;h3&gt;
  
  
  ¡Bonus step! Automatize this 🤓
&lt;/h3&gt;

&lt;p&gt;Every time Slack makes a little update, you’ll need to manually add that little script again and again.&lt;/p&gt;

&lt;p&gt;Well, not anymore. &lt;a href="https://nahuelhds.dev/slack/2018/11/22/Setup-Dark-Mode-in-Slack-on-MacOS.html"&gt;Read it on my blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>slack</category>
      <category>darkmode</category>
      <category>macos</category>
    </item>
    <item>
      <title>Enable SSL with OpenSSL and WAMP on Windows 10</title>
      <dc:creator>Nahue</dc:creator>
      <pubDate>Sun, 12 May 2019 22:22:02 +0000</pubDate>
      <link>https://dev.to/nahuelhds/enable-ssl-with-openssl-and-wamp-on-windows-10-2ni1</link>
      <guid>https://dev.to/nahuelhds/enable-ssl-with-openssl-and-wamp-on-windows-10-2ni1</guid>
      <description>&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%2Fnahuelhds.dev%2Fimg%2F0__HC__ouHIX5ypCpxsF.jpg" 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%2Fnahuelhds.dev%2Fimg%2F0__HC__ouHIX5ypCpxsF.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is my environment: Windows 10 x64, WampServer Version 3.0.4 64bits and Apache 2.4.18&lt;/p&gt;

&lt;h3&gt;
  
  
  TL;DR
&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://forum.wampserver.com/read.php?2,137505,137522#msg-137522" rel="noopener noreferrer"&gt;The instructions are on this post inside the WampServer forum.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you can't start Apache, possibly there is something bad in your config. My issues are described in the next section. You can see your errores executing &lt;code&gt;httpd&lt;/code&gt; directly on &lt;strong&gt;cmd&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd \\wamp\bin\apache\apachex.y.z\binhttpd -t
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That will show you the errors inside the configuration file and the line as well.&lt;/p&gt;

&lt;h4&gt;
  
  
  Important
&lt;/h4&gt;

&lt;p&gt;It’s necessary to use a non-native &lt;strong&gt;OpenSSL&lt;/strong&gt; version from WAMP. I downloaded mine &lt;a href="https://sourceforge.net/projects/openssl/" rel="noopener noreferrer"&gt;from SourceForge’s page&lt;/a&gt;. The downloaded file was &lt;a href="https://ufpr.dl.sourceforge.net/project/openssl/openssl-1.0.2j-fips-x86_64/openssl-1.0.2j-fips-x86_64.zip" rel="noopener noreferrer"&gt;https://ufpr.dl.sourceforge.net/project/openssl/openssl-1.0.2j-fips-x86_64/openssl-1.0.2j-fips-x86_64.zip&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Errors that I’ve faced
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Native OpenSSL on WAMP: “Can’t find ordinal (…)”
&lt;/h4&gt;

&lt;p&gt;On &lt;em&gt;WampServer 64bits&lt;/em&gt;, the &lt;strong&gt;OpenSSL&lt;/strong&gt; executable doesn’t work on &lt;em&gt;Windows 10 64bits&lt;/em&gt;, so you need to download a working version for it.&lt;/p&gt;

&lt;p&gt;My particular error was “The ordinal 113 could not be located in the dynamic link library”. The solution was to install OpenSSL on my own, like described above.&lt;/p&gt;

&lt;h4&gt;
  
  
  WAMP httpd: “invalid command SSLCipherSuite”
&lt;/h4&gt;

&lt;p&gt;Uncomment the line from the &lt;code&gt;httpd.conf&lt;/code&gt; file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LoadModule ssl_module modules/mod_ssl.so
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can follow the instructions from the source.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="http://impradeep.com/invalid-command-sslciphersuite-perhaps-misspelled-or-defined-by-a-module-not-included-in-the-server-configuration/" rel="noopener noreferrer"&gt;http://impradeep.com/invalid-command-sslciphersuite-perhaps-misspelled-or-defined-by-a-module-not-included-in-the-server-configuration/&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  WAMP httpd: “Cannot load modules/mod_ssl.so into server”
&lt;/h4&gt;

&lt;p&gt;Two possible paths here. &lt;strong&gt;The seconds worked for me&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Include the OpenSSL’s DDL in the Windows directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You have to install a different OpenSSL version. You can see this StackOverlow’s answer and follow the instructions: &lt;a href="http://stackoverflow.com/questions/40017498/cannot-load-modules-mod-ssl-so-into-server" rel="noopener noreferrer"&gt;http://stackoverflow.com/questions/40017498/cannot-load-modules-mod-ssl-so-into-server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Replace libeay32.dll and ssleay32.dll on the Apache directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s weird but those files &lt;em&gt;libeay32.dll&lt;/em&gt; and &lt;em&gt;ssleay32.dll&lt;/em&gt; that WAMP 64 ships doesn’t work with the SSL module. You need to download an Apache 32bits version and copy &amp;amp; paste them at &lt;code&gt;\\wamp\bin\apache\apachex.y.z\bin&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I took the files &lt;a href="https://www.apachelounge.com/download/win32/" rel="noopener noreferrer"&gt;from this Apache version&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Explicitly, this link: &lt;a href="https://www.apachelounge.com/download/win32/binaries/httpd-2.2.32-win32.zip" rel="noopener noreferrer"&gt;https://www.apachelounge.com/download/win32/binaries/httpd-2.2.32-win32.zip&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="http://serverfault.com/questions/477706/apache-ssl-on-64-bit-windows-not-a-valid-win32-application" rel="noopener noreferrer"&gt;http://serverfault.com/questions/477706/apache-ssl-on-64-bit-windows-not-a-valid-win32-application&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wamp</category>
      <category>windows</category>
      <category>openssl</category>
      <category>tls</category>
    </item>
    <item>
      <title>How to delete local and remote tags massively from a git repo in just one line</title>
      <dc:creator>Nahue</dc:creator>
      <pubDate>Sun, 12 May 2019 20:24:33 +0000</pubDate>
      <link>https://dev.to/nahuelhds/how-to-delete-local-and-remote-tags-massively-from-a-git-repo-in-just-one-line-k4g</link>
      <guid>https://dev.to/nahuelhds/how-to-delete-local-and-remote-tags-massively-from-a-git-repo-in-just-one-line-k4g</guid>
      <description>&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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2A4W4fdnO680ysRhFc9ppc8w.jpeg" 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%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2A4W4fdnO680ysRhFc9ppc8w.jpeg" alt="Resultado de imagen para git"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  TL;DR. Give me the magic 🧙‍♂️
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;WARNING!&lt;/strong&gt; This is a destructive command. Use at your own risk&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Use case:&lt;/strong&gt; you want to delete the major version 0 and its children.&lt;/p&gt;

&lt;p&gt;First, a dry run…&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SEMVER=0 &amp;amp;&amp;amp; git tag | awk "/^$SEMVER.\*/ { print \\$1 }"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way you see what you’re about to delete.&lt;/p&gt;

&lt;p&gt;Now, if you are certain, then bring the chaos…&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SEMVER=0 &amp;amp;&amp;amp; git tag | awk "/^$SEMVER.\*/ { print \\$1 }" | xargs -I % sh -c "git push origin :%; git tag -d %;"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fnahuelhds.dev%2Fimg%2F0__qTUgphZYwzkwxBYl.jpg" 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%2Fnahuelhds.dev%2Fimg%2F0__qTUgphZYwzkwxBYl.jpg" alt="Thanos is so proud of you"&gt;&lt;/a&gt;Thanos is so proud of you&lt;/p&gt;

&lt;h4&gt;
  
  
  Notes
&lt;/h4&gt;

&lt;p&gt;The &lt;strong&gt;SEMVER&lt;/strong&gt; variable is a regular expression used inside the &lt;strong&gt;awk&lt;/strong&gt; command. So if you would like to delete only the 0.1 version and its patches (0.1.1, 0.1.2, etc.), you could use &lt;code&gt;SEMVER=0.1&lt;/code&gt; in the command.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Windows users:&lt;/strong&gt; &lt;a href="https://www.atlassian.com/git/tutorials/git-bash" rel="noopener noreferrer"&gt;you can still use GitBash&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  I want the details 🤓
&lt;/h3&gt;

&lt;p&gt;Let’s see the entire command again for deleting major version 0 and its children.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SEMVER=0 &amp;amp;&amp;amp; git tag | awk "/^$SEMVER.\*/ { print \\$1 }" | xargs -I % sh -c "git push origin :%; git tag -d %;"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This one-line-command actually does the following things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;SEMVER=0&lt;/code&gt;
Declaring the &lt;strong&gt;SEMVER&lt;/strong&gt; variable and for later use inside the &lt;strong&gt;awk&lt;/strong&gt; command.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git tag&lt;/code&gt;
Showing the available local tags in our local git repo.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;awk “/^$SEMVER.*/ { print \$1 }”&lt;/code&gt;
Here we use &lt;strong&gt;awk&lt;/strong&gt; for filtering all the matching versions with the regular expression defined in the &lt;strong&gt;SEMVER&lt;/strong&gt; variable.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;xargs -I % sh -c "git push origin :%; git tag -d %;"&lt;/code&gt;
Then, we use &lt;strong&gt;xargs&lt;/strong&gt; to use the input through the percentage char (%) and combine it with the &lt;strong&gt;sh&lt;/strong&gt; command.
We tell to &lt;strong&gt;sh&lt;/strong&gt; to read the execution from a string thanks to the&lt;code&gt;-c&lt;/code&gt; argument.
Finally, inside the string we execute the git commands to delete the tag remotely first, and then locally as well. Notice we’re using the &lt;strong&gt;xargs&lt;/strong&gt; ’ input through the percentage char (%) here.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hope it helps!&lt;/p&gt;

</description>
      <category>git</category>
    </item>
    <item>
      <title>Undoing unwanted commits on Git</title>
      <dc:creator>Nahue</dc:creator>
      <pubDate>Sun, 12 May 2019 03:44:20 +0000</pubDate>
      <link>https://dev.to/nahuelhds/undoing-unwanted-commits-on-git-50k9</link>
      <guid>https://dev.to/nahuelhds/undoing-unwanted-commits-on-git-50k9</guid>
      <description>&lt;p&gt;I’m sure that once in a while, it just happens that you made a mistake. That’s ok. It happens.&lt;/p&gt;

&lt;p&gt;But what if you commit the mistake. Several times. A headache for sure and so many other horrible things as well.&lt;/p&gt;

&lt;p&gt;For those cases, I really recommend giving a read to &lt;a href="http://sethrobertson.github.com/GitFixUm/"&gt;On undoing, fixing, or removing commits in git&lt;/a&gt;. A document made by Seth Robertson.&lt;/p&gt;

&lt;p&gt;It contains lot of resources for very incredible situations. I read it sometimes and it helps me out many others.&lt;/p&gt;




&lt;p&gt;More at &lt;a href="https://nahuelhds.dev"&gt;my technical blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
    </item>
  </channel>
</rss>
