Saltar al contenido

El blog de Skatox Entradas

Los 50 años de Microsoft contado por sus 3 CEOs

Hace unos días vi este buen video sobre los 3 CEOs que ha tenido Microsoft a lo largo de sus 40 años. A pesar de que no soy fan de Microsoft (bueno, en mi adolescencia lo era), quedé encantado con este video porque a través de entrevistas con Bill Gates, Steve Ballmer y Satya Nadella podemos ver cómo fue la visión de cada uno de ellos y cómo lideraron una de las compañías más grandes del mundo.

Bill Gates, Satya Nadella & Steve Ballmer on Microsoft in the AI Era | The Circuit with Emily Chang

Me encantó ver la influencia de cada uno de ellos sobre la compañía, es increíble cómo una persona puede llevar la empresa por buen o mal camino, como superar obstáculos y reaccionar al constante cambio del mundo tecnológico. En el video podemos ver las siguientes etapas de Microsoft:

Los inicios: Bill Gates y Paul Allen

Microsoft nace en 1975 cuando Gates y Allen, fascinados por una computadora en la portada de Popular Electronics, desarrollan un lenguaje de programación que se convierte en la base de la empresa. Su visión de “una computadora en cada escritorio y hogar” parecía loca entonces, pero logró que el software fuera accesible y asequible, integrándose en equipos como el Apple II, el TRS-80 y el IBM PC. Un momento clave fue firmar un acuerdo no exclusivo con IBM, lo que permitió a Microsoft licenciar su software a otros fabricantes, consolidando su posición.

La era de Steve Ballmer

Ballmer, quien asumió como CEO en 2000, lideró una etapa de altibajos. Aunque Microsoft dominó con Windows y Office, perdió terreno en áreas como búsqueda (Google), móviles (Apple) y redes sociales. Su decisión de apostar por Xbox y el inicio del desarrollo de Azure, liderado por Satya Nadella, fueron aciertos importantes. Sin embargo, la empresa enfrentó críticas por tácticas agresivas, incluyendo un juicio antimonopolio en los 90 por integrar su navegador con Windows.

Satya Nadella y la reinvención

Nadella, CEO desde 2014, transformó Microsoft al enfocarse en la nube y la IA. Su apuesta por Azure y la alianza con OpenAI (inversión de $13 mil millones) revitalizaron la empresa, llevándola a ser parte de las “magnificent seven” en Wall Street. Nadella rompió con la obsesión por Windows, fomentando una cultura de apertura a productos de competidores y priorizando la relevancia a largo plazo. Sin embargo, el video señala que Microsoft aún lucha por conectar con consumidores jóvenes, quienes prefieren productos de Google o Apple.

El futuro: IA y desafíos

Microsoft está invirtiendo fuertemente en IA, con $80 mil millones destinados a centros de datos. Mustafa Suleyman, líder de la división de IA para consumidores, busca hacer de Copilot un producto tan esencial como Excel, con un enfoque en experiencias personalizadas y humorísticas. Sin embargo, hay preocupaciones sobre el impacto de la IA en empleos, especialmente para desarrolladores junior, y sobre cuestiones de privacidad y seguridad. Nadella y Gates reconocen que la IA es una herramienta poderosa pero también un arma potencial, lo que requiere un enfoque cuidadoso para maximizar beneficios y minimizar riesgos.

En fin, te recomiendo ver el video y si te ha gustado, recuerda compartir este contenido para que llegue a más personas.

Deja un comentario

Mi experiencia con mi nuevo proyecto de software libre: KIM6 para Plasma 6

En esta entrada quiero compartir mi aventura actualizando KIM (KDE Image Manipulator) a KDE Plasma 6, que ahora terminó siendo mi nuevo proyecto de software libre llamado KIM6 (poco creativo el nombre). Este proyecto no es solo un fork de un proyecto clásico, sino una misión para traer de vuelta una herramienta que he usado por más de 15 años y que, con las actualizaciones de KDE, necesitaba actualizaciones de compatibilidad.

KIM6 en acción
KIM6 en acción

Por qué decidí revivir KIM

KIM siempre ha sido mi método favorito para administrar las imágenes importadas desde mi cámara o celular, me parece que es muy fácil de acceder y usar, además sus scripts me han facilitado la vida: redimensionar fotos, convertir formatos, crear presentaciones de diapositivas… ¡todo desde el menú contextual! Pero con el tiempo, el proyecto original quedó abandonado, y las actualizaciones de KDE —de KDE 3 a KDE 4, luego a Plasma 5, y ahora a Plasma 6— se rompieron cosas. Nunca imaginé que terminaría haciendo un fork, pero aquí estoy, ¡y ha sido una gran experiencia!

El proceso fue un reto: adaptar scripts antiguos a un entorno moderno, entender cómo KDE ha evolucionado y asegurarme de que KIM no solo funcione, sino que funcione como debe ser en Plasma 6. Cada transición trajo sus desafíos: en KDE 4, el cambio de Konqueror a Dolphin como administrador de archivos predeterminado; en Plasma 5, ajustes en APIs; y en Plasma 6, una nueva nomenclatura de servicios. Pero la base de KIM sigue siendo sólida, y eso me permitió modernizarla sin perder su esencia.

Un viaje técnico y nostálgico

Actualizar KIM fue como abrir una cápsula del tiempo. Me encantó sumergirme en el código, ver cómo funcionaba en los días de Konqueror y adaptarlo al mundo de Dolphin. Las herramientas de configuración han cambiado, los nombres de los servicios también, pero el corazón de KIM —hacer que la gestión de imágenes sea rápida y sencilla— sigue intacto. Fue un desafío técnico, sí, pero también un recordatorio de cómo la tecnología evoluciona y cómo proyectos como este pueden seguir siendo relevantes con un poco de amor y esfuerzo.

¿Qué hace a KIM6 tan especial?

KIM no es solo un conjunto de scripts, es una solución completa para cualquiera que use KDE y trabaje con imágenes. Imagina esto: estás en Dolphin, haces clic derecho en una foto, y boom, puedes:

  • Redimensionar y comprimir imágenes para ahorrar espacio.
  • Rotar o convertir a diferentes formatos en segundos.
  • Procesar en lote para ahorrar tiempo con múltiples archivos.
  • Exportar para la web con optimización automática.
  • Crear presentaciones de diapositivas sin complicaciones.
  • Renombrar y organizar tu colección de imágenes como un pro.

Todo esto, integrado directamente en el menú contextual de Dolphin. Si usas KDE Plasma, KIM es la herramienta que no sabías que necesitabas, pero que ahora no querrás soltar.

Únete a mejorar KIM6

KIM6 está alojado en GitHub, y es un proyecto de código libre donde todos son bienvenidos. ¿Eres desarrollador? ¿Traductor? ¿O simplemente quieres sugerir ideas? ¡Tu aporte puede hacer la diferencia! Clona el repositorio, crea una rama y envía tu pull request. Entre todos podemos llevar KIM6 al siguiente nivel.

Y si quieres apoyar este esfuerzo, considera hacer una donación vía PayPal. Cada contribución me ayuda a dedicar más tiempo a mejorar KIM6 y mantenerlo actualizado para la comunidad: Dona vía PayPal.

Mi recomendación: ¡Prueba KIM6 hoy!

Si usas KDE Plasma, KIM es una joya que hará tu vida más fácil. Instalarlo es tan simple como ejecutar sudo ./install.sh, y en minutos tendrás un arsenal de herramientas para imágenes al alcance de un clic. Visita el repositorio en GitHub y prueba KIM6.

Este fork no solo es un rescate técnico, es mi forma de devolverle a la comunidad de KDE algo que me ha acompañado por años. Espero que KIM6 te encante tanto como a mí.

¡Descárgalo, úsalo y comparte tu experiencia!

Deja un comentario

Entrevista a Linus Torvalds por los 20 años de GIT

Esta semana me topé con una entrevista a Linus Torvalds publicada en el canal oficial de GitHub. Sí, GitHub, esa empresa que todos usamos para subir proyectos, colaborar con otros desarrolladores y —desde hace unos años— propiedad de nada más y nada menos que Microsoft.

Eso ya de por sí es loquísimo. Porque si llevas algunos años en este mundo, recordarás que Microsoft y Linux eran enemigos jurados. No era secreto que Microsoft quería eliminar a Linux del mapa (y no lo digo yo, lo decían ellos: Linux is a cancer, ¿recuerdan?). Y ahora, GitHub, una empresa de Microsoft, entrevista tranquilamente al creador del kernel de Linux y también de Git. Cosas que hace una buena estrategia de relaciones públicas y una industria que cambia.

Sobre la entrevista a Linus Torvald

La entrevista a Linus Torvalds no es técnica ni larga, pero tiene esos momentos que uno agradece como dev. Uno de los que más me llamó la atención fue cuando comentó que a su hija cuando preguntan por su padre, les dicen que es el creador de GIT y rara vez le comentan que es creador de Linux.

Y sí, qué fuerte. Porque aunque Linus haya creado el kernel que está en Android, servidores, supercomputadoras, y hasta en mi router, la nueva generación lo ubican más por esa herramienta que usamos todos los días para hacer git commit -m "arreglo urgente".

Eso nos dice algo: la tecnología evoluciona, y con ella también lo que recordamos. Para muchos, Git se volvió el punto de entrada al mundo del desarrollo, y GitHub su cara más visible. Así que no es raro que la nueva generación relacione más a Linus con el control de versiones que con el sistema operativo que revolucionó todo.

En la entrevista a Linus Torvalds, también hay reflexiones sobre cómo trabaja, cómo piensa, y sobre esa extraña contradicción de ser el líder de un proyecto de millones de personas… pero sin querer hablar mucho con ellas. Directo, al grano, sin adornos: puro Linus.

Two decades of Git: A conversation with creator Linus Torvalds

Si tienes unos minutos, te recomiendo ver el video completo. Es corto, relajado, y te deja con esa sensación de que estamos viviendo una época que hace 10 años era impensable: Microsoft abrazando el open source, GitHub entrevistando a Linus, y Linux siendo más relevante que nunca, aunque algunos solo lo recuerden por Git.

¿Ya viste la entrevista? ¿Qué opinas tú? ¿Conocías más a Linus por Git o por Linux? Déjame tu comentario, me encantaría saberlo.

Gracias por leer hasta el final.
Happy Hacking! 🐧💻

Deja un comentario

Class already exists en PHPUnit

Esta semana en el trabajo me topé con un error de Class already exists en PHPUnit. El cual me sorprendió porque no tenía mucho sentido:

Mockery\Exception\RuntimeException: Could not load mock class MiClase: class already exists

Entonces lo primero que pensé fue: “¡¿Cómo que ya existe si lo acabo de crear?!”. En mi trabajo estábamos creando una serie de pruebas unitarias (como siempre me ha gustado) para una nueva funcionalidad bastante grande, y usamos Mockery como herramienta para simular el comportamiento de clases y objetos. Si no lo conoces, Mockery es una librería para PHP que permite crear mocks, stubs y spies para probar clases de forma aislada, sin tener que depender de la implementación real.

¿Qué es un mock?

Tal vez te preguntes, ¿qué es eso de un mock? Bueno, imagina que tienes una clase llamadaServicioFactura que depende de ServicioCorreo para enviar correos. Pues resulta que cuando haces pruebas unitarias, no quieres que se envíen correos reales (que ningún usuario, inclusive el que está probando, reciba 30 notificaciones de prueba), tanto por costo, como por rendimiento y porque no se esta probando los correos. Entonces usas un mock de CorreoService que simula su comportamiento: no manda correos, pero finge que sí, y hasta puedes verificar si fue llamado o no. Bien útil. De esta forma, cuando se ejecuta la prueba, se ejecutará el mock e intercepta las llamadas y simula el comportamiento original.

Cómo solucionar: Class already exists en PHPUnit

Volviendo al error de Class already exists en PHPUnit, en el fondo, lo que pasaba es que tenia un conflicto con la instancia de un mock ya definido, es decir, habia definido un mock de una instancia de esa clase y aparte otro para la clase. . Si te estás preguntando qué es un mock de una instancia, son algo como esto:

$mock = mock('overload:' . MI_CLASE_MOCKEADA::class);

Cuando mezclas un instance mock con un mock normal, lo que en realidad estás haciendo es intentar redefinir la misma clase dos veces. Y eso ocasiona el error mencionado.

La solución a largo plazo es refactorizar ese código viejo para que nuestros tests no dependan de instance mocks. Pero la solución rápida y sencilla, es ejecutar cualquier prueba que use un instance mock en un proceso separado. PHPUnit hace esto muy fácil con una simple anotación:

/**
 * @runInSeparateProcess
 * @preserveGlobalState disabled
 */
public function pruebaQueIncluyeLosMockupsDeInstancia(): void
{
    // código con los mocks de instancia
}

Ya con eso deberías poder ejecutar la prueba, si necesitas mas información puedes ver la documentación oficial de PHP.Unit. Y si sigues con el problema, puedes probar con cerrar los mocks después de cada test con:

protected function tearDown(): void
{
    Mockery::close();
}

Palabras finales

¿Te ha pasado algo parecido? ¿Tienes otra solución o teoría? ¡Déjamelo en los comentarios, me encantaría leerte!

Gracias por leer hasta el final. Si te encontraste con el error Class already exists en PHPUnit y llegaste hasta aquí buscando respuestas, espero que esto haya sido útil.

Happy Testing! 🧪✨

Deja un comentario