Finalmente MP3 es gratis

Estándar

Una de las limitaciones que tenía instalar cualquier distribución principal de Linux era que no podía incluír el codec de MP3, porque este estaba protegido por patentes. Claro, siempre era posible descargar por cuenta propia un codec e instalarlo en nuestra PC; ya que es imposible que las autoridades hagan auditoría de todas las máquinas Linux domésticas en búsqueda de software que esté infringiendo patentes. Sin embargo esto es muy fácil de hacer en el ISO de una distribución.

De acuerdo a este extenso y detallado artículo de OSNews, las patentes de estas tecnologías: MP3, MPEG-2, H.264 expiraron el pasado mes de abril. Con lo cuál RedHat ha anunciado que la próxima versión de Fedora incluirá el codificador/decodificador de MP3.

El formato de compresión de audio MP3 revolucionó, o mató dependiendo a quién le preguntemos, el negocio de la música. Pero usarlo en un proyecto ha sido un campo minado desde el punto de vista legal. Muchos proyectos pequeños sencillamente ignoraron cualquier problema de patentes y siguieron adelante. Si por azares del destino un proyecto de este tipo tuvieran éxito, entonces los tiburones de patentes lo notarían e iniciarían una querella legal para tomar una parte de su fortuna.

Es debido a lo anterior que los proyectos de código abierto como Fedora no tenían otra opción que no enviar decodificadores o codificadores MP3 en sus distribuciones ya que enfrentarían a estos avaros abogados de patentes.

Otra consecuencia importante del hecho de que MP3 ya puede ser usado sin estar pagando royalties es que ahora cualquier proyecto de software/hardware puede usar esta tecnología como base para el desarrollo de su modelo de negocio sin temer que cuándo luego de tanto esfuerzo el emprendimiento empiece a dar frutos, no tendrá que compartir su éxito con el propietario de la pante.

Sin embargo, muchos podrían argumentar que la era del MP3 ya había terminado con la llegada de servicios de streaming de audio como Pandora o Spotify. Pero digale eso a cualquier entusiasta de la música con una biblioteca de pistas extraídas de CDs y convertidas a formato MP3 e incluso de LPs digitalizados, todos almacenados en su NAS, probablemente no te creería que el MP3 ha muerto.

Windows 10 S, ¿es una buena idea?

Estándar

La semana pasada ha sido anunciada una nueva versión de Windows, si desean ver todo el keynote de Microsoft, está publicado en YouTube. La pregunta que todos nos hacemos ahora es si un Windows con funcionalidades limitadas y orientado al segmento educativo puede revertir la tendencia de la rápida pérdida de mercado en el sector educativo del gigante de Redmond .

En lo personal creo que uno de los objetivos de Microsoft detras de forzar la instalación de aplicaciones sólo desde el Microsoft Store y que no se pueda cambiar el motor de búsqueda es recuperar la cuota de mercado que tanto Edge como Bing han sufrido a pesar de las mil millonarias inversiones. Sin, embargo esta es una apuesta muy arriesgada ya que los usuarios pueden sentir que adoptar Windows 10 S limita lo que pueden hacer con sus computadoras.

Otro de los potenciales problemas de Windows 10 S, es que Microsoft desea que sea el Sistema Operativo de una generación de laptops baratas de $189. A ese nivel de precio no se puede poner mucho hardware en un equipo, y es sabido que Windows 10 por más optimizado que esté en comparación con versiones anteriores, no funciona bien en equipos de características limitadas. Si se asocia una probre performance con la limitada capacidad de intalar software, pues nos encontramos ante una combinación tóxica difícil de superar.

Muchos ya están llamando a Windows 10 S, un Windows RT 2.0. Cómo todos recordamos esa fue una terrible apuesta de Microsoft por un Windows limitado que pudiera correr en dispositivos ARM. Windows debido a su filosofía es difícil (sino imposible) de portar con todas sus librerías a una arquitectura que no sea Intel, esa es la razón por la cual RT no tuvo éxito. Sin embargo en Windows 10 S, se sigue en la arquitectura Intel, sólo que se apunta a la gama baja en dónde las Google Chrome OS han hecho un gran avance en el sector educativo. Si además consideramos el hecho de que Microsoft dice que por un pago adicional de $50, Windows 10 S se puede actualizar a Windows 10 Pro, pues al parecer lo que está claro es que Microsoft ha puesto alguna limitación por software que remueve cuándo se actualiza la licencia. Entonces por qué las personas tendrían que comprar máquinas de $189 con un Windows 10 S limitado, si por el mismo precio existen en el mercado actualmente versiones con Windows 10 Home Edition.

Sólo el tiempo nos dirá si esta nueva apuesta de Microsoft de reempaquetar un producto existente con algunos cambios y restricciones arbitrarias tendrá éxito.

¿Es aún relevante PHP?

Estándar

¿Si Mark Zuckerberg tuviera que crear facebook este año 2017, volvería a utilizar el LAMP stack para construir su red social? Lo mismo nos podríamos preguntar sobre otros importantes proyectos que usan PHP como Wikipedia, Flickr, Tumblr or WordPress. Lo cierto es que PHP tiene entre nosotros 21 años y ha pasado por varias encarnaciones hasta llegar al actual PHP 7.

En un principio era la opción obvia para aquellos que deseaban desarrollar aplicaciones del lado del servidor de forma rápida y no querían lidiar con la criptica sintaxis de Perl o extensos programas escritos en C/C++. Sin embargo en nuestros días contamos con un gran número de alternativas a PHP como son Ruby, Python or node. Pero, ¿por qué este veterano lenguaje es aún uno de los más usados en la web?

Las estadísticas no mienten, PHP está presente en más del 82.6% de todos los sitios web, según W3Tech, aquí el cuadro comparativo a la fecha de hoy:

Lo llamativo de PHP el lenguaje que se niega a morir, es que a pesar de las críticas de sus detractores cada día PHP sigue evolucionando y añadiendo características nuevas a la par de que trata de mantener lo más posible una compatibilidad hacia atrás que lenguajes más modernos no pueden ofrecer.

Uno de los factores que contribuyen a su omnipresencia en la web es el gran número de CMS (Content Management System) que han sido desarrollados con él, entre ellos podemos mencionar: WordPress, Drupal, Joomla, Magento, Concrete5, TYPO3 entre otros. La comunidad de usuarios es tan grande y tiene tanto peso que hasta Google que se negó en un principio a ofrecer PHP como opción en su servicio AppEngine, ha tenido que ofrecerlo al lado de Go, Python y Java, que eran los lenguajes que deseaba promocionar.

No hay servicio de hosting compartido o servicio PaaS (ejemplo Heroku), que no tenga a PHP entra las opciones. El mercado lo demanda a pesar de que las instituciones educativas lo han desechado para ser enseñado en las aulas. Los programadores PHP son en su gran mayoría autodidactas que aprenden el leguaje tratando de modificar un CMS, ya sea a través de la creación de un plugin, editando directamente parte del código del CMS o creando una webapp usando alguno de sus múltiples frameworks.

La fortaleza de PHP, no es su sintaxis limpia, su consistencia o su paradigma de desarrollo, por el contrario, PHP como lenguaje adolece de todos los defectos posibles. Pero sin embargo, es hasta la fecha lo más rápido que existe del lado del servidor y si has entendido lo más básico de programación estructurada u orientada a objetos, puedes convertirte en un desarrollador PHP muy rápidamente.

PHP no aspira a la perfección, por el contrario sólo quiere ser lo suficientemente bueno para resolver problemas de la vida real. Si este no fuera el caso, el lenguaje ahora estaría enterrado y no sería la envidia de los lenguajes “perfectos”. Aquellos creados en las aula universitarias, con las mejores prácticas en mente y consistentes en su sintaxis.

En un mundo como en el que vivimos, los errores no se perdonan. Cada gran empresa tiene su propio lenguaje que trata de promocionar para tomar la web, por ejemplo Microsoft apuesta con todo a ASP.NET y C#, Oracle lo hace con Java y todo su ecosistema, Google nos ofrece Go. Sin embargo PHP no tiene a nadie detras, más que a sus millones de programadores que a lo largo de todos estos años han aprendido a convivir con sus defectos.

Si vas a aprender a programar, no te recomiendo PHP como tu primer lenguaje. Mejor sigue lo que el programa de estudio de tu universidad o instituto tiene. Pero luego de eso, si es que quieres tener un trabajo, te recomiendo que estudies PHP por tu cuenta, como casi todos los demás desarroolladores de PHP han hecho.

PHP no ha muerto, no está agonizando y si prestamos atención a las estadísticas es muy posible que el primer trabajo que tengas como desarrollador web tenga que ver con este lenguaje. Así que en lugar de hacer campañas para matar un lenguaje que mueve más del 80% de la web que conoces, mejor aprendelo.

No todos los discos SSD son iguales

Estándar

Los discos de estado sólido (SSD=Solid-State Drive) están cayendo rápidamente en precio y la promesa de revitalizar viejas computadoras por una módica inversión está atrayendo a gran cantidad de usuarios a reemplazar sus discos electromecánicos por estos nuevos dispositivos 100% electrónicos. Aunque pudiera parecer que todos son iguales, las tecnologías usadas para su construcción son importantes al considerar la compra de una de estas unidades ya que impactará tanto el rendimiento como la vida útil de estos dispositivos.

Un disco SSD se parece a una memoria flash típica, ya que comprende como esta una matriz de memoria, que incluye un gran número de células o celdas. Cada una de estas celdas de memoria incluye un transistor de efecto de campo de puerta flotante capaz de sostener una carga. Los datos en una celda se determinan por la presencia o ausencia de la carga eléctrica en la puerta flotante.

Las celdas se suelen agrupar en secciones llamadas “erase blocks” ó “bloques de borrado”. Cada una de las celdas dentro de un bloque de borrado puede ser programada eléctricamente de una manera aleatoria cargando la puerta flotante. La carga se puede eliminar de la puerta flotante mediante una operación de borrado de todo el bloques. Ya que sólo se puede borrar una celda borrando a todas las del mismo bloque, de alli proviene su nombre.

Un término utilizado frecuentemente para categorizar “vida útil” de este tipo de meorias es P/E. El P/E (Program/Erase) hace referencia a un ciclo de programación/borrado, cuando los datos se escriben en una celda, se borran y se vuelven a escribir. Los diferentes tipos de memorias flash tienen vidas diferentes o limitan el número de ciclos P/E soportados antes de que la celda falle.

Las limitaciones del ciclo P/E son inherentes a este tipo de memorias flash, y se refieren a los números máximos del ciclo de programación/borrado antes de que la información no pueda ser leida o sea imposible escribir sobre las celdas. Esta es la limitación principal de las memorias flash. Como con cualquier memoria, varias características del semiconductor, densidad fab y el control, determinan la vida útil, velocidad, costo y tasas de transferencia de P/E.

MLC vs. eMLC vs. SLC vs. TLC

Hay cuatro tipos de memorias flash del tipo NAND, que difieren en número de ciclos P/E por ciclo de vida y definen su construcción:

SLC – Celda de un solo nivel (Single-Level Cell): la más cara, la de más larga vida (alto P/E) y generalmente más rápida. Los bits se almacenan sólo como 2 niveles de voltaje. Un “1” o “0.” En SLC se almacenan menos datos por celda, por lo que el coste de almacenamiento por unidad es mayor.
MLC – Celdas multi-nivel (Multi-Level Cell): son las más usadas para el consumo masivo y se utiliza en teléfonos, cámaras y pendrive USB. La carga almacenada en MLC puede interpretarse como una variedad de valores, 0 a 3, o 4 estados posibles, y puede almacenar 2 bits por celda. Con tiempos de vida más cortos, por lo general diez veces menores que los del tipo SLC. La ventaja de esta memoria es que el costo es entre la mitad y la cuarta parte de lo que cuestan los SLC. Pero con velocidades de escritura más bajas. Las memorias del tipo MLC por lo general utilizan algún tipo de código de corrección de errores por bloque.
EMLC – Celdas multi-nivel de grado empresarial (Enterprise Multi-Level Cell): es una celda MLC con vida más larga, generalmente debido a un controlador avanzado que opera las celdas y técnicas de recuperación de errores, densidad de construcción, o alguna combinación de estos dos factores.
TLC – Celdas de triple-nivel (Triple Level Cell): este tipo de memorias es defendida por Samsung, TLC tiene mayores requerimientos de corrección de potencia y error. Además de mayores niveles de desgaste. La TLC está dirigida a entornos con usos de lectura predominantes y no ha sido de uso común. Sin embargo, muchos discos SSD de bajo costo están usando este tipo de memoria.

Arquitecturas NOR vs NAND

Las celdas de memoria de una matriz de memoria EEPROM (memoria de sólo lectura programable y borrable eléctricamente) y una matriz de memoria flash se disponen típicamente en una arquitectura “NOR” o “NAND”:

En la arquitectura NOR, cada celda directamente se acopla a una línea de bits, permitiendo un verdadero acceso aleatorio.
En cambio en la arquitectura NAND, las celdas se acoplan en “cadenas” de celdas, de manera que cada celda se acopla indirectamente a una línea de bits y requiere activar las otras celdas de la cadena para tener acceso a la lectura o escritura.
La memoria flash es un tipo de EEPROM, pero el término EEPROM generalmente se refiere a EEPROM sin flash, donde los datos pueden ser borrados en unidades pequeñas, usualmente bytes. La mayoría de las unidades de estado sólido (SSD), flash USB y tarjetas de memoria utilizan flash NAND. De alli que el borrado, sea por lo general un proceso lento. Sin embargo, es mucho más rápido en flash que en las meorias EEPROM sin flash, debido a los grandes tamaños de bloque utilizados en flash.

Trabajando en Internet

Estándar

Indudablemente el terminar la universidad con un título de ingeniero de sistemas, ingeniero informático o cualquier otro título afín es sólo el primer paso. Más allá de las aulas universitarias existe todo un mundo de posibilidades si es que deseamos tomarlas. Pero tal vez la más socorrida de todas las alternativas es la de freelancer (trabajar en Internet de forma remota) y es allí donde por primera vez muchos descubren un mundo de brutal y salvaje competencia, para el cual la gran mayoría de recién graduados están completamente desarmados.

Las causas de esta situación de indefensión son muchas y entre ellas podemos enumerar entre otras: a las limitaciones propias de las instituciones educativas dónde se estudio  que pueden ofrecer programas de estudio obsoletos, la mala calidad profesional de los catedráticos universitarios y el desconocimiento de los encargados de actualizar los planes de estudio de dichas casas de estudio de la situación del mercado laboral actual. Pero además también dentro de las causas de esta debilidad para enfrentar un mercado laboral saturado y altamente competitivo están las propias de la persona, por ejemplo: el desconocimiento del idioma inglés (hablado y escrito), la poca o casi nula capacidad de aprender por sí mismo y sobre la marcha nuevas tecnologías, la ausencia de capacidades de comunicación tanto oral como escrita y como corolario final las falsas expectativas del recién graduado que cree haber terminado exitosamente el mayor reto de su vida, cuando en realidad está sólo en la línea de partida de una carrera profesional que podría extenderse de 30 a 40 años en el futuro.

Algunos comprenden rápidamente la situación y se adaptan a la nueva realidad, pero muchos otros pasan a engrosar una larga audiencia en busca de cursos en Internet que prometen un trabajo seguro, algo que no existe en los tiempos presentes para nadie.

También están los que emprenden, la mayoría sub-capitalizados y sin un conocimiento de cómo hacer crecer un negocio y como es lógico terminan quebrando antes de los 2 años.

Pero el común denominador para casi todos es trabajar por Internet, ya que los trabajos locales por lo general están muy mal pagados y ofrecen una pobre línea de carrera. Pero trabajar por Internet significa entrar a competir en un mercado global de millones de desarrolladores de cualquiera de estos tipos según James McCaffrey:

Desarrolladores de aplicaciones de escritorio, dónde las dos principales tecnologías en competencia son .Net y Java.

Desarrolladores de aplicaciones móviles, donde las dos principales ecosistemas son iOS y Android.

Desarrolladores de aplicaciones web, dónde hay dos tipos los encargados del frontend (HTML5/CSS/Java) y los del backend donde existen una multiplicidad de lenguajes y frameworks.

Desarrolladores de sistemas, que son aquellos que desarrollan los servicios sobre los que corren otras soluciones, por ejemplo aquellos que trabajan creando sistemas operativos o motores de base de datos.

Desarrolladores de sistemas embebidos, que actualmente se conoce como Internet de la Cosas, pero que siempre ha existido y son soluciones todo en uno para problemas específicos, la domótica es tal vez la rama más conocida de este campo.

Pruebas y automatización, también conocido como QA (Quality Assurance), son los desarrolladores cuya misión es crear programas que prueban la calidad de otros programas y buscan encontrar errores que puedan ser explotados ya sea de forma remota y local. Este campo está muy involucrado en el ethical hacking y la seguridad informática.

Desarrolladores científicos, es históricamente el primer tipo de desarrollador que existió y son aún los mejor pagados. Estos desarrolladores crean sistemas de análisis de datos (Big Data), crean modelos predictivos del clima o de la bolsa de valores y son de todos los desarrolladores listados aquí los que más uso hacen de las matemáticas y otras ciencias exactas.

Desarrolladores de tecnologías emergentes, estos desarrolladores son los que no podemos clasificarlos dentro de ninguna de las categorías anteriores y están creando la siguiente nueva tecnología. Por lo general estos desarrolladores no saben que están creando la siguiente gran revolución.

Pero independientemente de dónde puedas o quieras ubicarte tú en la clasificación de los desarrolladores lo que debes considerar si deseas trabajar en Internet es lo siguiente:

  • Debes dominar el idioma inglés (hablado y escrito) ya que es la forma cómo te comunicarás en un mundo globalizado.
  • Debes de tener sólidos fundamentos teóricos de matemática, algoritmos, estructura de datos y lenguajes de programación. No son un requisito para un trabajo en sí, pero son las bases sobre las cuales puedes aprender rápidamente cualquier nueva tecnología.
  • Debes tener facilidad de palabra y redacción, recuerda que debes emplear buena parte de tu tiempo expresando ideas y consiguiendo que tus pares o jefes comprendan que es lo que propones para resolver un problema.
  • Debes de tener una idea clara de cómo funciona la economía, no es preciso que seas un economista, pero si debes de poder comprender las leyes económicas básicas y cómo estas se aplican al área en la cual decidiste entrar.

Espero que todos estos consejos les hayan sido de utilidad. De ser ese el caso, por favor comparta este post en sus redes sociales.