Escribir Código — De Snake '97 al Desarrollo Web Moderno

Treinta artículos sobre programación, desarrollo web y construir software que perdura.

Willem lleva décadas escribiendo código — desde un juego retro que alcanzó 40 millones de descargas hasta sitios web artesanales que cargan en menos de un segundo. Estos artículos abarcan todo el espectro: desde filosofía de vibe coding hasta ingeniería del lado del servidor, desde desarrollo de apps nativas hasta la Champions League del diseño web ligero.

El código es un hilo que recorre casi todo lo que Willem escribe. Las bicicletas se construyen con rigor de ingeniería. Los servidores funcionan con Linux configurado a mano. Las apps son nativas, rápidas y pequeñas. Estos artículos tratan sobre el oficio de programar en sí.

La Historia de Snake '97

Empezó con un juego. Actualizar Snake '97 cuenta cómo un simple juego retro se convirtió en una de las apps más descargadas de la historia móvil — 40 millones de instalaciones en iOS y Android. No es una historia de negocios sino de creador: una persona, una idea y la relación de décadas con un trozo de código.

Actualizando Snake '97

Actualizando Snake '97

Sobre los desafíos de desarrollar un juego tremendamente popular

Hace unos años, mi hermano tiró una cerveza sobre mi iPhone en un bar de Ámsterdam. Al pobre no le gustó la cerveza holandesa tanto como a mí: murió. Mientras esperaba a que llegara un nuevo teléfono, usé uno viejo que no podía hacer nada más que enviar mensajes de texto, llamar y... ¡Snake! Nació la idea de Snake '97 y este mes era el momento de actualizar el popularísimo juego.

Artesanía Web

La Champions League del diseño web es el manifiesto de Willem para sitios web ligeros, rápidos y artesanales — sin frameworks, sin herramientas de compilación, solo HTML, CSS y JavaScript que carga al instante.

Codificación Vibe

Codificación Vibe

Sobre el poder y el peligro de programar con IA

Facturando más de $48 mil al mes, el juego de simulador de vuelo de Pieter Levels impulsó una oleada de innovación. Sin un conocimiento detallado de la tecnología de motores de juegos 3D, él 'codificó por vibra' su juego usando IA. Los críticos de su trabajo señalaron problemas de seguridad y escalabilidad, mientras que los defensores elogiaron el asombroso resultado. ¿Qué podemos aprender de esto?

Liga de Campeones del Diseño Web

Liga de Campeones del Diseño Web

Tecnología de vanguardia satisface las demandas digitales de primer nivel

Crear un sitio web de alto rendimiento es un arte que combina tecnología de vanguardia con una visión para el diseño y el comercio. En escape.nl, hogar de uno de los lugares más emblemáticos de Ámsterdam, cada detalle refleja la precisión y el cuidado necesarios para ofrecer experiencias fluidas y atractivas a un gran público. Esta publicación destaca detalles a menudo invisibles con gran impacto.

Apps Nativas

De Snake '97 a desarrollar una app nativa de iOS para corredores y ciclistas, a construir Auscultare — un reproductor de podcasts en Android — los artículos de desarrollo de Willem muestran el ciclo completo: idea, arquitectura, implementación y lanzamiento.

Auscultare Reproductor de podcasts y audiolibros

Auscultare Reproductor de podcasts y audiolibros

Creando una app nativa de Android que recuerda dónde lo dejaste

Disfruta escuchando sin distracciones archivos de audio largos como podcasts y audiolibros con esta aplicación que he creado. Cansado de aplicaciones sobrecargadas llenas de anuncios, suscripciones o 'sugerencias', quería una aplicación que no estorbe, haciendo una sola cosa y haciéndola muy bien. Esto es Auscultare.

Descargador de Podcasts

Descargador de Podcasts

Un simple recuperador de podcasts RSS de código abierto

Cansado de ser constantemente empujado hacia "contenido más relevante", construí un script para liberarme de las aplicaciones de podcast comerciales o de código cerrado. Solo quería una herramienta que descargara discretamente mis programas favoritos, sin complicaciones, sin rastreo, sin extras. Lee esta publicación para obtener más información; es software libre/libre bajo GPLv3.

Desarrollo de una app nativa para iOS

Desarrollo de una app nativa para iOS

Creando un rastreador de ciclismo y carrera

Como un pequeño proyecto paralelo, realizado entre mi trabajo normal, he estado trabajando en algo de interés personal: una aplicación nativa de seguimiento de entrenamiento para iOS. Quería hacer que mi reloj inteligente fuera obsoleto, usando en su lugar mi teléfono para registrar los entrenamientos. ¿Qué tan difícil podría ser recopilar datos detallados de los sensores usando las API nativas de Swift?

Las Herramientas

Programar en un Apple Watch por SSH, el artículo del teclado mecánico, traffic shaping en Linux — estos artículos revelan el entorno donde se escribe el código. Vim, terminal, herramientas mínimas.

Usar un teclado mecánico

Usar un teclado mecánico

NuPhy Air60 V2 review

Durante los últimos dos meses he estado usando un teclado mecánico: el NuPhy Air60 con switches Moss (60gf). Durante mucho tiempo dudé si merecía la pena cambiar mi teclado habitual; me gustaban lo suficiente los de Apple y Framework como para no dar el paso. Pero después de leer tanto entusiasmo de otras personas, decidí probarlo yo mismo.

Modelado de tráfico usando iptables y tc

Modelado de tráfico usando iptables y tc

Limitando el ancho de banda de red saliente por dirección IP de cliente

El mes pasado recibí una alerta automatizada que indicaba un uso excesivo de ancho de banda, normalmente una señal de problemas. Cuando esto sucede, se debe seguir un procedimiento estándar de incidentes, tratando de aislar la fuente del tráfico antes de cerrarlo. Sin embargo, la causa de este incidente no fue lo que esperaba... requiriendo un tipo de mitigación diferente a un simple bloqueo.

Programando en el Apple Watch

Programando en el Apple Watch

Experimentos locos, con seriedad

En los últimos años no he sido ajeno a los experimentos locos, pero esta vez quise llevarlo al extremo: programar en un Apple Watch. ¿Sería posible escribir código de verdad en un dispositivo tan pequeño? ¿Para qué molestarse? Este post es una defensa de los experimentos locos, ¡y por qué tú también deberías intentarlo!

Explora también

construido para durar · autoalojamiento · diseñar y hacer · computación retro

Todos los Artículos de Programación

Todos los artículos sobre escribir código, construir software y desarrollo web.

Lectura offline

Lectura offline

Exportar posts del blog de HTML a ePub y PDF)

Este año marca el décimo aniversario de mi blog. Lo que empezó como un experimento se ha convertido en más de 170 historias, con un promedio de alrededor de 60 mil pageviews al mes. Recientemente comencé a traducir entradas al neerlandés, alemán y español para ampliar el alcance. Y ahora estoy introduciendo soporte para lectura sin conexión al hacer que todas las entradas estén disponibles como descargas en ePub y PDF.

Auscultare Reproductor de podcasts y audiolibros

Auscultare Reproductor de podcasts y audiolibros

Creando una app nativa de Android que recuerda dónde lo dejaste

Disfruta escuchando sin distracciones archivos de audio largos como podcasts y audiolibros con esta aplicación que he creado. Cansado de aplicaciones sobrecargadas llenas de anuncios, suscripciones o 'sugerencias', quería una aplicación que no estorbe, haciendo una sola cosa y haciéndola muy bien. Esto es Auscultare.

Willemstagram

Willemstagram

Un panel de fotos 3D que revela historias

La semana pasada estuve con un cliente mirando la nueva página de inicio de willem.com, donde utilizo una narrativa para contar las cosas que hago. Este cliente es uno de los mejores pensadores creativos y visionarios, pero mi texto no pareció conectar con él. Pensando en esto, recordé una importante lección de psicología de la Universidad: necesitaba algo diferente, algo no lineal. ¡Este post trata sobre dar un golpe de efecto visual!

Codificación Vibe

Codificación Vibe

Sobre el poder y el peligro de programar con IA

Facturando más de $48 mil al mes, el juego de simulador de vuelo de Pieter Levels impulsó una oleada de innovación. Sin un conocimiento detallado de la tecnología de motores de juegos 3D, él 'codificó por vibra' su juego usando IA. Los críticos de su trabajo señalaron problemas de seguridad y escalabilidad, mientras que los defensores elogiaron el asombroso resultado. ¿Qué podemos aprender de esto?

Descargador de Podcasts

Descargador de Podcasts

Un simple recuperador de podcasts RSS de código abierto

Cansado de ser constantemente empujado hacia "contenido más relevante", construí un script para liberarme de las aplicaciones de podcast comerciales o de código cerrado. Solo quería una herramienta que descargara discretamente mis programas favoritos, sin complicaciones, sin rastreo, sin extras. Lee esta publicación para obtener más información; es software libre/libre bajo GPLv3.

Desarrollo de una app nativa para iOS

Desarrollo de una app nativa para iOS

Creando un rastreador de ciclismo y carrera

Como un pequeño proyecto paralelo, realizado entre mi trabajo normal, he estado trabajando en algo de interés personal: una aplicación nativa de seguimiento de entrenamiento para iOS. Quería hacer que mi reloj inteligente fuera obsoleto, usando en su lugar mi teléfono para registrar los entrenamientos. ¿Qué tan difícil podría ser recopilar datos detallados de los sensores usando las API nativas de Swift?

Vision Pro

Vision Pro

Explorando la Computación Espacial

Actualmente, estoy contemplando un lago en el Monte Hood mientras escribo esto. Oigo pájaros en la distancia y veo el lago en calma, con olas sutiles y algo de niebla a lo lejos. Sin embargo, es falso, ya que estoy sentado en nuestro último piso, una habitación apenas amueblada y llena de artículos pertenecientes a una casa familiar con dos niños pequeños. Estoy usando las Vision Pro de Apple para explorar lo que puede ser la computación espacial. Estoy asombrado; permítanme explicarlo en esta entrada del blog.

Tableta como Herramienta

Tableta como Herramienta

Apreciando el iPad Pro: Una Perspectiva Diferente

La utilidad del iPad Pro ha generado mucho debate recientemente. Algunos usuarios argumentan que es una decepción, ya que no cumple con las expectativas establecidas por los portátiles tradicionales. Sin embargo, existen beneficios menos obvios del iPad que vale la pena considerar. Esta entrada de blog profundiza en estas ventajas y comparte perspectivas sobre la experiencia personal de usar un iPad Pro.

Usando IA para generar código

Usando IA para generar código

Programar con superpoderes

Como parte de mis esfuerzos de optimización de software para reducir los costos de la nube, necesitaba reemplazar una pieza de software de servidor ineficiente existente con algo que use herramientas más robustas (aunque fragmentadas) disponibles en Debian GNU/Linux. ¿Podría el modelo de lenguaje GPT4 ofrecerme algo de magia de IA? ¡Sigue leyendo!

Construyendo una plataforma de producto

Construyendo una plataforma de producto

Diseñando para la reutilización, la flexibilidad y la extensibilidad

Este mes estoy aprovechando las capacidades de la plataforma para lanzar un nuevo producto. A lo largo de los años he desarrollado la plataforma "Lemmid", un conjunto de bloques de construcción que me permiten desarrollar rápidamente nuevos productos. Diseñar una plataforma requiere algunas consideraciones adicionales, pero si sigues algunas reglas simples, ¡puedes hacerlo tú mismo!

Trabajar con hardware especial de China

Trabajar con hardware especial de China

Sobre el desarrollo de software sin manual

Este mes recibí un envío de China que contiene un hardware especial, ¡dispositivos Android con impresoras integradas! Para facilitarles la vida a los dueños de restaurantes y negocios que usan mi aplicación de pedidos de comida, quiero que estos dispositivos impriman automáticamente los nuevos pedidos. Si tan solo pudiera hacer que estas máquinas funcionen con mi software... ¡reto aceptado!

Aumenta el tráfico a tu blog con una fuente RSS

Aumenta el tráfico a tu blog con una fuente RSS

Cómo configurar RSS/Atom usando NodeJS

Escribir en mi blog ha sido muy divertido, recibo mensajes de todo el mundo sobre las cosas que me gustan. El tráfico está creciendo, cada mes más lectores encuentran el camino a mi blog. Esta semana recibí una solicitud para admitir feeds RSS en mi blog. Me pregunté, ¿siguen siendo relevantes los feeds RSS hoy en día?

Conectando Lemmid Store con cocinas

Conectando Lemmid Store con cocinas

Integrándose con sistemas externos que no controlas

Como parte de la aplicación de pedidos de comida que estoy desarrollando, necesitaba diseñar una forma confiable de vincular la aplicación a sistemas externos. Estos sistemas externos están fuera de mi control directo e incluyen diferentes cajas registradoras, sistemas de gestión de cocina e impresoras de tickets. Sigue leyendo para obtener más información sobre cómo diseñar para lo desconocido y poco confiable.

Diseño de aplicaciones escalables sin magia

Diseño de aplicaciones escalables sin magia

Aprovechando la potencia de computación del cliente para un alto rendimiento con muchos usuarios

Como parte de la aplicación de pedidos de comida online que estoy construyendo, necesitaba diseñar una infraestructura backend escalable que pudiera manejar una gran cantidad de usuarios concurrentes. La escalabilidad se considera un problema difícil de abordar. A menudo se presenta como algo mágico, realizado por compañías millonarias utilizando herramientas secretas. Pero, no existe la magia, ¿o sí?

Diseñando una interfaz para una página de pedidos de comida

Diseñando una interfaz para una página de pedidos de comida

Encontrar un equilibrio entre opciones potentes y usabilidad móvil

Las páginas de pedidos online son más importantes que nunca. El virus COVID-19, los confinamientos resultantes y las normas de distanciamiento social han enfatizado la necesidad de una interfaz de usuario de tienda online bien diseñada. ¡Es sorprendentemente difícil hacerlo bien!

Diseño e implementación de un sistema de (micro)pagos

Diseño e implementación de un sistema de (micro)pagos

Monetizando mi blog con café, Apple Pay y Mollie

Los pagos online son ahora más importantes que nunca ya que los negocios se ven afectados por el virus COVID-19. Esto impulsa a mis clientes a buscar nuevas formas de ganar dinero online. Diseñé e implementé un sistema de (micro)pagos. Esta publicación trata sobre cómo lograr la simplicidad resolviendo desafíos complejos.

Arquitectura de software monolítica vs. microservicios

Arquitectura de software monolítica vs. microservicios

Elegir el diseño adecuado para el desarrollo de tu app

Esta semana volé a Gotemburgo para reunirme con gente de una gran compañía naviera internacional, para hablar sobre el desarrollo de software a nivel empresarial. Durante la reunión había varios expertos en la sala, uno de ellos me preguntó sobre la elección de la arquitectura de software correcta (para aplicaciones grandes, complejas, a nivel empresarial). Una muy buena pregunta, que bien merece una entrada de blog.

Compatibilidad con Multiventana en la app para iPad

Compatibilidad con Multiventana en la app para iPad

Desarrollo nativo para iPadOS

El mes pasado Apple lanzó iPadOS, el primer sistema operativo dedicado para iPad. Se diferencia de iOS con su compatibilidad con la pantalla más grande del iPad, incluyendo ventanas multi/pantalla dividida. Desarrollo apps y era hora de aprovechar estas nuevas posibilidades que ofrece iPadOS.

Dig para principiantes

Dig para principiantes

Explicando una herramienta de red muy útil

Cuando construyes sitios web, aplicaciones o servicios de correo electrónico, puedes encontrarte con nombres de dominio y sus configuraciones. Cuando todo funciona como debería, la mayor parte de esto es invisible. Pero al solucionar problemas de la configuración de un nombre de dominio, puede ser necesario profundizar un poco más... ¡sigue leyendo para aprender cómo!

Comprensión de las preocupaciones de seguridad en el alojamiento compartido

Comprensión de las preocupaciones de seguridad en el alojamiento compartido

Considerando los puertos abiertos y los servicios de red no utilizados

Me pagan por hackear, con la condición de que explique cómo lo hice, para que se puedan prevenir futuros ataques. Como consultor de seguridad, busco vulnerabilidades en las aplicaciones, tiendas online y sitios web de mis clientes. Muy a menudo, un ataque comienza explotando una brecha de seguridad visible de forma remota. Sigue leyendo para aprender cómo los hackers encuentran las brechas de seguridad y qué puedes hacer para protegerlas.

Optimización de imágenes para la web y el rendimiento

Optimización de imágenes para la web y el rendimiento

Reduce el tamaño de los archivos con jpegoptim, optipng, pngcrush y pngquant

Una forma de hacer que tu sitio web sea más rápido es hacerlo más pequeño. ¡No con fuentes diminutas, sino con menos bytes! Más de la mitad del peso de un sitio web promedio se debe a las imágenes. Sin embargo, muy pocas personas optimizan sus imágenes para la web y el rendimiento, ¡es hora de descubrir cuántos bytes puedes ahorrar!

Ciberseguridad: 5 consejos sencillos para proteger tu servidor contra hackers

Ciberseguridad: 5 consejos sencillos para proteger tu servidor contra hackers

Prácticas recomendadas de endurecimiento de servidores para Windows y Linux

Esta semana uno de mis clientes fue hackeado y me pidió asistencia de emergencia para ayudar a asegurar la infraestructura de su servidor. Era un servidor web que ejecutaba sitios web de WordPress en Apache (con PHP/MySQL), incluyendo algunas tiendas online con datos de clientes. Este hackeo podría haberse evitado fácilmente con las siguientes mejores prácticas, ¿está su servidor seguro?

Tablet como computadora principal

Tablet como computadora principal

Comparación entre Microsoft Surface Pro y iPad Pro

Durante las últimas semanas he estado usando la Microsoft Surface Pro como mi computadora principal. Es una tableta moderna que se puede usar como laptop con la Type Cover. Con el Surface Pen, es una PC versátil que funciona de muchas maneras diferentes. Es hora de descubrir si es buena y cómo se compara con mi otra tableta, el iPad Pro.

Actualizando Snake '97

Actualizando Snake '97

Sobre los desafíos de desarrollar un juego tremendamente popular

Hace unos años, mi hermano tiró una cerveza sobre mi iPhone en un bar de Ámsterdam. Al pobre no le gustó la cerveza holandesa tanto como a mí: murió. Mientras esperaba a que llegara un nuevo teléfono, usé uno viejo que no podía hacer nada más que enviar mensajes de texto, llamar y... ¡Snake! Nació la idea de Snake '97 y este mes era el momento de actualizar el popularísimo juego.

Cloud bajo mi piso

Cloud bajo mi piso

Construyendo un pequeño centro de datos en mi sótano

En mi casa tengo esta conexión a internet de fibra óptica increíblemente rápida. Es una conexión de fibra de 600MB de subida y bajada que llega directamente a mi casa (sin cables de cobre). Es como una autopista de internet privada. Motivo suficiente para averiguar si podía hacer algo para aprovechar mejor toda esta fibra rápida...

El día que maté mi LAN

El día que maté mi LAN

Desactivé mi red local y me pasé solo a 4G

Hoy llamé a mi proveedor para dar de baja la suscripción ADSL de internet de mi oficina, ya no la necesito. He apagado mi red de área local y he cambiado mi flujo de trabajo a internet móvil únicamente. La simplicidad y el ahorro realmente me sorprendieron tanto, que hice una entrada de blog sobre ello.

Programando en el Apple Watch

Programando en el Apple Watch

Experimentos locos, con seriedad

En los últimos años no he sido ajeno a los experimentos locos, pero esta vez quise llevarlo al extremo: programar en un Apple Watch. ¿Sería posible escribir código de verdad en un dispositivo tan pequeño? ¿Para qué molestarse? Este post es una defensa de los experimentos locos, ¡y por qué tú también deberías intentarlo!

iPad Pro junto a mi máquina principal

iPad Pro junto a mi máquina principal

Usándolo con el Apple Pencil como una potencia creativa

Quería ver si podía encontrar algo mejor que mi anticuado lápiz y papel que uso para diseñar software como desarrollador profesional. Conocía el iPad Pro de mi prueba del verano pasado, en la que investigué si podría reemplazar mi máquina de desarrollo principal. Aunque puede que no sea capaz de reemplazar por completo mi fiel ThinkPad, resultó ser una historia totalmente diferente cuando se trata de papel.

iPad Pro como ordenador principal

iPad Pro como ordenador principal

Probando iOS como plataforma de desarrollo principal

La ausencia de desorden físico, marcas que distraigan o LEDs parpadeantes hace del iPad Pro un ejemplo de libro de diseño minimalista. Mi aversión a la distracción explica mi interés en usar el iPad Pro como único ordenador para probar si está a la altura de la tarea. ¿Es el último esfuerzo de Apple en iOS suficiente para permitir realizar un trabajo de desarrollo serio?

Construyendo el blog... ¡con estilo!

Construyendo el blog... ¡con estilo!

Desarrollando en un ordenador de 20 años con 16MB de RAM y Windows 98

Hay que estar un poco loco para que se te ocurra la idea de construir un blog (es decir: programarlo de verdad) en un viejo portátil 486 con solo 16MB de RAM. Resulta que yo soy así de loco: cogí mi primerísimo portátil de los 90 y decidí averiguar si era posible convertirlo en una máquina de desarrollo.