El uso y abuso de las redes sociales

Estándar

El día de ayer (13 de junio) la compañía de seguridad japonesa, ha hecho público un informe con datos alarmantes como que destruir la credibilidad de un periodista puede costar tan poco como $50,000 y crear noticias falsas por un año para influir en unas elecciones puede costar $400,000.

El informe de 77 páginas está disponible para su descarga y muestra datos que sorprenden sobre lo fácil que es para alguien con dinero comprar un perfil falso con hasta 300,000 seguidores. El informe explora varios sitios web donde los clientes pueden comprar servicios que van desde “desacreditar a los periodistas” hasta “promover protestas callejeras”.

En el blog de corporativo de Trend Micro hay una muy clara explicación de cómo funciona el ciclo de las noticias falsas y estas se realimentan entre si de una forma tóxica:

Las noticias falsas pueden parecer nuevas, pero la plataforma utilizada es la única novedad. La propaganda ha existido por siglos y el Internet es solamente el último medio de comunicación en ser abusado para esparcir mentiras y desinformación.

Asi como triángulo de fuego que representa los tres elementos que un fuego necesita  para arder: oxígeno, calor y un combustible. Del mismo modo, las noticias falsas requieren tres elementos diferentes para tener éxito. Éstos representan colectivamente el triángulo de falsificación de las noticias: sin ninguno de estos factores se puede alcanzar al público objetivo.

El primer requisito: las herramientas y servicios para manipular y difundir el mensaje a través de redes sociales relevantes, muchas de las cuales se venden en varias comunidades en línea de todo el mundo. Una amplia variedad de herramientas y servicios están disponibles, […]

Por supuesto, para que estas herramientas sean utilidad, las redes sociales tienen que existir como una plataforma para difundir propaganda. Con la gente pasa más tiempo en estos sitios para obtener las últimas noticias e información, su importancia en la difusión de noticias falsas no se puede subestimar. Sin embargo, hay una diferencia entre simplemente publicar propaganda y convertirla en algo que el público objetivo consume. […]

[…]

Finalmente, la campaña de propaganda siempre viene con la pregunta: ¿por qué? Las motivaciones detrás de la falsa noticia: a veces es simplemente un deseo de ganar dinero a través de la publicidad. En otros casos, los objetivos pueden variar de lo criminal a lo político. Independientemente del motivo, el éxito de cualquier campaña de propaganda se basará en última instancia, en lo mucho que afecta al mundo real.

Aunque el informe no detalla los lugares dónde se pueden comprar estos servicios criminales por obvisa razones, no hay razón para pensar que los datos que se muestran son falsos o exagerados. Por el contrario, me parece increíblemente barato el costo de crear una “celebridad”. Aquí les dejo un gráfico extraido del informe dónde explica la dinámica de como crear un perfil de redes sociales con 300,000 seguidores:

Lo sorprendente es que sólo costaría $2,6000 conseguir falsificar un pefil de dichas características. Será por ello que políticos corruptos en todo el mundo pueden mostrar abultadas cifras de seguidores en Twitter or Facebook, a pesar de ser tremendamente impopulares y si se quiere hasta odiados.

 

Huawei anuncia el Honor 9 en China

Estándar

El sucesor del Honor 8, un smartphone bien recibido internacionalmente, ha llegado. La filial de Huawei dio a conocer el Honor 9 en China el día de ayer y el smartphone oficialmente saldrá a la venta en China este viernes 16 de junio por unos 320 dólares.

Lo más probable es que se lance oficialmente de manera internacionalmente por un precio más alto a los $320 que cuesta en el mercado chino en un futuro próximo.

El Honor 9 cuenta con muy buenas especificaciones técnicas: una pantalla full-HD de 5.15″, 1920 x 1080 píxeles, un procesador Kirin 960, y hasta 6 GB de RAM y 128 GB de almacenamiento interno. Tiene un sistema de doble cámara que utiliza sensores de imagen de 20MP y 12MP para proporcionar zoom óptico de 2X o efectos estilo bokeh, similar a los ofrecidos por el iPhone 7.

Otras características incluyen una batería de 3.200 mAh, un chasis de metal y respaldo de cristal, una toma de auriculares de 3.5mm, soporte para redes WiFi 802.11ac, 4G LTE y NFC.

Honor 9 ofrecerá un modelo con 4GB de RAM y 64GB de almacenamiento interno, así como otros dos modelos de 6GB/64GB y 6GB/128GB.

Huawei y Honor son prácticamente las únicas compañías que usan procesadores Kirin en sus smartphones, lo que tiene sentido ya que son ellos quienes los desarrollan internamente. Sin embargo, los benchmarks sugieren que los últimos procesadores de gama alta Kirin son competitivos con los últimos chips de alta gama de sus competidores como Qualcomm o Samsung.

En general, el Honor 9 es el tipo de smartphone que te hace preguntarte por qué alguien iba a gastar $700 o más en un smartphone de gama alta. Sin embargo el honor 9 no es un dispositivo sin compromisos. Tiene una resolución de pantalla más baja que algunos dispositivos de gama alta, dónde es común la resolución 2K. Y aunque viene con Android 7.1, el software cuenta con la muy criticada interfaz de usuario de EMUI de Huawei.

Más detalles sobre el equipo pueden ser encontrados en los portales PhoneArena y GizmodoChina.

Lenovo anuncia el nuevo Moto E4 & Moto E4 Plus

Estándar

Lenovo ha revelado los detalles oficiales de sus nuevos teléfonos Moto de nivel básico, estos son el Moto E4 y el E4 Plus. Como se rumoreaba, el E4 Plus viene con una batería de 5,000 mAh y una pantalla HD de 5.5 pulgadas. La compañía afirma que el tamaño de con esta batería el celular puede operar casi dos días sin ser recargado. El E4 Plus también está equipado con una cámara trasera de 13 megapíxeles, una cámara delantera de 5 megapíxeles para selfie, y un procesador de cuatro núcleos Spandragon 425.

El Moto E4  es más pequeño debido a que reduce el tamaño de la pantalla a las 5 pulgadas (un poco pequeño para mi gusto) y cuenta con una batería de 2,800 mAh. La cámara trasera del Moto E4 es de menor capacidad, con una resolución de 8 megapíxeles. La cámara frontal ofrede la misma resolución 5 megapíxeles. El E4 viene en colores negro u oro, mientras que el E4 Plus se ofrece en un color adicional: navy. Ambos teléfonos vienen en un acabado de metal, y usaran Android Nougat como sistema operativo.

El E4 y el E4 Plus están disponibles por $129 y $179 respectivamente. Lenovo dice que se venderán en “varios países”, aunque no especificó en cuales. El E4 también se espera que sea vendido como un teléfono exclusivo del programa Amazon Prime, sin embargo Amazon ofrecerá los precios y los detalles posteriormente.

Estos celulares ofrecen una buena relación precio/prestaciones, durante un tiempo use el Moto E de segunda generación y definitivamente para el precio era un celular aceptable, aunque los lags en algunas aplicaciones, especialmente en juegos era notorio. En cuánto Amazon publique los detalles del Moto E en su programa Amazon Prime, compraré uno para ver que tanto han mejorado.

MOTO E4

Los desarrolladores front-end pueden ser cosa del pasado gracias a la IA

Estándar

Todos sentimos una mezcla de fascinación y tristeza al revisar las listas de trabajos que están a punto de desaparecer gracias a los avances de la IA (Inteligencia Artificial) o los sistemas robotizados, entre ellos jugadores de Go, conductores de camión, trabajadores de almacén, taxistas, trabajadores de entrega de paquetes y al parecer recientemente desarrolladores front-end. Sí los desarrolladores front-end están ahora en la lista de trabajos que no veremos en los próximos años.

Resulta que Tony Beltramelli de UIzard Technologies acaba de publicar un artículo y un video de su projecto pix2code. La idea básica de este proyecto es bastante simple aunque pueda parecer en un principio sorprendente. Tomar una red neuronal y mostrarle la imagen de una interfaz de usuario y entrenarla para que pueda producir el código fuente que crea dicha interfaz de usuario. Usted puede entrenar la red para una diversa gama de sistemas diferentes – iOS, HTML y así sucesivamente. El truco para ser multilingüe es usar un DSL (Domain Specific Language) para cada plataforma en particular, que describe la interfaz de usuario y luego se compila en el lenguage de la plataforma de destino. Por lo tanto, la red neural sólo debe ser entrenada para una representación del lenguaje DSL que se adapta a cada plataforma.

Aunque el código fuente aún no está publicado, hay un proyecto en Github del autor dónde indica que lo publicará, lo mismo que los datasets que ha usado para las conferencias NIPS de este año, a realizarce entre el 4 y 9 de diciembre.

Por lo pronto como una muestra, ha subido un video a YouTube en dónde se puede ver cómo dándole una imagen al programa pix2code e indicándole a que plataforma debe de generar el front-end, produce todos los archivos de código fuente necesarios, aquí el video:

 

Para más información sobre esta tecnología además del website del autor, también se pueden visitar los artículos de Wired UK & The Next Web, que contienen información adicional.

Google le dice adios a Native Client y apuesta por WebAssembly

Estándar

Google acaba de anunciar que Chrome ya no admite código nativo en forma de PNaCl. En su lugar seguirá el ejemplo de los otros fabricantes de navegadores y se basará en WebAssembly para obtener un código rápido. En pocas palabras, WebAssembly ganó.

Una aplicación web nativa es cualquier cosa que se compila con el código máquina nativo del sistema en el que se está ejecutando: no hay máquinas virtuales o código de bytes y no hay intérpretes. Por supuesto, esta definición es muy vaga porque la línea entre un intérprete y un compilador just-in-time es muy fina. Sea cual sea la definición, una aplicación nativa es la que se ejecuta rápidamente – lo más rápido posible – de ser posible directamente en el hardware. Los navegadores ejecutan JavaScript que ha mejorado en velocidad a lo largo de los años, pero sigue siendo mucho más lento que el código nativo. Para permitir que Chrome ejecute aplicaciones nativas, en el 2011 Google anunció NaCl (Native Client). La idea era que el código compilado se pudiera ejecutar en un sandbox proporcionado por Chrome. Se permitió a dichos programas “nativos” ejecutar en el navegador a toda velocidad y Google lo probó lanzando algunos juegos.

A los programadores que les gustó realmente y había inicialmente un mucho entusiasmo en esta plataforma. Entonces el gran problema se hizo evidente. NaCl era una característica exclusiva de Chrome y parecía improbable que otro navegador adoptara dicha tecnología. Una versión mejorada del NaCl fue lanzada en 2013, PNaCl. Esta versión usaba un código intermedio portátil que permitía que las aplicaciones nativas funcionaran en un navegador que trabajaba en un hardware muy diverso.

Incluso los programadores que pensaban que PNaCl era bueno, o al menos una buena oportunidad de obtener sus programas C/C ++ en la web, no podían evitar llegar a la conclusión de que sus proyectos iban a ser etiquetados como: “Sólo funciona en Chrome”.

Otros fabricantes de navegadores, Mozilla en particular, expresaron la opinión de que el código nativo en el navegador era un gran error y un caso de pensamiento pasado de moda. El futuro era HTML5 y tecnologías similares. Como resultado el apoyo para PNaCl de los programadores comenzó a desaparecer. Luego apareció asm.js y subsecuentemente WebAssembly – ambos diseñados para hacer que JavaScript fuera más rápido. En este punto, incluso Google debe haber comenzado a pensar que PNaCl no era tan buena idea.

El año pasado el equipo de PNaCl se dispersó, pero el proyecto continuó como uno de fuente abierta. Ahora tenemos la palabra definitiva de que el PNaCl está muerto en lo que se refiere a Google:

Eliminaremos el soporte para PNaCl en el primer trimestre de 2018 en todas partes, excepto en Chrome Apps y Extensiones. Creemos que el ecosistema alrededor de WebAssembly hace que se ajuste mejor para las aplicaciones web de alto rendimiento nuevas y existentes y que el uso de PNaCl es suficientemente bajo como para justificar la decomisión del mismo.

¿Fue WebAssembly quien mató a PNaCl?

El problema es realmente confuso, ya que PNaCl todavía va a ser compatible con ChromeOS. Esto se debe a que proporciona la única forma de ejecutar código nativo en Chromebooks. Esta no es una buena situación para Google y es probable que también este soporte quede obsoleto en un futuro no muy lejano. Después de todo, quién va a pasar el tiempo trabajando en una aplicación PNaCl para ChromeOS, considerando que la tecnología ya no es parte de Chrome.

Google ha preparado algunas ayudas para la migración a WebAssembly, pero esencialmente todo lo que se debe hacer es recompilar el código C/C++ a WebAssembly después de cambiar todas llamada PPAPI a las API web estándar. Obviamente habrán tecnologías que WebAssembly no va a soportar un tiempo, si es que alguna vez llega a soportarlas.

El anuncio anima de esta forma a los programadores a pasar sus aplicaciones a WebAssembly:

Con el lanzamiento de WebAssembly, la plataforma web ha ganado una base para una nueva generación de aplicaciones web rápidas e inmersivas que se ejecutan en cualquier navegador. ¡Estamos emocionados de ver lo que los desarrolladores crean a continuación!

Muchos desarrolladores comentan que migrar a cualquier tecnología basada en JavaScript no es para ellos. Algunos dan razones racionales, como que WebAssembly es demasiado lento, pero sobre todo hay una profunda aversión de al lenguaje de programación JavaScript y por lo tanto cualquier cosa basada en el. El problema más grande que tiene WebAssembly es que sigue siendo inmaduro y tomará tiempo para que se desarrolle hasta el punto en que es iguale a PNaCl, pero por ahora Google está a bordo, deberíamos ver esto como un progreso hacia un lenguaje cross-browser viable que está más cerca a velocidades de ejecución nativas.

¿Vampiros en Silicon Valley?

Estándar

En el penúltimo capítulo de la comedia televisiva Silicon Valley de HBO, el egocéntrico magnate Gavin Belson en medio de una reunion con los protagonistas para definir el lanzamiento de la start-up que han fundado para crear una nueva Internet, se somete a una transfusión de sangre de un jóven rubio. El procedimiento es experimental y se llama parabiosis, más próximo a una pseudo ciencia que una real solución al problema del envejecimiento. Yo pensaba que era sólo una broma, que realmente eso no existía, que los guionistas de la serie habían exagerado un poco con respecto a las aspiraciones de los magnates de Silicon Valley.

Imaginen mi sorpresa cuándo en un artículo de Vanity Fair, encontré la referencia a una start-up de Silicon Valley que vende transfusiones de jóvenes saludables (no necesariamente rubios) por $8000. La empresa se llama Ambrosia (término griego que hace referencia a lo que los dioses beben o comen y que es la fuente de su eterna juventud). Su fundador Jesse Karmazin afirma que su compañía que compra la sangre de donantes saludables menores de 25 años, ya tiene más de 100 clientes que pagan por dicho tratamiento.

Karmazin se inspiró para fundar Ambrosia despues de leer unos estudios en los cuales unos investigadores habían unido a dos ratones por sus venas. De acuerdo a dicho estudio algunos de los aspectos del envejecimiento, podrían revertirse cuando los ratones más viejos reciban sangre de los más jóvenes, pero otros investigadores no han podido replicar estos resultados y los beneficios de la parabiosis en humanos siguen siendo poco claros. “Creo que los datos animales y retrospectivos son convincentes, y quiero que este tratamiento esté disponible para las personas“, dijo Karmazin al MIT Technology Review.

Aunque Karmazin enfatizó en la Code Conference que el objetivo de Ambrosia no es curar o revertir el envejecimiento de forma explícita en humanos, informa que sus clientes ven mejoras positivas relacionadas con enfermedades cardíacas, cáncer y enfermedad de Alzheimer, informó el jueves la revista New Scientist. “No quiero decir la palabra panacea, pero aquí hay algo acerca de los jóvenes“, dijo Karmazin a New Scientist. Sin embargo, los científicos no han identificado un vínculo fiable entre las transfusiones de sangre de los jóvenes y los beneficios tangibles para la salud. “No hay evidencia clínica [que el tratamiento será beneficioso], y usted está básicamente abusando de la confianza de la gente y la emoción pública alrededor de esto“, ha declarado Tony Wyss-Coray neurocientífico de la Universidad de Stanford , que llevó a cabo un estudio de 2014 de transfusiones de plasma de ratones jóvenes. Más detalles sobre el estudio pueden encontarse aquí.

Aún no está claro si el mismo Thiel está recibiendo tales transfusiones de sangre. Pero el año pasado la revista Inc. informó que un empleado de Thiel Capital había expresado previamente su interés en la técnica a Karmazin, y Gawker publicó basado en un rumor, afirmando que Thiel “gasta $ 40,000 por trimestre para obtener una infusión de sangre de un niño de 18 años basada en una investigación realizada en Stanford en la extensión de la vida de los ratones“. Pero si Thiel está experimentando con parabiosis, no es con Ambrosia. Karmazin dijo a Code Conference el miércoles que Thiel no es un cliente, y que su start-up es actualmente la única compañía estadounidense que vende las transfusiones.

Lenguajes JVM

Estándar

Cuándo apareció Java hace ya 22 años, también apareció el JVM (Java Virtual Machine), la máquina virtual capaz de correr en cualquier sistema operativo y que le otorga a Java su capacidad de ser escrito sólo una vez y poder ejecutar el bytecode en casi cualquier sistema operativo moderno. Pero Java no es el único lenguaje de programación que puede generar bytecodes para el JVM, es más hay todo un gran número de lenguajes de programación que permiten hacer exactamente lo mismo, dentro de ellos el actualmente muy popular Kotlin. Este post es sobre estos lenguajes de programación que generan bytecodes para JVM.

Scala, es un lenguaje de programación de uso general que proporciona soporte para la programación funcional y fue uno de los primeros lenguajes JVM y su objetivo fue resolver muchas de las críticas de Java.

El código fuente de Scala está destinado a ser compilado al bytecode de Java, de modo que el código ejecutable resultante se ejecute en una máquina virtual Java. Scala proporciona interoperabilidad del lenguaje con Java, de modo que las bibliotecas escritas en ambos idiomas pueden ser referenciadas directamente en código Scala o Java. Al igual que Java, Scala es orientada a objetos, y utiliza una sintaxis que usa llaves que recuerda mucho al lenguaje de programación C. A diferencia de Java, Scala tiene muchas características de lenguajes de programación funcionales como Scheme, Standard ML y Haskell, incluyendo currying, inferencia de tipos, inmutabilidad y concordancia de patrones. También tiene un sistema de tipo avanzado que soporta tipos de datos algebraicos, covarianza y contravariancia, tipos de orden superior (pero no tipos de rango superior) y tipos anónimos. Otras características de Scala no presentes en Java incluyen la sobrecarga del operador, los parámetros opcionales, los parámetros con nombre, las cadenas sin formato y las excepciones no verificadas.

El nombre Scala es una mezcla de las palabras escalabilidad (scale) y lenguaje (language) en inglés. Lo que significa que está diseñado para crecer con las exigencias de sus usuarios.

Groovy, es otro lenguaje JVM y está creado en base al paradigma de la programación orientado a objetos para la plataforma Java. Es un lenguaje dinámico con características similares a las de Python, Ruby, Perl y Smalltalk. Se puede utilizar como lenguaje de scripting para la plataforma Java, se compila dinámicamente al bytecode de la máquina virtual Java (JVM) y se interopera con otras bibliotecas y código Java. Groovy utiliza una sintaxis similar a Java. La mayoría del código Java también es válido sintácticamente en Groovy, aunque la semántica puede ser diferente.

Groovy 1.0 fue lanzado el 2 de enero de 2007 y Groovy 2.0 en julio de 2012. Desde la versión 2, Groovy también se puede compilar de forma estática, ofreciendo inferencia de tipo y mejoras de rendimiento con respecto de Java.

Fantom, es un lenguaje de programación orientado a objetos de uso general creado por Brian y Andy Frank que se ejecuta en una JVM, pero también en JavaScript y .NET Common Language Runtime, sin embargo el soporte de .NET se considera estatus de “prototipo”. Su principal objetivo de diseño es proporcionar una API de biblioteca estándar que abstrae la cuestión de si el código se ejecutará en última instancia en el JRE o CLR. Al igual que C # y Java, Fantom utiliza una sintaxis de llaves. El lenguaje apoya la programación funcional a través de cierres y concurrencia a través del modelo actor.

Fantom está a la mitad de camino entre un lenguaje dinámicamente tipado y estáticamente tipado. El sistema de tipos de Fantom es simple por diseño. Todas las variables se escriben estáticamente, ya que están en C # y Java. Fantom rechaza los tipos genéricos debido a su complejidad, pero tiene un conjunto de tipos genéricos integrados: Listas, Mapas y Func. Fantom también puede tener la sensación de un lenguaje de tipo dinámico a través de llamadas dinámicas y downcasting automático. Fantom tiene un API fácil de usar que permite reflexión y capacidades de metaprogramación.

Clojure, es otro JVM creado por Rich Hickey e inspirado en el paradigma de la programación funcional. Antes de crear Clojure, Hickey había desarrollado un proyecto llamado dotLisp, un similar a Clojure, pero basado en el Framework .NET, además de tres otros intentos anteriores de proporcionar interoperabilidad entre Lisp y Java: una interfaz Java de lenguaje extranjero para Common Lisp (jfli), una interfaz de objetos extraños para Lisp (FOIL)  y una interfaz amigable con Lisp para Java Servlets (Lisplets).

Hickey pasó cerca de 2 años y medio trabajando en Clojure antes de publicarlo públicamente, gran parte de ese tiempo trabajando exclusivamente en Clojure sin financiamiento externo. Al final de este tiempo, Hickey envió un correo electrónico anunciando el idioma a algunos amigos de la comunidad Common Lisp.

El proceso de desarrollo es impulsado por la comunidad y es administrado en el sitio web de Clojure Community. El sitio web contiene documentos de planificación y un seguimiento de problemas donde se pueden presentar errores. La discusión de desarrollo general ocurre en el Clojure Dev Google Group. Mientras que cualquiera puede enviar reportes de bugs e ideas, para contribuir con parches uno debe firmar el acuerdo de Clojure Contributor.

Los desarrolladores Clojure están dentro de los mejor pagados del mercado con sueldos en los seis dígitos.

Ceylon, es otro de los lenguajes JVM que siguen el paradigma de la programación orientada a objetos, fuerte y estáticamente tipado, con énfasis en la inmutabilidad, creado por Red Hat. Los programas de Ceylon se ejecutan en la máquina virtual Java (JVM) y se pueden compilar a JavaScript también. El diseño del lenguaje se centra en la legibilidad del código fuente, previsibilidad, facilidad de uso, modularidad y metaprogramación.

Las características importantes de Ceylon incluyen:

Un sistema de tipo que impone seguridad nula y existencia de elementos de lista en tiempo de compilación
Sintaxis regular y semántica, evitando casos especiales y construcciones primitivamente definidas a favor del azúcar sintáctico
Apoyo a la programación genérica y metaprogramación, con genéricos reificados
Modularidad incorporada al lenguaje, basada en módulos JBoss, interoperable con OSGi y Maven
Herramientas potentes, incluyendo un IDE basado en Eclipse

El nombre “Ceylon” (Ceilán en español), es una referencia oblicua a Java, ya que Java y Sri Lanka, antes eran conocidos como Ceylon (Ceilán), que son islas conocidas por el cultivo y la exportación de café y té.

Kotlin, el recientmente popular lenguaje de programación, también forma parte de la familia de lenguajes JVM. Kotlin es un lenguaje de programación estáticamente tipado que funciona en una máquina virtual de Java y que también puede ser compilado a Javascript o utilizar la infraestructura del compilador de LLVM. Su desarrollo principal esta a cargo de un equipo de programadores de JetBrains con sede en San Petersburgo, Rusia. Aunque la sintaxis no es compatible con Java, Kotlin está diseñado para interactuar con el código Java y depende del código Java de la Java Class Library. Es por eso que fue elegido por Google como uno de los lenguajes para el desarrollo de aplicaciones Android.

El nombre viene de la isla de Kotlin, cerca de San Petersburgo. Andrey Breslav mencionó que el equipo decidió nombrarlo igual que isla ya que el nombre Java, también hace referencia a una isla.

Y finalmente, para no hacer esta lista infinita, tenemos a:

Xtend, que es un lenguaje de programación de alto nivel de uso general para la máquina virtual Java, como todos los listados aquí. Sintácticamente y semánticamente Xtend tiene sus raíces en el lenguaje de programación Java, pero se centra en una sintaxis más concisa y agrega algunas funcionalidades adicionales tales como inferencia de tipos, métodos de extensión y sobrecarga de operadores. Al ser principalmente un lenguaje orientado a objetos, también integra características conocidas de la programación funcional. Xtend se escribe de forma estática y utiliza el sistema de tipos de Java sin modificaciones. Se compila a código Java y por lo tanto se integra perfectamente con todas las bibliotecas Java existentes.

El lenguaje Xtend y su IDE se desarrolla como un proyecto en Eclipse.org y participa en el tren de lanzamiento anual de Eclipse. Es un proyecto de código abierto bajo la licencia pública Eclipse. Sin embargo, el lenguaje puede ser compilado y ejecutado independientemente de la plataforma Eclipse.

Xtend se originó de Xtext, que es la tecnología utilizada para definir el lenguaje y el editor. Xtend fue lanzado por primera vez como parte de Xtext en el lanzamiento de Eclipse Indigo en junio de 2011. Desde el lanzamiento de Eclipse Juno (junio 2012, Xtend versión 2.3) Xtend se ha convertido en un proyecto independiente.

Finalmente aquí les dejo una infografía con la cronología de estos lenguajes (funte):

Espero que esta información les haya sido de utilidad a todos Uds.

Un nuevo bug descubierto en Windows 7 puede colgar a tu computadora si visitas una página web

Estándar

El día de ayer apareción en ArsTechnica un artículo en el que descibian la mecánica de funcionamiento de un nuevo bug descubierto en Windows 7 y Windows 8.1, que cuelga a una computadora que corre dicho sistema operativo y produce una BSOD (Blue Screen Of Death).

La fuente citada por ArsTechnia es un portal de temas informáticos rusos que refiere a una firma de productos de seguridad rusa llamada Aladdin R.D. como la que descubrió el error.

Este nuevo error, que afortunadamente no parece afectar a Windows 10, utiliza un nombre de archivo especial del sistema operativo $MFT. El $MFT es el nombre dado a uno de los archivos de metadatos que son utilizados por el sistema de archivos NTFS de Windows. El archivo existe en el directorio raíz de cada volumen NTFS, pero el controlador NTFS lo maneja de manera especial y está oculto de la vista e inaccesible para la mayoría de los programas. Los intentos de abrir dicho archivo normalmente están bloqueados, pero si el nombre de archivo se usa como si fuera un nombre de directorio, por ejemplo c:\$MFT\123 entonces el controlador NTFS impone un bloqueo al archivo y nunca lo libera. Cada operación subsecuente que intente usar el archivo $MFT tendrá que esperar a que el bloqueo se libere, pero esto nunca ocurre. Esto bloquea a todos y cada uno de los demás intentos de acceso al sistema de archivos, por lo que cada programa que necesite acceso a disco comenzará a colgarse, haciendo que la máquina sea inutilizable hasta que se reinicie.

Este tipo de ataque puede ser explotado remotamente si una página web usa el nombre de archivo incorrecto en, por ejemplo, la ruta para acceder a una imagen, lo cual provocará el error y hara que la máquina deje de responder. Dependiendo de lo que la máquina está haciendo simultáneamente, a veces puede producir una BSOD inmediatamente. De cualquier manera, necesitará reiniciar la computadora para poder continuar usandola. Algunos navegadores bloquearán los intentos de acceso a estos recursos locales, pero lamentablemente Internet Explorer no lo hace e intenta acceder al archivo con nombre no válido.

Se sabe que el error no ocurre de forma remota (por ejemplo, enviando a IIS una solicitud de un nombre de archivo incorrecto), pero no nos sorprendería si en ciertas configuraciones o con una estratégia más sofisticada este problema pudiera ocurrir en servidores también.

Microsoft ha sido informado del problem, pero hasta el momento de la publicación no ha publicado ningún parche para este bug.

22 años de Java

Estándar

Es difícil de creer que Java fue lanzado públicamente por primera vez hace 22 años, para ser exactos el 23 de Mayo de 1995. Pocos podrían haber predicho que el lenguaje sería una tecnología fundamental e influyente de las Ciencias de la Computación y al parecer seguirá siendo relevante durante las décadas por venir.

Cuenta la historia que en 1990, los empleados de Sun Microsystems estaban cansados ​​de C y C++. El ingeniero Patrick Naughton estaba frustrado con los API de Sun y se le dio la oportunidad de hacer algo al respecto. Él crearía un lenguaje de programación alternativo como parte del Stealth Project (Proyecto Furtivo).

Había cinco requisitos para este experimento. El nuevo lenguaje tenía que:

  • Ser “simple, orientado a objetos y familiar”
  • Ser “robusto y seguro”
  • Ser “arquitecturalmente neutro y portátil”
  • Ejecutar con “alto rendimiento”
  • Ser “interpretado, orientado a hijos de ejecución y dinámico”

El Stealth Project fue renombrado a Proyecto Verde y  se unieron al equipo de Naughton, Mike Sheridan y James Gosling. Con el equipo formado, comenzaron a trabajar en el desarrollo de nuevas tecnologías que serían adecuadas para la próxima generación de dispositivos inteligentes.

Los primeros intentos buscaron combinar C y Mesa (entorno gráfico), produciendo un entorno orientado a objetos en C++ y Gosling incluso intentó crear una nueva forma de C++ que llamó C++ ++ –.

C++ sería descartado ya que requería demasiada memoria y tenía una tendencia a conducir a errores de desarrollado gracias a su complejidad debido en gran parte a que los desarrolladores debian de manejar manualmente la memoria del sistema.

El nuevo lenguaje de programación fue llamado Oak debido a un roble (oak) que había fuera de la oficina de Gosling. El proyecto se completó luego de 18 meses y en el otoño de 1992 el equipo estaba listo para mostrar su trabajo en una demostración privada. El equipo había creado un asistente digital personal llamado Star 7.

Al comentar sobre el lanzamiento, Naughton dijo:

“En 18 meses, hicimos el equivalente a lo que las organizaciones de 75 personas de Sun tardaron tres años en hacer: un sistema operativo, un lenguaje de programación, un kit de herramientas de desarrollo, una interfaz, una nueva plataforma de hardware, tres chips personalizados … usando nuevas y arriesgadas tecnología en cada oportunidad, nos sacamos todos los dientes y nos los pusimos en la boca de cada uno”.

Sun Microsystems decidió dividir The Green Project en una subsidiaria y la rebautizó como FirstPerson, encargando al grupo que se concentrara en el mercado de la televisión. Time Warner contrató a FirstPerson para crear una serie de set-top boxes interactivos. El lanzamiento implicó la creación de una plataforma de set-top boxes que los jefes de la compañía de cable pensaron pondría demasiado poder en las manos de los espectadores, así que la idea fue desechada y FirstPerson perdió su oferta contra SGI. Incapaz de asegurar otro acuerdo (un acuerdo con The 3DO Company también falló), FirstPerson finalmente volvió a Sun.

En junio de 1994, después de varios días de lluvia de ideas y reuniones, el equipo decidió apuntar la emergente plataforma al World Wide Web. En él, vieron todas las cualidades de los medios interactivos que los inspiraron a trabajar con set-top boxes y pensaron que con los navegadores web gráficos como Mosaic podrían continuar con el proyecto.

Los problemas vendrían después de una demanda legal de Oak Technology, que resultó en la necesidad de un cambiar el nombre de la marca para el lenguaje Oak. James Gosling describió este proceso como “locura salvaje” durante el cual “la mayoría de las palabras en el diccionario fueron gritadas”. Los contendientes cercanos incluyeron sugerencias como Silk and DNA, pero finalmente el equipo se decidió por Java.

Hay desacuerdos en cuanto a quién propuso el nombre de Java. Algunos dicen que el grupo llegó con 10 nombres sugeridos y escogió a Java como el mejor del grupo una vez que fueron aprobados por el departamento legal. Otros, como Kim Polese, entonces jefe de productos de Oak, afirma haber sugerido deliberadamente el nombre porque reflejaba la esencia de la tecnología, ya que era “animada, dinámica y divertida”.

Con su nuevo nombre, Java 1.0a2 fue liberado públicamente en la Conferencia SunWorld en San Francisco el 23 de mayo de 1995. Al mismo tiempo, Netscape también anunció que licenciaría Java para su nuevo navegador. John Gage, Director de Ciencia de Sun Microsystem, también anunciaría el lanzamiento del navegador HotJava.

Desde 1995, Java se ha infiltrado en todas las formas de nuestras interacciones cotidianas. Los bancos usan a menudo Java en dispositivos de puntos de venta, enviando datos de clientes desde y hacia los lugares necesarios para realizar los pagos. Los teléfonos móviles utilizan Java para aplicaciones de Android y el sistema operativo Android también se basa en Java. Los videojuegos también hacen uso de este lenguaje de programación, como por ejemplo el popular Minecraft masivamente exitoso y construido por la empresa sueca Mojang.

En pocas palabras, el mundo sería un lugar muy diferente sin Java y por eso es que decidí escribit este post para un lenguaje de programación que ha sido tan revolucionario. Feliz cumpleaños, Java.

Protegiendo tu servidor Apache

Estándar

El servidor web Apache es uno de los más usados en Internet en nuestros días y también uno de los proyectos Open Source más antiguos, creado en 1995. Actualmente es el responsable por servir el 46.28% de los sitios web activos según netcraft:

Developer March 2017 Percent April 2017 Percent Change
Apache 79,942,445 45.82% 78,489,472 46.28% 0.46
nginx 34,317,972 19.67% 33,176,490 19.56% -0.11
Microsoft 15,611,256 8.95% 14,033,779 8.28% -0.67
Google 11,684,677 6.70% 12,048,089 7.10% 0.41

Es por ello que es contínuo blanco de ataques, algunos son del tipo fuerza bruta como los DDoS, otros más elegantes como slowloris apelan a una vulnerabilidad del protocolo HTTP para crear una denegación de servicio agotando los recursos del servidor. En este pequeño post/tutorial voy a explicarles como instalar tres simples módulos de Apache para protegernos contra este tipo de amenzas.

Protección contra DDoS (Distributed Denial of Service):

Los ataques DDoS generalmente son llevados a cabo por una botnet (conjunto de computadoras infectadas y que son controladas por un cibercriminal) que intenta basado en el gran número de computadoras envueltas en este tipo ataque acabar con los recursos de tu servidor, para que este deje de operar normalmente. Esto muchas veces además de representar una pérdida de servicio y un eventual lucro sesante, dependiendo de que tan vital es tu servidor web para el normal desenvolvimiento de tu empresa, puede además crearte grandes facturas con tu proveedor de hosting si es que éste te factura en base al tráfico, por ejemplo este es el caso de AWS (Amazon Web Services).

Para mitigar este problema existe un módulo de Apache llamado Evasive, para instalarlo asumiendo que uses Debian o Ubuntu, los pasos serían los siguientes (asumiendo que ya estas logueado como usuario root):

# apt-get -y install libapache2-mod-evasive
# mkdir -p /var/log/apache2/evasive
# chown -R www-data:root /var/log/apache2/evasive

Luego de haber instalado Evasive, debemos de configurarlo. Para ello debemos editar el archivo “/etc/apache2/mods-available/mod-evasive.load” con cualquier editor de texto plano (pico, nano, vi, vim, emacs, etc.) y pegar estas líneas en el archivo:


DOSHashTableSize 2048
DOSPageCount 20 # Maximo numero de solicitudes de la misma página.
DOSSiteCount 30 # Número total de solicitudes para cualquier objeto por la misma IP de un cliente.
DOSPageInterval 1.0 # Intervalo para resetear el número de solicitudes de una misma página.
DOSSiteInterval 1.0 # Intervalo para el contador del sitio web.
DOSBlockingPeriod 10.0 # Timpo que el IP del cliente permanecerá bloqueado.
DOSLogDir “/var/log/apache2/evasive/evasive.log”

Si están interesados en saber la unidad de tiempo de los intervalos, son minutos.

Luego de los pasos anteriores debemos reiniciar Apache para que los cambios tengan efecto:

# service apache2 restart

Protección contra Slowloris:

Slowloris es un tipo de ataque de denegación de servicio creado por Robert “RSnake” Hansen que permite a una sóla computadora con un ancho de banda limitado derribar a un servidor web, sin que exista alto tráfico hacia el servidor u otros servicios en el mismo servidor se vean afectados.

La mecánica de Slowloris es la siguiente: mantener abiertas la mayor cantidad de conexiones posibles al servidor web de destino, durante el mayor tiempo posible. La idea es agotar todos los puertos libres que tiene el servidor para responder solicitudes HTTP. Para conseguir el objetivo anterior periódicamente, enviará encabezados HTTP, añadiendo-pero nunca completando-la solicitud, es decir crea muchas conexiones que simulan un intento de conexión desde una red muy lenta. Los servidores atacados intentarán mantener estas conexiones abiertas, llenando su máximo grupo de conexiones simultáneas y finalmente negarán los intentos de conexión adicionales de los clientes reales que desean acceder al website.

Existe una prueba de concepto de Slowloris en Github, no recomiendo que dicha herramienta sea usada contra websites reales ya que finalmente puedes ser identificado y acusado formalmente de un crímen. Estoy indicando dónde está el script de prueba de concepto para que puedas probar si tu website es vulnerable o no.

El módulo Apache que nos permite protegernos contra Slowloris se llama QoS (mod_qos) para ser exactos. Y lo instalamos de la siguiente manera:

# apt-get -y install libapache2-mod-qos

Luego debemos editar el archivo de configuración del mismo “/etc/apache2/mods-available/qos.conf “. El cambio debe ser reemplazar la última línea de dicho archivo de esto:

#QS_SrvMaxConnPerIP                                 50

a esto:

QS_SrvMaxConnPerIP                                 30

Es decir debemos descomentar la última línea y reemplazar 50 con 30.

Luego de eso reiniciamos nuestro servidor Apache y podremos chequear que ahora estamos protegidos contra Slowloris. Un detalle importante es que debemos verficar el acceso a nuestro web desde una IP diferente a la usada para atacar con Slowloris, ya que el módulo QoS impone un máximo de 30 conexiones por IP, con lo que el IP del PC que se está usando para atacar se bloquea a si mismo.

Espero que esta información les haya sido de utilidad, espero sus comentarios.