codebuddy.tech

building in public from Vancouver

Construyendo herramientas de IA entre viajes de Uber: Cómo convertí el tiempo muerto en oro de desarrollo

Hola, me llamo Chris. Soy un ex trabajador manual convertido en conductor de viajes compartidos aquí en Vancouver, y me he topado con algo bastante increíble. En la hora y media que paso en promedio entre viajes cada día, me he estado enseñando a crear aplicaciones impulsadas por IA en mi teléfono. Lo que he logrado en estos momentos dispersos de inactividad es, francamente, sorprendente, incluso para mí.

No dejé los oficios por elección. Una sierra Skil se llevó la mayor parte de mi pulgar, y eso fue todo. Más de veinte años como pintor, plomero y carpintero, y un mal momento lo terminó. No pretenderé que no me amargué por un tiempo. Pero lo que pasa con ser un trabajador manual es que, incluso cuando las herramientas cambian, la mentalidad de resolución de problemas no lo hace. Cuando te encuentras con un obstáculo, no esperas a que alguien más lo arregle. Construyes una solución.

Esa mentalidad se ha traducido perfectamente al desarrollo de software, aunque admito que tiene sus desventajas. Cada vez que encuentro un obstáculo en mi viaje de programación —y créanme, los encuentro regularmente— construyo una herramienta alrededor del problema. Es como cuando me topo con un río que no puedo cruzar, simplemente construyo un puente. Y ese enfoque ha sido absolutamente liberador, incluso si a veces una suscripción mensual podría haber resuelto el mismo problema de manera más eficiente.

La mentalidad del trabajador manual: resolver problemas en código

Los paralelismos entre el trabajo manual y el desarrollo de software son más profundos de lo que podrías esperar. En carpintería, cuando te falta una plantilla específica, construyes una con madera de desecho. En plomería, cuando no encuentras el adaptador adecuado, fabricas un acoplamiento temporal. Este tipo de bricolaje —usar materiales disponibles para crear soluciones alternativas— se vuelve algo natural.

Pero el desarrollo de software añade capas de complejidad que los oficios físicos no tienen. Cuando un carpintero construye una plantilla, funciona o no. Si se rompe, es obvio. Cuando construyo una aplicación personalizada, los modos de falla son más insidiosos. Un caso límite no manejado podría silenciosamente interrumpir una conexión, una dependencia podría tener una vulnerabilidad que pase desapercibida durante meses, y el código en sí mismo se convierte en un pasivo que exige atención constante.

Sin embargo, el romanticismo de construir tus propias herramientas es real. Hay algo profundamente satisfactorio en crear una solución que se ajuste exactamente a tu flujo de trabajo, optimizada para tus necesidades específicas en lugar de las suposiciones de un gerente de producto sobre lo que los usuarios quieren. La pregunta con la que constantemente lucho es: ¿cuándo este enfoque sirve a la productividad y cuándo se convierte en sobreingeniería disfrazada de resolución de problemas?

El primer puente: mi cliente SSH personalizado

Mi creación emblemática es una aplicación para iOS que llamo Terms — actualmente en su cuarta iteración. Este cliente SSH ha evolucionado a lo largo de años de uso real durante esos momentos dispersos entre viajes, y se ha adaptado perfectamente a mi singular flujo de trabajo de programación basado en copiar y pegar, voz a texto e IA.

La aplicación usa autenticación biométrica — Face ID específicamente. Cuando la abro, el sistema autentica mi rostro y me lleva directamente a mi entorno de alojamiento VPS, justo en la línea de comandos. La tecnología detrás de Face ID es fascinante: el sistema de cámara TrueDepth de Apple proyecta más de 30,000 puntos invisibles para crear un mapa de profundidad preciso de tu rostro, utilizando imágenes infrarrojas para funcionar incluso en la oscuridad.

La capacidad de sentarme cómodamente en mi teléfono, construyendo herramientas que tienen un potencial real mientras constantemente soluciono errores y optimizo — es un placer genuino. Lo recomiendo encarecidamente. Y sí, hay algo silenciosamente satisfactorio en el hecho de que las mismas manos que solían enmarcar paredes y soldar tuberías de cobre ahora están desplegando Python en un servidor Linux desde un estacionamiento en Vancouver.

Una de mis características favoritas aborda una frustración común en los entornos de desarrollo móvil. Cuando encuentro un error o un seguimiento de pila que congela la terminal, simplemente deslizo hacia arriba para cerrar la aplicación, la vuelvo a abrir, dejo que Face ID me autentique nuevamente, y estoy de inmediato de vuelta en la línea de comandos, listo para continuar. Este proceso de recuperación sin interrupciones me ha ahorrado innumerables horas de frustración y mantiene mi impulso durante esas preciosas sesiones de programación entre viajes.

La implementación técnica se basa en almacenar claves SSH cifradas en el Llavero de iOS, que proporciona seguridad respaldada por hardware en dispositivos con un Enclave Seguro. La gestión del estado de la conexión fue una de las partes más complicadas de lograr correctamente — manejar las transiciones de red mientras me muevo entre diferentes torres celulares y puntos de acceso WiFi por toda la ciudad. Implementé una capa de persistencia de conexión que puede detectar cambios en la red y reconectarse automáticamente a la sesión remota, a menudo de manera tan fluida que ni siquiera noto que ocurrió la transición.

¿Podría haber logrado una funcionalidad similar con clientes SSH existentes? Absolutamente. Pero esas aplicaciones optimizan para casos de uso generales, mientras que la mía está enfocada como un láser en mi flujo de trabajo específico. Los atajos de teclado personalizados, la integración con el voz-a-texto de iOS para programar por voz, y la gestión especializada del portapapeles para intercambiar fragmentos de código entre mi teléfono y el servidor — estas características existen porque las construí para mis necesidades exactas.

El puente de video a audio: resolviendo la fricción en el flujo de trabajo de contenido

La segunda herramienta importante que desarrollé surgió de un punto específico de fricción en mi flujo de trabajo de creación de contenido. Necesitaba una forma confiable de transcribir videos, y aunque hay servicios web que manejan esto, requería algo más flexible para mi biblioteca de contenido personal.

Mi enfoque fue convertir primero los videos a audio — un proceso mucho más ligero que subir archivos de video grandes. Durante años dependí de una aplicación de terceros para esto, pero cuando las actualizaciones de iOS lo rompían o necesitaba formatos de audio específicos, me encontraba atascado. Así que construí mi propio convertidor.

La tecnología subyacente se basa en FFmpeg, un potente mu de código abierto

Get new posts

Subscribe in your language

New posts delivered to your inbox. Unsubscribe anytime.

Receive in: