
Podcast
programar.cloud
20
209
Programar Cloud es un cursoblog que te ayudará a cambiar la forma en la que diseñas y programas tus aplicaciones.
Programar Cloud es un cursoblog que te ayudará a cambiar la forma en la que diseñas y programas tus aplicaciones.
Electricidad For Dummies - IoT Fácil
Episode in
programar.cloud
¡Hola muchachada! Si vas a hacer cosas con cacharritos necesitas tener cuatro nociones súper esenciales sobre cómo funciona la electricidad. En este vídeo te cuento las magnitudes con las que trabajarás (amperios, voltios y vatios) y por qué si vas con cuidado no tienes que tener miedo de montar tu propio enchufe.
OJO: Como Fede me ha comentado amablemente hay un error en la explicación, o más bien no he contado algo importante (porque no lo sabía): en el circuíto de corriente alterna de tu casa se envían en realidad tres corrientes simultáneamente y el voltaje de los cables varía cincuenta veces por segundo. ¡¡Así que lo dicho: no se te ocurra tocar ninguno de los cables porque siempre vas a tener diferencia de potencial con el suelo!!
Seguro que he cometido errores pero recordad que (como dicen los de Charrando de Tebeos) eso es bueno para vosotros porque me podéis dejar tuits y feedback recordándome lo torpe que soy ;-) ¡No os cortéis que si no cuesta corregirlo!
¿Qué tendremos para el próximo capítulo? Cablearemos el Sonoff y le pondremos un firmware nuevo. Keep tuned!
jv
pd: ¡Y dadle al compartir, que no cuesta ná y ayuda que seamos más!
12:37
¿Qué Es Un Sonoff? IoT Fácil
Episode in
programar.cloud
¡Xics y xiquetes! Está claro que no encuentro tiempo para completar los artículos en el formato tradicional de este blog (aunque tengo uno muy bueno empezado) así que durante una temporada vamos a cambiar de estilo. La idea es grabar vídeos cortos que formen una serie intentando evitar la postproducción de manera que pueda daros contenido de calidad pero sin dejarme la vida en ello.
Empezamos con un tema que me parece súper emocionante: Internet of Things para casa. En este capítulo os hablo de los sonoff, unos relés que por solo seis o siete euros permiten controlar el paso de corriente eléctrica utilizando la wifi. Hay una demostración práctica en la que enciendo y apago una bombilla gracias a Espurna, el software de Xosé Pérez que les añade una cantidad espectacular de funcionalidades.
09:52
Alexa Y Asistentes Digitales
Episode in
programar.cloud
Fernando Hönig me invitó al Meetup Online de AWS en Español (en youtube) para hablar de asistentes digitales y Alexa. Aquí tenéis el extracto de esa charla, yo creo que se hizo divertida:
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
RSS para podcatcher
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
Y sí, sí: tenéis que darle al link para verla en Youtube. Dejad de quejaros y hacedlo ;-)
37:16
Demo Del AWS Application Load Balancer
Episode in
programar.cloud
Ay sí: el vídeo lleva grabado dos semanas pero la verdad es que en navidades he estado haciendo otras cosas y no encontré el rato para hacer la producción. ¡Pero ya está! En menos de media hora te explico cómo utilizar la última versión del Application Load Balancer de AWS.
No te lo tomes solo como un ejercicio práctico (que lo es). También debería servirte para interiorizar una pieza clave de cualquier arquitectura y si tienes dudas sobre cómo aplicarla no dejes de visitar el episodio anterior sobre cómo escalar a un millón de usuarios
:)
Por cierto, estoy intentando conseguir que los vídeos puedan seguirse como audios con un mínimo de dignidad. ¡Necesito tu feedback! Así que coméntame por aquí o por twitter si te parece práctico generar los dos formatos ¿ok?
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
26:40
Instagram: Escalando A Un Millón De Usuarios
Episode in
programar.cloud
TL;DR: El truco básico para conseguir escalar es añadir más hierro, no hierro más grande. Y cuando lo haces la forma más sencilla de distribuir el tráfico es utilizar balanceadores de carga.
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
Venga, voy a contarte una historia, que hace tiempo que no te explico ninguna. Tiene moraleja, claro: que esto no deja de ser un curso y por lo tanto vas a tener un diablillo detrás de la oreja diciéndote lo que no tienes que hacer y cómo solucionar tus problemas de arquitectura. ¡Pero no se gana el trivial y se triunfa en la tertulia de los amiguetes hablando de escalabilidad horizontal y balanceadores de carga sin más! Así que vamos a hablar un rato de Kevin, Mike y su pequeño proyecto.
35:52
Presentástico: ¿Qué Es Ser Evangelist?
Episode in
programar.cloud
¡Otro crossover! En este caso nada menos que Carles Caño me ha invitado a su podcast Presentástico para hablar sobre mi trabajo como evangelist en Capside. Durante hora y media hemos ido repasando temas que incluyen desde la forma en la que preparo las charlas hasta qué hago para desconectar mientras viajo o qué sucede cuando todo sale mal y treinta personas están mirándote fíjamente.
21:11
¡En El Podcast EntreDevYOps: AWS Vs Azure!
Episode in
programar.cloud
Esta vez han sido los chicos de Entre Dev y Ops los que han tenido el poco sentido común de invitarme a su programa :) Lo cierto es que pasamos un buen rato hablando de mi profesión y de las diferencias principales que hay entre los dos grandes clouds públicos (AWS y Azure). Dadle al play sin miedo.
52:59
Entender CORS
Episode in
programar.cloud
TL;DR: Para que una página web pueda hacer llamadas HTTP a una ruta situada en un dominio diferente al que se usó para descargarla debe pedir autorización primero al servidor del segundo dominio.
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
Dale un retweet al post si depurando javascript alguna vez te has encontrado con el mensaje “Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource blah blah blah enabling CORS.”.
Vale, seguramente tienes una idea de lo que significa y de cómo se soluciona pero en el post de hoy vas a entender la brecha de seguridad que ayuda a evitar y qué es lo que pasa cuando activas CORS en el servidor para evitarlo. Empezamos.
19:07
Cómo Implementar La Seguridad De Tu API (Segunda Parte)
Episode in
programar.cloud
TL;DR: Access key/Secret key es un mecanismo de autentificación muy popular pero JWT tiene ventajas al proporcionar más información sobre el usuario. Puedes centralizar la seguridad utilizando un API Gateway o implementarla en todos y cada uno de tus microservicios.
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
Vale, esta es la segunda parte del post en el que hablo de seguridad
desde el punto de vista del desarrollador. Nos vamos a centrar en explicar tanto el acceso mediante Access Key como los detalles sobre JSON Web Token y hablaremos de las alternativas que tienes a la hora de implementar la autenticación incluyendo el uso de API gateways. ¡No lo pierdas!
23:10
Cómo Implementar La Seguridad De Tu API (Primera Parte)
Episode in
programar.cloud
TL;DR: Basic Auth no es adecuado para autenticar usuarios en APIs. OAuth2 sirve para delegar, no para autenticar. Y todo tiene que ir por TLS. ¡Ah! Y nada de cookies. Ok, ahora me explico con más detalle.
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
Como decía la semana pasada, hoy vamos a hablar de seguridad. ¡La semana pasada! ¿Lo pillas? Ay… en serio, he echado de menos escribiros y espero que vosotros también os hayáis acordado de mi. Para compensar vuelvo con un capítulo súper práctico y detallado que espero que aclare todas las dudas que tienes sobre un pilar fundamental de tu arquitectura como es la seguridad. Vamos a ello.
22:18
¡Estoy En El MS Build - 2!
Episode in
programar.cloud
TL:DR; Herramientas orientadas a creatividad y mucho mucho hololens.
Bueno muchachada, ya ha terminado el Build. Mañana todavía tendremos algunas actividades como una pequeña hackathon de contenedores pero cuelgo el micrófono de corresponsal por el momento.
16:04
¡Estoy En El MS Build!
Episode in
programar.cloud
TL:DR; Estoy en la convención anual de Microsoft, en Seattle. Y no puedo pasar el día sin contaros lo que he ido viendo.
Voy un poco justo de tiempo así que perdonadme que grabe directamente el podcast en lugar de escribir una entrada y luego locutarla. Eso sí, dejadme que incruste algunos tuits relacionados con lo que os explico en la narración.
21:01
Cómo Implementar HATEOAS En Tus APIs
Episode in
programar.cloud
TL;DR: Los hiperenlaces tienen un papel tan importante en las APIs como en las pantallas para humanos y sin embargo casi nunca se implementan correctamente. Te cuento cómo solucionar este problema.
HATEAOS es un término inglés que traducido significa “Estoy desesperado buscando un acrónimo con gancho y no lo consigo encontrar”. Pero detrás esta palabra encontrarás lo que durante veinte años ha sido el core de la web: el hipertexto, los enlaces.
28:35
Cómo Documentar Un Microservicio (SpringRESTdocs)
Episode in
programar.cloud
TL;DR: Genera documentación de forma casi automática, minimizando el repeat yourself casi a cero y estructurándola de forma que tenga sentido y coherencia. ¡Ah! Y llénala de ejemplos, maldita sea. Con Spring REST docs.
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
21:28
Cómo Documentar Un Microservicio (Incluyendo Swagger)
Episode in
programar.cloud
TL;DR: Nos pagan por entregar valor. Invertir tiempo en crear documentos que nadie va a leer no tiene sentido pero publicar un API sin explicar cómo funciona es aún peor. Te cuento cómo encontrar el equilibrio entre ambos extremos y te explico por qué NO usarás Swagger (a medio plazo).
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
29:19
Tests De Integración
Episode in
programar.cloud
TL;DR: Es imposible mantener la calidad del producto si los errores no se detectan inmediatamente. Una de las herramientas más potentes que tienes son los tests.
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
Voy a decirte por primera vez algo: no, no, en realidad llevo dándote la paliza con lo mismo desde el primer post y es que el código tiene que estar en producción para que aporte valor. Y el problema principal que te vas a encontrar si en lugar de una release al mes haces cuatro (o diez, o cien) es que tienes cuatro, diez o cien veces más oportunidades de liarla. Cualquier error que hayas introducido en tu código potencialmente puede terminar impactando al usuario mucho antes y provocar un retraso en cascada de nuevos despliegues. Voy a explicarte cómo evitar esta situación y de paso también te contaré algunas cosas sobre las lechugas.
29:06
Cómo Crear Una API REST
Episode in
programar.cloud
TL:DR; Diseña un API de la misma manera que diseñas una pantalla: pensando en la comodidad de quien la va a utilizar, no en tu conveniencia.
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
Vamos a ponernos el gorrito de un miembro del equipo, en concreto la persona que se haya asignado la tarea de implementar la historia de usuario PROGRESO_CURSOS. ¿La recuerdas del post anterior
? Decía algo así:
Como administrador de cursos deseo poder obtener una visualización global de la utilización de cada curso y unidad didáctica para conocer su popularidad y actuar en consecuencia.* Bien, manos a la obra: tendremos que detectar los recursos a manipular, definir unas rutas HTTP claras para invocar operaciones sobre ellos y generar la respuesta deseada. No problem. O sí.
33:37
Arquitectura Del Primer Proyecto
Episode in
programar.cloud
TL:DR; Se aprende haciendo: aquí tienes la descripción de un pequeño (pero realista) proyecto.
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
¿Qué vamos a hacer? Primero voy a ponerme distintos gorritos para ir presentándote un proyecto. Lógicamente es una caricatura (espero que seas indulgente con los detalles) pero tendrá la suficiente complejidad como para que vayamos practicando los patrones de los que quiero hablar.
18:51
Devops. No, En Serio: Devops.
Episode in
programar.cloud
TL:DR; A ver si lo entendemos de una vez: la herramientas son un medio, no el fin. Devops es más una cultura que un Jenkins generando artefactos sin testearlos.
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
Si me diesen un euro por cada vez que escucho lo de “hacemos devops: mira, tenemos un Jenkins” me podría retirar a Menorca mañana mismo. Casi. Diez o doce euros los tendría seguro. Y qué me dices de esa otra frase de “no, si no necesitamos gente de sistemas, somos devops”. Es señal inequívoca de que la arquitectura y el mantenimiento de la infraestructura es un drama.
El problema es el mismo de siempre: necesitas un nombre para vender (evangelizar) una idea. Algo que aglutine todo lo que quieres transmitir en una única palabra. Y esa palabra tiene que ser lo más potente posible. A veces resulta tan potente que termina canibalizando la idea en sí por muy buena que esta sea y al final solo queda eso, la palabra, vacía y sin contenido: todo el mundo quiere apropiarse de ella y nadie sabe exactamente lo que significa.
Para que te quede más claro voy a contarte algo bastante personal: los detalles de la que fue mi peor experiencia a nivel profesional con diferencia.
17:36
Microservicios En El Mundo Real
Episode in
programar.cloud
TL:DR; Las aplicaciones cloud nativas basadas en microservicios no son una moda o un ejercicio teórico. Los sistemas de Amazon, Netflix, Spotify, Soundcloud, etc se basan en estos patrones.
div.dettached p {
visibility : hidden;
}
div.dettached audio {
position : fixed;
top: 0;
left: 0;
}
✣ (expandir)
alojado en archive.org
(function() {
document
.querySelectorAll('.dettacher')
.forEach(elem = elem.onclick = function() {
var div = this.parentElement.parentElement;
div.className += ' dettached'
});
})();
Quizá no te suene la pantalla que ves arriba. Porque hace unos años te secuestró una nave extraterrestre y acabas de regresar con otras 4399 personas. En caso contrario seguro que has visitado Amazon en alguna ocasión: es el retailer de referencia en el mundo y ya hemos hablado de ellos antes.
Bueno, pues algún detalle extra: ¿cuántos microservicios crees que se coordinan para generar esa pantalla? ¿20? ¿50? Venga, en serio, piensa un número.
16:22
You may also like View more
CAPSiDE Labs #capsideLAB
Updated
CPanPan
Somos un nuevo podcast que trata temas de desarrollo software y metodologías de trabajo aplicadas al mismo.
Participamos:
Juanma (@juanmarodulfo)
Carlos (@Kartalon)
Sergio (@blzkz)
Iconos: www.flaticon.com/authors/good-ware Updated
República Web
República Web es un programa dedicado a todas las personas que se ganan la vida con internet y la tecnología. En el programa se hablará de desarrollo web, herramientas y tecnologías de internet. En definitiva la vida digital que nos ha tocado vivir en la república de la web. Colaboran Javier Archeni, Andros Fenollosa y David Vaquero. Updated



