La historia de Netflix: Eso nunca funcionará.

Netflix

Eso nunca funcionará fue la respuesta de la esposa de Marc Randolph, el fundador de netflix, cuando le contó la idea renta de películas por correo.

Estos son mis aprendizajes del audiolibro https://www.beek.io/libros/eso-nunca-funcionara.

Marc narra cómo nació la idea. Estuvo buscando ideas en su viaje diario al trabajo junto Reed, a quien quería convencer para invertir e iniciar su idea.

En sus ideas iniciales estaba:

  • Comida de perro personalizada
  • Bates de béisbol personalizados
  • Shampo personalizado

Ninguna convenció a Reed, el problema de lo personalizado es que no es escalable, cada solución es única y no se podría llevar a producción masiva, aparte imagina se muere un perro con la comida. Todo el problema de PR que podría haber.

La idea del bate de béisbol es porque su hijo estaba en las ligas menores y en etapa de crecimiento, no todos los bates funcionaban para todos.

El inicio de Netflix

La historia que cuentan del inicio de netflix es que Reed encontró una película (vhs) en su casa y cuándo la devolvió tuvo que pagar una multa de $40. Mas adelante cuenta que no fue tan así, pero que la mantuvieron porque era mágica, era corta y concisa. Permitía a cualquier identificarse con la marca.

Inicialmente era demasiado caro enviar un vhs, pesaba demasiado y peleaban contra gigantes, no era rentable. El DVD era un formato no tan conocido pero hacía bulla. Así que la estrategia fue empezar a comprar todos los dvd’s que hubieran en el mercado para poder decir que tenían todos. Y así tener un ventaja competitiva contra blockbuster.

Lograron alianzas con fabricantes de dvd’s para que incluyeran un sticker de 10 rentas gratis al registrar su código único por reproductor. Algo que fue difícil de conseguir debido a que esas empresas grandes y llenas de burocracia no eran tan flexibles a cambios como una startup. Esto lo vemos hoy en día con stickers de Netflix de dispositivos.

Cualquiera pensaría que al tener una alianza con Sony y toshiba ya sería un gran paso. Resulto que no funciono tan bien, los códigos iban afuera del empaque y cualquiera con una pluma y un papel podría copiar los códigos y canjear sus películas gratis.

No había retención de clientes

El otro gran problema que encontraron es que la gente no regresaba como cliente, no tenían retención. Al inicio vendían y alquilaban dvd’s, y las ventas eran muchos mayores que los alquileres, pero Marc sabia que ese era un callejón sin salida. En el momento que amazon, walmart y cualquier otro gigante del retail vendiera dvd’s les iba a matar el negocio. Netflix quería ser el servicio de renta, no de venta.

Hicieron varias pruebas de envíos al día siguiente. Cuenta que alguien metía todos los pedidos hasta las 3:30pm en su auto, manejaba media ciudad, para luego bajar con una carreta todos los pedidos y llevarlos a la oficina postal para que pudieran ser entregados al día siguiente.

Netflix fue el primero: La clave fue el plan de subscripción

Lo que hizo que resultara la renta de dvd’s fue el plan de subscripción. En un momento desesperado y de no mas tiempo para probar ideas, decidieron probar 3 ideas al mismo tiempo. Recordemos que en esos tiempos no existían subscripciones mensuales, no había streaming ni plataformas para hacerlo.

  • no limites de tiempo de renta
  • pagos único mensual y ver todo lo que puedas
  • y no recuerdo la tercera

El libro es una maravilla narrada, parece un historia de ficción. Si tienen la oportunidad léanlo o escuchen.

El escándalo de Bill Clinton y una película porno

Cuenta la historia de cómo quisieron subirse a la ola del escándalo de Bill Clinton y Monica Lewinsky. Y terminaron enviando una película porno a sus clientes. Se resumen en correr literal para encodear y grabar el juicio de Bil en tiempos record, noche de no dormir y ahorrar tiempo en etiquetas. Enviaron los dvds equivocados. Emitieron un comunicado de disculpa, y que cubrirían el retorno de la película porno. Curiosamente, nadie retorno la película porno.

Otros puntos importantes:

  • En un momento inicial Amazon los quiso comprar pero Reed no le pareció la oferta.
  • Blockbuster les negó la compra cuando estaban pidiendo ser rescatados porque los números no funcionaban.
  • Tuvieron que despedir a mucha de gente inicial porque ya no se podia mantener.
  • Cuando lograron hacer rentable los dvd’s llego el stream. Ya había internet de altas velocidades y accesible para muchos. Tuvieron que tirar todo su sistema de renta y adaptarse. Solo imagen eso.
  • Su cultura se basa en la responsabilidad. Tienen personas adultas y confían en ellos. No importa cómo o cuándo trabajes, pero lo tienes que hacer.
  • Nadie sabe nada. Hay que probar todas las ideas.

Gracias por tomarte el tiempo de leer. No olvides subscribirte y ver otros de mis posts como:

Laravel y el Service Layer

Laravel y Service layer

Recientemente me tope con este termino aplicado a Laravel. Al aprender Laravel desde su documentación te da una guía recomendada y funcional de como usarla de una manera exitosa. Sin embargo su eslogan es:

The PHP Framework for Web Artisans

https://laravel.com/

El framework para artesanos Web. Entonces debemos tomar la documentación como una guía y nada más. El resto esta en nuestras manos de artesanos.

Aquí entra el paso extra del service layer. El proceso de un request http en grandes rasgos es así:

Ahora con el service layer sería así

La idea es separar la parte de la lógica del controlador, logrando así tener responsabilidades únicas en cada elemento, el controlador solo tendrá la tarea de llamar a los elementos necesarios y retornar resultados, convirtiéndose es solo un mensajero, manteniendo una arquitectura de software limpia y fácil de mantener.

Service layer es un patrón de diseño que nos permite no repetir código. Permite abstraer la lógica cuando necesitas usar la lógica con diferentes front end. Permite abstraer la lógica de la aplicación a un servicio común.

Ejemplo

Sin service layer

UsersController.php

<?php

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;

class UsersController extends Controller
{
     public function create(Request $request){
           $validator = $this->validate($request->all(), [...]);

         User::create([
        'email' => $request->get('email'),
        'name' => $request->get('name'),
        'password' => $request->get('password')
    ]);

        return redirect('users')->with('user', $user);
     }
}

Con service layer

CreateUserService.php

public function make(Request $request)
{
   $user = User::create([
     'email' => $request->get('email'),
     'name' => $request->get('name'),
     'password' => $request->get('password')
   ]);
   return $user; 
}

UsersController.php. Inyecta en el nuevo servicio en el constructor.

public function __construct(CreateUserService $createUserService)
{
    $this->CreateUserService = $createUserService;
}

public function store(Request $request)
{
    $this->CreateUserService->make($request);

    return back()->with(['success' => 'Congratulations!']);
}

Así que ahora sabes, puedes crear usuarios desde diferentes lados, por ejemplo un API y un frontend tradicional con blade. O hasta en proyectos con multiples dominios con ui limitadas o diferentes. Ante cualquier cambio solo tendrás que actualizar tu servicio.

El Vue js más util, Laravel Inertia + Vue JS

Yo aprendi a programar usando vanilla JS y jquery, me convertí un gran fan de jquery. Luego surgieron estos frameworks de frontend, angular, react js, vue, svelte, etc. Y cada año surgen nuevos.

Mi primer acercamiento con esto fue un: pero que necesidad de complicar esto, con jquery ya lo hubiera terminado. Porque al inicio había que hacer muchas cosas para hacerlo correr, aparte de la curva de aprendizaje, el paso inicial era raro y complicado.

Para iniciar no era solo incluir un script tag como jquery, literal copias y pegas una linea y ahí esta jquery listo para usar. Necesitaba utilizarlo con npm, más webpack, más un main.js. Claro luego descubrí que si habían mas opciones, que no solo era webpack, y que si habían script tag para angular, etc.

Esta semana me tope con un curso de Platzi sobre Inertia + Vue Js, aplicaciones single page. Era corto y me pareció interesante pues no conocía Inertia.

The Inertia stack provided by Jetstream uses Vue.js as its templating language. Building an Inertia application is a lot like building a typical Vue application; however, you will use Laravel’s router instead of Vue router. Inertia is a small library that allows you to render single-file Vue components from your Laravel backend by providing the name of the component and the data that should be hydrated into that component’s «props».

https://jetstream.laravel.com/1.x/stacks/inertia.html

En resumen Inertia provee una stack para usar vue js template junto a Laravel pero le quita toda la complejidad extra y excesiva (a mi gusto) de las redes en frontend. Permite usar las rutas de laravel ya establecidas y permite enviar parámetros desde php cómo props a las paginas de Vue js.

Esto te da todas las ventajas de Vue js, componentes, reactividad, velocidad, acceso a plugins desarrollados por la comunidad, documentación, etc, etc. Pero con el sistema ordenado y funcional de Php + Laravel. Reduce el tiempo de desarrollo de un api para comunicar frontend con backend. Permite ser una aplicación completamente funcional unificada. Permitiendo un approach fullstack completamente funcional.

Claro, para gustos hay colores, dime que piensas tú de inertia + vue js.

¿Cómo montar mi sitio web? Descripción general

https://colorlib.com/wp/how-to-make-a-website/

Has querido iniciar esa idea de tener un blog, o quieres probar una idea de negocio inicial o solo quiere conocer el proceso, aquí te lo explico.

Todo sitio web tiene al menos 3 partes principales:

Nombre de dominio

Necesitamos una dirección fácil de recordar que describa bien nuestro concepto. Estos nombres de dominios son las direcciones web que conocemos, por ejemplo Mark Zuckerberg o alguien en facebook, en algún momento de su negocio compro facebook.com, en algún momento Steve Jobs o alguien en Apple compro el dominio apple.com.

Como funciona

Los nombres de dominio son la manera fácil de encontrar una página web. ¿Te has preguntado alguna vez como es que el navegador siempre encuentra la dirección correcta? Porque recuerda, las computadoras son identificadas por una dirección, pero no es una dirección con letras, es una colección de números y es conocida como dirección IP. La intención de este post no explicar todo con detalles demasiados técnicos.

Entonces el nombre de dominio lo relacionamos a una dirección IP, en donde estará nuestro servidor, y asi poder mostrar al mundo nuestra idea del billon de dólares.

Estos nombres de dominio lo compras de sitios como godaddy, namecheap, entre otros. Los precios varian desde $1 hasta miles o cientos de dólares. Todo dependen del nombre que busques y si alguien ya lo adquirió y te lo quieren revender.

Servidor

Antes de era «cloud» o de la «nube» si alguien quería una pagina o aplicación web tenía que montar su propio servidor, esto implicaba comprar una computadora bastante poderosa en cuanto a sus especificaciones técnicas, pero no era solo eso, cuando tienen mucho poder, eso significa mucho calor, necesitabas un cuarto especial para el servidor con su propio aire acondicionado, y no basta ahi, esto necesita mantenimiento, necesita rutinas de seguridad y redundancia de datos, y con esto ya suena bastan complicado no?

Por fortuna ya no estamos en esos tiempos. Ahora hay varios servicios «cloud» o en «la nube» donde nosotros alquilamos un espacio es un servidor por una cuota mensual (si, así como netflix) y ellos nos dan una dirección IP donde estarán nuestras cosas. Usando estos servicios no necesitamos preocuparnos de nada técnico, solo pagamos y tenemos acceso. Si te preocupan aspectos mas específicos como seguridad de datos o redundancia de datos ya puedes comprar que ofrecen los diferentes distribuidores de estos servicios. Por mencionar algunos tenemos:

  • AWS
  • Digital Ocean
  • Vultr
  • Linode

Como en cualquier otro mercado o servicio, cada uno tiene sus ventajas y desventajas, sus precios y sus features. El mas barato es vultr con un servicio de $2.5 al mes, que para una fase inicial o pruebas esta bastante bien, no recomendado para uso oficial o en producción.

 

En este punto ya tendríamos un nombre de dominio y una dirección ip (servidor en la nube), pero se necesitan conectar, para esto vamos a la pagina del distribuidor del nombre de dominio y buscamos alguna opción que diga dns manager, o simplemente dns, agregaremos una nueva entrada en los tipos AAA, donde nos pedirá el nombre de dominio a asignar y una dirección IP a asociar. Guardamos los cambios y esperamos. Estos cambios tardan en propagarse, puede ser entre 1 hora a 24 horas.

Ya tendríamos nuestra dirección web funcionando, pero y el contenido?

Pagina web

Dentro de nuestro servidor en la nube, tendremos que instalar nuestro servidor web preferido. Esto es un programa que se encarga de traducir dirección en contenido HTML que tu navegador ya puede presentar con estilo y funciones especificas. Entre estos los mas conocidos y usados son:

  • Nginx
  • Apache

Al combinar estas tres cosas ya tendrás una pagina web funcional. Claro hay muchas mas cosas por ver. Si es una aplicación web, se necesita una base de datos a usar. Si se espera mucho trafico se podría implementar un balanceador de carga. Si se quiere utilizar alguna función en tiempo real se puede implementar una base de datos no relacional como redis. Debería implentarse algun certificado SSL para responder al protocolo HTTPS por seguridad de los datos, hay opciones gratis como lets encrypt. También tomar alguna opción para redundancia y backups de datos. Y muchas cosas más.

Cada caso es único y tiene sus propias particularidades. Si tienes experiencia en estos temas lo recomendado es haz tus pruebas, solo así aprenderás.

Si no tiene experiencia técnica o el tiempo para hacer todo esto te recomiendo buscar asesoría o un experto en el tema, como yo :), puedes revisar mis proyectos en mi cuenta de github o linkedin.

 

Si llegaste hasta aquí gracias por tomarte el tiempo de leer, y déjame tu opinión al respecto, que otro aspecto importante debería tomarse en cuenta.

Hasta la próxima.

Dale un nuevo aire a tu laptop antigua. SSD vrs HDD. The final countdown

Tienes una laptop de hace algunos años atrás que quisieras revivir? La idea es sencilla, reemplaza tu viejo disco duro mecánico (HDD) por uno de estado solido (SDD).

HDD y SDD. Fuente: http://www.laptops4college.com/hdd-vs-ssd-whats-better/

Las diferencias principales son que el disco mecánico funciona con magnetismo, por lo tanto puede generar ruido y vibración pues tiene partes móviles que giran, imaginalo como un toca discos, tiene una aguja que va leyendo la información. Ventajas de este tipo de datos que es mas económico que un SSD. Sin embargo, la velocidad de escritura para un SSD es mas de 4 veces mas rápida que un HDD, este funciona con una combinación de microchips, que podría considerarse como la evolución de las memorias USB.

Lo ideal es llegar a combinar los dos tipos de discos. Esto en una computadora desktop no sería problema, solo se compraría el componente se conecta y ya, pero que pasa si lo que tenemos es una laptop?

Recientemente descubrí este caddy para agregar otro disco a nuestra laptop. La idea es que si nuestra laptop tiene una unidad lectora de discos, puede ser reemplazada con este dispositivo que tiene toda la forma y dimensiones de un lector común pero que en su contenido tendría nuestro disco HDD. ¿Porque usar el HDD en esta ranura y no el SDD? Porque el conector que tiene el lector de discos es tipo SATA 2, que solo puede llegar a 250mb/s, con lo cual limitaríamos la velocidad de nuestro disco SSD que puede llegar a mas de 500mb/s.

 

Si quieres leer un analisis mas amplio te recomiendo el siguiente post https://www.xataka.com/basics/hdd-vs-ssd