#49 - Heliópolis

Hablamos de lanzar productos gratis, usar túneles para hacerlo y de paso sobre personajes de ficción

Buenos miércoles y guélcom a la humilde morada de este juntaletras de mierda que se entretiene como puede yendo de empresaurio y soltando sandeces a discreción.

O dicho de otro modo, bienvenidos y bienvenidas a la newsletter de esta semana.

En esta hablaremos de cosas catódicas, cosas tunélicas y cosas antivirales.

Vamos al lío.

📺 La caja tonta

Hay un término en inglés que me encanta. Retconning. Lo traducen por estas latitudes como retrocontinuidad.

Su versión sabor vainilla es la continuidad normal, algo que suele ser útil en cualquier obra de ficción: que la cosa tenga sentido temporal. Que, si un señor es ametrallado en primer plano durante el capítulo tercero de la serie, no se le vea el el quinto tomándose un café con leche. Que si en la página 47 el héroe blande una espada, no derive en ukelele en la 48.

Pues la retrocontinuidad es cuando el autor arregla la continuidad a toro pasado. Metiendo con calzador una explicación tardía a un fallo de continuidad, un viraje de guión o un hecho inexplicado en el argumento.

Como aquella historia de islas y números y humos negros que retuercen hasta el absurdo de tal manera que la única escapatoria ontológica es acabar la serie diciendo que era todo producto de un mal viaje de perro de Los Serrano al que se le había ido la mano con la mescalina.

O algo así era.

Son retconning los midiclorianos de Star Wars, Akira Toriyama diciendo que GT no es canon para vender Super, o que volviera en Fast & Furious 5 el coreano que acaba crispy al explotar su coche en Tokyo Drift.

Es retconning Matrix Resurrections en su totalidad, donde detonan la ya endeble continuidad de la saga introduciendo un puñado de fumadas inconexas y elevando todo el tinglado a barrizal de plastidecor y purpurina indigerible.

Pues el caso es que me encanta el término. Tanto que lo aplico a mi vida diaria también.

Por ejemplo, no es que mi compi tuviese razón con que no conseguiría hacer los 30 días de ejercicio diario. Es que obviamente durante las vacaciones no cuenta.

No es que haya dejado empantanado lo de hacer la caseta de la terraza porque me he aburrido del tema y estoy a otras cosas. Es que resulta que necesitaba pensar como resolver una parte y ahora que lo he hecho es cuando toca acabarla.

No es que esté aquí el martes a última hora escribiendo la newsletter porque ni me acordaba.

Es que yo siempre he creído que a uno tiene que venirle la inspiración. Y estaba esperando atentamente.

Ahora bien, eso sí.

Ya lo decía Picasso.

La inspiración existe. Pero tiene que pillarte trabajando.

Igual ese ha sido el problema.

💾 Tech Tip - ngrok

Hace unos días saqué un mini-producto. Bueno, producto es palabra demasiado amable. Llamémoslo cosa online. Porque es gratis. Y escaso en su esencia.

Es caso (sic) es que estaba intentando sacar en PDF una página de Notion, un presupuesto, y daba pena de verlo. Notion imprime cutre, qué le vamos a hacer.

Así que me puse un par de horas y monté pdftion.com, un imprimidor de páginas de Notion.

Como cualquier cosa que imprime webs y similares hoy en día, esto funciona simulando un navegador, un Google Chrome, y usando el imprimir a PDF que viene de serie. Como hace falta ejecutar un Chrome, no puede hacerse en los típicos deploys serverless que yo uso, como Vercel o Netlify.

Por suerte hay un servicio, browserless.io, que te permite ejecutar Puppeteer a través de API e imprimir a PDF. Muy cómodo. Y con un free tier de 1000 peticiones al mes que me da de sobra para echar el balón a rodar.

Podría ser peor

Montando todo esto me surgió un problema. La API de web → pdf de browserless.io necesita que la web… exista. Y no puedo apuntarlo directo a Notion, se vería raro. O igual de mal que imprimiendo directo de Notion. Lo que tengo que hacer es renderizar yo la página controladamente, ocultando cosillas que molestan y toqueteando el CSS para que se vea bonito.

Eleven herbs and spices y tal.

Y entonces hacer que imprima eso. Pero durante el desarrollo eso está en localhost. ¿Cómo lo hago?

Pues aquí entra la herramienta del título: ngrok.com.

Ngrok es una herramienta comercial. Había una versión 1.x open source hace años. Y hay un montón de alternativas open source actualmente. Pero ngrok va tan fino que para uso ocasional no vale la pena complicarse.

Lo que hace esta herramienta es exponer un puerto local de un ordenador en un dominio público. Hace un túnel, vamos. Por ejemplo si tenemos un proyecto rulando en local, en localhost:8000 por ejemplo, y queremos acceder des de internet, hacemos:

ngrok http 8000

Y recibimos una URL, con TLS y todo, en puerto 80/443, donde mágicamente está nuestro servicio disponible.

ngrok                                                                       (Ctrl+C to quit)

    Session Status                online
    Account                       inconshreveable (Plan: Free)
    Version                       3.0.0
    Region                        United States (us)
    Latency                       78ms
    Web Interface                 http://127.0.0.1:4040
    Forwarding                    https://84c5df439d74.ngrok-free.dev -> http://localhost:8000

    Connections                   ttl     opn     rt1     rt5     p50     p90
                                  0       0       0.00    0.00    0.00    0.00

Y hay más. ¿Quieres que el acceso sea más seguro? —-basic-auth 'user:password' y arreglado. ¿Esto irá integrado en un servicio que hablará OAuth? Métele SSO con Google añadiendo —-oauth Google.

Habrás visto también que el primer comando dice http. Y es que no sólo puede tunelar http. Si tu servicio ya habla tls, usa tls. Si es cualquier servicio arbitrario, usa tcp.

Ah, y si no puedes instalar el cli de ngrok, puedes hacer todo esto con ssh. Sube tu clave pública en los settings y haces:

ssh -R 443:localhost:8000 [email protected] http

Que sería equivalente al comando ngrok http 8000 del principio.

Estos de ngrok no me pagan nada así que hasta aquí el fanboyeo. Os lo recomiendo. Me ha resultado útil para este tema y cada vez se me ocurren más formas de solucionar pequeñas incomodidades del dev diario con ngrok.

Not bad.

🖨️ Pdftion.com

Esto es sección #BuildInPublic. Pero va con lo de antes.

Ya os he contado de que va el miniproyecto. No hay opción a que me de de comer. Pero lo que sí hay es opción a que se medio-pseudo-viralice entre los entendidos Notioneros y me de un poco de paid with exposure.

Podría ser peor.

El caso es que mi estrategia ha sido hacer un poco de spam por ahí. En algunas comunidades de indie hackers, Slacks varios, etcétera. Y en Twitter, como siempre.

¿Ha funcionado? Pues a cierre de esta edición, más bien poco. Pero bueno, veremos si la cosa se anima.

Pero como lo del buildear en public va tanto de éxitos como de fracasos, lo comparto con vosotros.

Si queréis hacerme feliz echadle un ojo a la herramienta y si os gusta dadle a upvote en Product Hunt. Con suerte llegamos a 10 y me dan un pin del Benito Villamarín.

👋 Y con estoy un bizcocho…

…hasta el miércoles que viene a las once.

Vale, que no rima, pero bueno, haber estudiao.

Esta semana es la primera de vuelta al cole, la primera en serio de vuelta al curro, y además el fin de semana me lo he pasado remojado en el Millars haciendo kayak y bebiendo cerveza así que, quieras que no, no tengo todavía los chakras machihembrados.

Recemos para que la gravedad ponga los asuntos en su sitio y la semana que viene venga con mandanguita de la buena que restregaros por la cara. O cosas interesantes, lo que llegue antes.

El caso, que a la próxima, más.

Viva el Betis manque pierda.

Nos leemos pronto.