Estos son los siete consejos para programadores open source publicados por el creador de SumatraPDF en el 15º aniversario de su app

27/07/2021
Artículo original

Estos son los siete consejos para programadores open source publicados por el creador de SumatraPDF en el 15º aniversario de su app

Krysztof Kowalczyk es programador: ha escrito varios libros de programación que están accesibles en formato web y, sobre todo, es conocido por haber creado y seguir desarrollando uno de los lectores de PDF más populares después de Adobe Acrobat: SumatraPDF.

Y da la casualidad de que SumatraPDF acaba de cumplir 15 años desde su primer lanzamiento, por lo que Kowalczyk ha decidido escribir un extenso post en el que hace dos cosas: repasar datos curiosos sobre su lector de PDFs… y lanzar una serie de utilísimos consejos para el resto de programadores que trabajan con código abierto.

Entre las curiosidades, cabe destacar el hecho de que SumatraPDF es un software que consta de 127.000 líneas de código, escrito mayoritariamente por dos personas. Que nació como consecuencia de que Palm le encargara crear un lector de PDFs para Foleo, una minicomputadora portátil como ARM y Linux que nunca llegó a salir a la luz.

Pero, ¿qué ha aprendido en la década y media que ha pasado programándolo?

Es mi proyecto y me lo codifico como quiero

Kowalczyk afirma que uno de los grandes atractivos de trabajar en código por el que no te pagan por escribir es que nadie puede decirte qué hacer o cómo hacerlo. Nada de codificar a gusto de otros:

"Mi código no pasaría una revisión de código en Google y no porque sea malo, sino porque a menudo es poco ortodoxo. Fuera del dogma aceptado".

"Implementé un sistema de interfaz de usuario inspirado en CSS: no es genial, pero es mío. Y planeo reemplazarlo con uno diferente. Porque puedo".

No comiences un proyecto open source pensando en ganar dinero…

Rara vez podrás tener libertad para hacer lo que quieras y ganar dinero por ello, así que elige lo más importante para ti, explica. Afirma ganar poco más de 100 dólares al mes gracias a Patreon y a las donaciones vía PayPal, pero poco más:

"El código abierto no es un buen modelo de negocio. Si quieres ganar dinero, haz literalmente cualquier otra cosa: intenta vender software, sé consultor, desarrolla un SAAS y cobrar mensualmente por ello, roba un banco…".

…pero trata tu proyecto open source como si fuera software comercial

Lo anterior no está reñido con su convicción de que si deseas que tu software 'open source' sea lo más exitoso posible, debes tratarlo como si fuera un producto comercial. Pero, ¿qué significa eso en la práctica?

"Desde el primer día creé un sitio web para la aplicación. Tenía capturas de pantalla, tenía documentación, era fácil de descargar e instalar. Por supuesto, un alma amable en Reddit lo llamó "un sitio web hecho por un niño de 6 años". La lección aquí es doble: 1) ignorar a haters y gilip*llas, 2) un sitio web construido por un niño de 6 años es mejor que ningún sitio web. No tiene que ser bonito, tiene que ser funcional".

"Todo lo que es una buena idea para promover el software comercial también es una buena idea para el proyecto de código abierto".

Por eso también recomienda emprender otras medidas, como la obtención de usuarios tempranos, descubrir qué funcionalidades quieren, e implementar un montón de éstas antes de saber si a alguien le importa lo que estamos haciendo.

Ser pequeño y rápido siempre será una ventaja

Kowalczyk afirma que nunca llegará el momento en el que los usuarios pidan aplicaciones "hinchadas y lentas" por lo que "ser pequeño y rápido siempre será una ventaja". Y SumatraPDF, con su instalador de menos de 10 MB y su inicio cuasi instantáneo, cumple de sobra con tal objetivo.

"La simplicidad vende […] eso lo aprendí de la historia de Mozilla Firefox. Antes de Firefox existía Netscape Navigator. Era una bestia de una aplicación, que combinaba el navegador web con el cliente de correo electrónico. El más sencillo Firefox se terminó comiendo por completo a Navigator".

"Desde el principio mi objetivo fue mantener la interfaz de usuario de SumatraPDF lo más sencilla posible, como una aplicación 80/20: 80% de la funcionalidad con el 20% de la interfaz de usuario".

Pero, ¿cómo logra mantener así de ligera su aplicación (además de rechazando constantemente las peticiones de añadir nuevas funcionalidades o nuevos iconos a la interfaz)?

"Evito las abstracciones innecesarias. […] Podría usar envoltorios como Qt, WxWindows o Gtk; son más fáciles de usar, pero causan un hinchamiento desmesurado [de la app]".

"No tengo miedo de escribir mi propia implementación de las cosas. […] Digamos que necesito hacer una solicitud de red: tengo la opción de incluir una biblioteca monstruosa Como curl o de escribir 300 líneas de código usando las API de Win32. Yo opté por escribir las 300 líneas de código".

La multiplataforma está sobrevalorada

Kowalczyk califica SumatraPDF como una aplicación "descaradamente sólo-para-Windows". Las peticiones de soporte a otras plataformas son frecuentes, pero él las descarta de plano. Y dejando de lado la falta de tiempo, enarbola otro argumento más:

"Creo que una excelente aplicación para una plataforma puede llegar a ser más popular que una aplicación mediocre para tres plataformas".

'Be water, my friend'

Kowalczyk cita al gran Bruce Lee y nos recomienda 'ser agua', "adaptarnos a los cambios del mundo". ¿Qué tipo de cambios?

  • De repositorio: "Empecé con Sourceforge, cambié a code.google.com y luego a github.com".
  • De CMS para el foro: "He cambiado el software del foro ya tres veces".
  • De Windows: Antes sólo existía SumatraPDF para 32 bits y ahora, aunque sigue existiendo, hace hincapié en la de 64 bits; al mismo tiempo, Windows XP pasó de ser la versión más usada por los usuarios de su programa a dejar de ser compatible con éste.

"SumatraPDF no fue la primera aplicación de lector de PDF jamás escrita… pero la mayoría de los lectores de PDF no se convierten en lectores multiformato. [Era] una idea obvia, pero me llevó 5 años darme cuenta. […] Creo que ser multiformato ayudó a SumatraPDF a ser popular".

{"videoId":"x80kt27","autoplay":true,"title":"La carrera de programador en 2017 y en el futuro (con Javier Santana)"}

Haz código de calidad

Como decía más arriba, que el código no sea ortodoxo no significa que tenga que ser de baja calidad, pero

"¿cómo mantener un código de alta calidad mientras trabajas en su mayor parte en solitario, sin que nadie haga revisiones de código, sin un equipo de control de calidad?".

Kowalczyk propone varias opciones: "usa mucho tu propia aplicación… prueba el código tú mismo"; apostar por los informes automatizados de fallos, las pruebas de esfuerzo, las unitarias y los análisis de código estático:

"Pon al máximo el nivel de advertencias en el compilador de C++, convierte las advertencias en errores, activa la opción /analyze de Visual Studio, etc.".

Imagen | OpenSource.com

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

La ausencia de un simple "&" en el código ha causado un fallo masivo en Chrome OS que impide volver a acceder a los ficheros locales

27/07/2021
Artículo original

La ausencia de un simple

El pasado lunes 19 de julio, Google lanzó una actualización de su sistema operativo Chrome OS, la 91.0.4472.165, que rápidamente empezó a dar problemas a los usuarios: les impedía iniciar sesión en sus sistemas. Google detuvo inmediatamente el despligue de la misma, cuando sólo había afectado a los usuarios que habían reiniciado sus equipos tras la descarga de la nueva versión.

A estos últimos sólo se les pudo ofrecer soluciones para recuperar el acceso a su sistema que pasaban, inevitablemente, por borrar los datos locales del dispositivo (revertir el dispositivo a una versión anterior vía USB, restaurar estado de fábrica, o borrar y recrear la cuenta de usuario).

Un sencillo —casi imperceptible— error tipográfico ha provocado que miles de Chromebooks hayan perdido el acceso a sus datos.

Sin embargo, lo interesante de esta actualización fallida (y, por supuesto, ya parcheada), tiene que ver con la razón de dicho fallo. ¿Quizá una corrupción de algún fichero del sistema? ¿Quizá —qué sé yo— alguna extraña y compleja vulnerabilidad del kernel? Para nada: el problema residía en un "&".

Lo extraño del error no es que se cometiera, es que no se detectaran sus efectos

Sí, el carácter conocido en inglés como 'ampersand', usado como sustituto de la palabra 'and', es también un operador fundamental en la mayoría de los lenguajes de programación. El problema de esta actualización vino generado por una revisión del código que, inadvertidamente, eliminó uno de estos operadores en el siguiente fragmento de código C++:

if (key_data_.has_value() && !key_data_->label().empty())

Nada impedía que el código compilase, pues el código sigue teniendo sentido aun cambiando "&&" por "&"… sencillamente, el comportamiento del software varía totalmente.

Así, donde "&&" es un operador AND lógico que actúa como una forma de indicar que deben cumplirse simultáneamente dos o más condiciones para realizar una opción, "&" se convierte en un operador AND de bit a bit: compara los bits uno a uno, si ambos son "1" el resultado es "1", en caso contrario "0".

Esto significa que "&" evalúa ambos lados de la operación, mientras que "&&" evalúa el primer elemento de la operación, y sólo si es 'true' continúa y evalúa el segundo elemento.

Debido a este error, el Chrome OS actualizado nunca llegaba a verificar correctamente las contraseñas de los usuarios comparándolas con las claves almacenadas, por lo que incluso cuando se introducían las contraseñas correctas, el SO devolvía el mensaje de "Lo siento, no se pudo verificar su contraseña".

Queda la duda de cómo un error cómo éste se le pudo pasar a Google: Chrome OS, al igual que el navegador Chrome, cuenta con tres canales de pruebas ('canary', 'dev' y 'beta') con semanas de pruebas de diferencia entre lanzamientos, lo que debería servir para cazar bugs tan obvios como éste antes de pasar al canal estable. De hecho, una prueba unitaria automatizada debería haberlo detectado también.

En cualquier caso, éste constituye un ejemplo magnífico de cómo los peores errores de programación pueden depender de algo tan simple como un carácter.

{"videoId":"x7ziu8u","autoplay":true,"title":"Las matemáticas no se me dan mal, quiero aprender a programar CAPTCHA 2x04"}

Vía | The Register

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Como descargar videos y fotos de Instagram

25/07/2021
Artículo original

Sois muchos los lectores que nos habéis pedido un tutorial de cómo descargar videos y fotos de Instragram de una manera fácil y rápida.

Pues bien, desde Linea de código hemos analizado varias herramientas de descarga de material multimedia desde Instagram y otras redes sociales.

Finalmente hemos optado por iGram, una herramienta web en línea para ayudarlo a descargar videos de Instagram. iGram está diseñado para ser fácil de usar en cualquier dispositivo, como móvil, tableta o computadora. demás también puedes descargar fotos y videos de IGTV.

¿Cómo descargar fotos y videos de instagram?

Para ello solo hay que seguir los siguientes pasos:

Copiar el enlace de descarga desde Instagram

Abrimos la aplicación o el sitio web de Instagram, copiamos la URL de la foto, video, carrusel o IGTV.

Pegar el enlace en iGram

Desde iGram pegamos el enlace y presionamos el botón descargar

Descargar

iGram te ofrecerá varias opciones de calidad, descarga lo que se ajuste a tus necesidades.

Sitios Java que todos deberíamos saber

24/07/2021
Artículo original

Hace tiempo que no escribo absolutamente nada en el sitio, así que se me ocurrió hacer un listado de sitios que deberíamos saber todos los que usamos Java para trabajar o estudiar.

Sitios para aprender Java.

ORACLE, el sitio oficial del lenguaje Java (anteriormente era de la extinta Sun Microsystems).
https://docs.oracle.com/javase/tutorial/

Petri Kainulainen, un sitio para los que quieran aprender sobre Maven, Spring, etc.
https://www.petrikainulainen.net/

BAELDUNG, un sitio imperdible para ver tips sobre Java, Maven, Gradle, etc.
https://baeldung.com

MKYONG, si buscas un tutorial sobre algo de Java seguro lo encuentras.
http://mkyong.com

HOW TO DO JAVA, imperdible para saber más de Java.
https://howtodoinjava.com

JAVA GUIDES, igualmente imperdible para los Javeros.
https://javaguides.net

JAVA REVISITED, noticias, recomendaciones de cursos, etc.
https://javarevisited.blogspot.com

JOURNALDEV, un sisitio sobre tutoriales de Java, Python, etc.
https://journaldev.com

BEGINNERS BOOK, contenido para todo programador.
https://beginnersbook.com

JAVA T POINT, cosas sobre Java, Sprintg, etc.
https://javatpoint.com

leer más

Cómo crear barras de navegación y menús desplegables con Bootstrap 5

21/07/2021
Artículo original

Imagen ornamentalDurante el desarrollo de un sitio es habitual que dispongamos, en la parte superior de la página, de una barra de navegación, con enlaces a otras páginas del sitio. Bootstrap cuenta con una clase genérica, llamada navbar, que aplicada a un elemento nav genera este tipo de componente de manera automática. Mediante el uso de otras clases secundarias estableceremos el estilo visual que tendrá dicha barra de navegación.

La barra de navegación puede aparecer como un botón que da paso a la lista de opciones, es lo habitual en pantallas pequeñas, o bien mostrarse a lo ancho de la pantalla todo el tiempo si el espacio disponible lo permite. Dentro de la barra se incluirá un elemento con clase nav conteniendo la lista de opciones, cada una de las cuales puede estar representada como un simple enlace, una pestaña, un botón, etc., dependiendo del estilo aplicado.

En el siguiente vídeo, nuestro tutor José Manuel Alarcón se encarga de explicarte con todo lujo de detalles cómo puedes crear este tipo de elementos con Bootstrap 5, incluyendo menús desplegables. Y todo funcionando en móviles también, claro.

[youtube:TbaQ42y8moc]

 

Los mejores recursos y cursos gratis online para formarte sobre inteligencia artificial

21/07/2021
Artículo original

Los mejores recursos y cursos gratis online para formarte sobre inteligencia artificial

La inteligencia artificial tiene cada vez más protagonismo en un número cada vez mayor de industrias: desde los videojuegos a las finanzas, pasando por la vigilancia de seguridad, los sistemas multimedia de recomendación o la atención médica. De modo que, en los próximos años, contar con conocimientos en IA puede resultar ser un factor clave en lo que a tu empleabilidad se refiere.

Sin embargo, aunque la inteligencia artificial esté en boca de todos, resulta difícil saber dónde y cómo empezar a formarse o a ampliar conocimientos en este campo. Por ello, hemos llevado a cabo una pequeña recopilación de los mejores cursos y recursos gratuitos sobre el mismo:

Elementos de IA

Hace tres años, empresas e instituciones finlandesas lanzaron el llamado 'Desafío IA', una iniciativa para reconvertir la economía del país apoyándose en la inteligencia artificial. Y una de las principales piezas de este plan fue el curso abierto y gratuito 'Elements of AI'.

Con el tiempo, el curso se ha ido internacionalizando, tras llegar sus impulsores a acuerdos con instituciones nacionales de diferentes países… entre ellos España, por lo que el curso está ahora perfectamente traducido al español.

Es, sin duda, la opción más recomendable de esta lista para gente sin formación previa en el campo de la IA, pues se centra en enseñarnos qué es posible hacer (y qué no) gracias a esta tecnología y cómo afecta eso a nuestras vidas. Todo eso sin necesidad de conocimientos avanzados de matemática ni de tocar nada relacionado con la programación.

  • Certificado: Sí (sin validez oficial)
  • En español:

Building AI

Los creadores originales de 'Elementos de IA' (la startup Reaktor y la Universidad de Helsinki) lanzaron un año más tarde una 'secuela' denominada 'Building AI' con la que pretendían cerrar la brecha entre los cursos para 'dummies' como el anterior y el grueso de la oferta de cursos sobre IA disponibles en el mercado

Así, prosigue desde donde lo dejaba el anterior, y empieza a profundizar en elementos como el machine learning, las redes neuronales o las aplicaciones prácticas de la IA y finaliza, de forma opcional, ayudándote a plantear tu primer proyecto sobre inteligencia artificial —e iniciándonos para ello en la programación—.

  • Certificado: Sí (sin validez oficial)
  • En español: No (Inglés)

Getting Started with AI on Jetson Nano

Hace unos años, NVIDIA lanzó al mercado Jetson Nano, una microcomputadora (como la Raspberry Pi) dirigida al público 'maker' más interesado en robótica e inteligencia artificial.

Luego, la compañía incluyó en su plataforma de e-learning este curso, 'Getting Started with AI on Jetson Nano', para guiar a los usuarios de este dispositivo en su iniciación en la IA…

…aplicando por primera vez al mundo real lo aprendido: aprenderás cómo entrenar una red neuronal para clasificar imágenes, detectar objetos, procesar la voz humana, etc. Para ello, aprenderemos a usar herramientas fundamentales, como PyTorch o Jupyter Notebook.

  • Certificado: No
  • En español: No (Inglés)
  • Duración: 8 horas

Machine Learning (Stanford)

Llegados a este punto, es hora de desembarcar en uno de los cursos online más populares y mejor valorados en el campo de la IA: el MOOC sobre 'machine learning' de Andrew Ng, uno de los grandes expertos en IA del mundo, fundador del proyecto Google Brain en 2011 y de la plataforma de cursos online Coursera (inspirado, precisamente, por el éxito de la versión primigenia de este mismo curso).

Este curso empieza introduciéndonos en el concepto de 'aprendizaje automático', pero rápidamente profundiza para abordar temas como el aprendizaje supervisado y no supervisado, al reconocimiento de patrones estadísticos o la aplicación de 'buenas prácticas' en este campo.

"También aprenderás a aplicar algoritmos de aprendizaje a la construcción de robots inteligentes, a la comprensión de textos (búsqueda web, antispam…), a la visión por computadora, minería de bases de datos, etc.".

  • Certificado: Sí, de pago
  • En español: Sólo subtítulos (Inglés)
  • Duración: 61 horas

Practical Deep Learning for Coders

Con el curso 'Practical Deep Learning for Coders', impartido por los fundadores del grupo de investigación en IA sin ánimo de lucro Fast.AI, nos sumergiremos por fin en el campo del 'deep learning' o aprendizaje profundo.

Aquí aprenderemos a entrenar modelos capaces de lograr resultados avanzados en campos como la visión por computadora o el procesamiento de lenguaje natural, y cubriremos todo un abanico de técnicas (desde los bosques aleatorios a las redes neuronales recurrentes).

"No importa si no cuentas con una formación técnica o matemática […] El único requisito previo es que sepas programar (un año de experiencia es suficiente), preferiblemente en Python.

[Aún así,] los primeros tres capítulos se han escrito explícitamente de un modo que permitirá a los ejecutivos, gerentes de producto, etc. comprender los aspectos más importantes que necesitarán saber sobre el aprendizaje profundo. Si es tu caso, sencillamente omite el código en esas secciones".

Si terminas este curso y te quedas con ganas de seguir profundizando en el aprendizaje del aprendizaje profundo, tranquilo, hay segunda parte: 'Deep Learning from the Foundations'.

  • Certificado: No
  • En español: No (Inglés)

Ethics of AI

En la inteligencia artificial no todo se reduce a la mera técnica: su dimensión ética es tan relevante que ha protagonizado la mayor parte de las polémicas sobre esta tecnología.

Y, como introducción a esta problemática, presentamos un breve curso introductorio llamado 'Ethics of AI', que aborda temas como la transparencia y rendición de cuentas de los algoritmos, o la relación entre IA y derechos humanos.

Quizá el tono y la estética de este curso te recuerden a los de los dos primeros cursos del listado. Eso tiene fácil explicación: también ha sido, como aquellos, elaborado por la Universidad de Helsinki, por lo que supone un complemento perfecto a los mismos.

  • Certificado: Sí (sin validez oficial fuera de Finlandia)
  • En español: No (Inglés)

Practical Data Ethics

Si el curso anterior te ha interesado, pero se te 'queda corto', cuentas con otra magnífica opción con un temario mucho más avanzado: 'Practical Data Ethics', elaborado por Fast.AI (sí, otra institución que ya había aparecido en el listado).

Desinformación y deepfakes, sesgos de datos, privacidad y vigilancia, 'colonialismo algorítmico'… son algunos de los conceptos abordados en su temario.

  • Certificado: No
  • En español: No (Inglés)
{"videoId":"x81q7ad","autoplay":true,"title":"Qué es la inteligencia artificial"}

Más recursos…

Al margen del formato curso, existen muchos más contenidos en Internet que podemos y debemos usar para profundizar en nuestros conocimientos sobre Inteligencia Artificial. Repasemos algunos de ellos:

Imagen | Basada en original de MaxPixel & Texture X & Pixabay

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Cómo crear barras de navegación y menus desplegables con Bootstrap 5

20/07/2021
Artículo original

Imagen ornamentalDurante el desarrollo de un sitio es habitual que dispongamos, en la parte superior de la página, de una barra de navegación, con enlaces a otras páginas del sitio. Bootstrap cuenta con una clase genérica, llamada navbar, que aplicada a un elemento nav genera este tipo de componente de manera automática. Mediante el uso de otras clases secundarias estableceremos el estilo visual que tendrá dicha barra de navegación.

La barra de navegación puede aparecer como un botón que da paso a la lista de opciones, es lo habitual en pantallas pequeñas, o bien mostrarse a lo ancho de la pantalla todo el tiempo si el espacio disponible lo permite. Dentro de la barra se incluirá un elemento con clase nav conteniendo la lista de opciones, cada una de las cuales puede estar representada como un simple enlace, una pestaña, un botón, etc., dependiendo del estilo aplicado.

En el siguiente vídeo, nuestro tutor José Manuel Alarcón se encarga de explicarte con todo lujo de detalles cómo puedes crear este tipo de elementos con Bootstrap 5, incluyendo menús desplegables. Y todo funcionando en móviles también, claro.

[youtube:TbaQ42y8moc]

 

Así puedes usar 'Mathematica' gratis y legalmente en tu PC… con la ayuda de una Raspberry Pi

18/07/2021
Artículo original

Así puedes usar 'Mathematica' gratis y legalmente en tu PC… con la ayuda de una Raspberry Pi

Uno de los paquetes de software más populares en las asignaturas universitarias de temática matemática es… 'Mathematica', un sistema de álgebra computacional —que incorpora un lenguaje de programación de alto nivel— creado en 1988 por Stephen Wolfram, un científico conocido también por su propuesta de una Teoría del Todo y por haber lanzado al mercado el buscador inteligente Wolfram Alpha.

El problema de Mathematica —al menos para el usuario individual y no profesional— es que es de pago… y su licencia de uso, sin ser prohibitiva, tampoco resulta necesariamente accesible para todos los bolsillos:

Rpi Math Precios
Precios en España de la versión educativa de Mathematica.

De este modo, aquellas personas para quienes llevar a cabo este desembolso no sea una opción, tienen dos alternativas a su alcance:

  1. Utilizar la versión de prueba de Mathematica... válida únicamente durante 15 días.
  2. Recurrir a una Raspberry Pi que ejecute Raspberry Pi OS / Raspbian.

Pero, ¿en qué nos ayuda contar con una Raspberry a la hora de usar Mathematica? Fácil: a finales de 2013, Wolfram Research (la compañía propiedad de Stephen Wolfram) anunció que había llegado a un acuerdo con la Raspberry Foundation para que una versión educativa 100% gratuita de Mathematica se incluyese en cada instalación del sistema operativo oficial de esta microcomputadora, Linux Raspbian (posteriomente rebautizado como Raspberry Pi OS).

Además, junto a Mathematica también se incluía una versión piloto de Wolfram Language, el intérprete del lenguaje de programación de alto nivel homónimo, creado como evolución del lenguaje interno de Mathematica.

¿Cómo instalar Mathematica en la Raspberry?

La versión de Mathematica para Raspberry está disponible en los repositorios oficiales de Raspberry. Podremos instalar el software introduciendo lo siguiente en la línea de comandos:

sudo apt-get update && sudo apt-get install wolfram-engine

Una vez que se complete la instalación, podremos encontrar tanto Mathematica como Wolfram Language en la carpeta 'Programación' del menú de aplicaciones.

Wolfram
Mathematica ejecutándose en Raspberry Pi OS.

¿Cómo usar en Windows un software para Raspberry?

Pero, ¿y si usar Mathematica en un equipo diferente del PC que usamos habitualmente para trabajar no nos resulta útil? ¿Y si lo más práctico para nosotros fuera poder estar manejando Mathematica en el escritorio de dicho dispositivo? Bien, también hay solución para eso: y se llama VNC.

VNC (Virtual Network Computing) es la tecnología que permite el uso de escritorios remotos, siendo a los entornos gráficos lo que SSH es al modo texto. Raspberry Pi OS incluye un servidor VNC que nos permitirá manejar su escritorio desde un cliente instalado en otro equipo. Vamos a asegurarnos de tenerlo instalado introduciendo lo siguiente en la línea de comandos:

sudo apt-get update && sudo apt-get install realvnc-vnc-server && sudp apt-get install realvnc-vnc-viewer

Una vez instalado, tendremos que abrir 'Configuración de Raspberry Pi' en la carpeta 'Preferencias' del menú de aplicaciones. Luego iremos a la pestaña 'Interfaces' y estableceremos el VNC como 'Activo'.

Cuando reiniciemos la Raspberry Pi, podremos ver un icono en la barra de tareas que muestre, entre otros datos, la dirección IP de nuestra Raspberry. Apúntala.

Luego, sólo tendremos que instalar un cliente VNC… por ejemplo, las propias versiones para Windows, macOS O Linux x86/x64 del mismo RealVNC. Si Raspberry Pi y PC comparten la misma red local, sólo necesitaremos la IP para indicarle al programa cliente a qué servidor debe conectarse.

Si realizamos correctamente todos estos pasos, a continuación podremos ver el escritorio de la Raspberry Pi dentro del de nuestro Windows. Y, con él, trabajar gratuitamente con Mathematica desde el sistema operativo de Microsoft.

{"videoId":"x7ziu8u","autoplay":true,"title":"Las matemáticas no se me dan mal, quiero aprender a programar CAPTCHA 2x04"}

Imagen | Basada en original de FreeImagesLive

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

32.000 desarrolladores responden sobre plataformas y lenguajes de programación: JavaScript, AWS, GitHub y Windows, los más usados

16/07/2021
Artículo original

32.000 desarrolladores responden sobre plataformas y lenguajes de programación: JavaScript, AWS, GitHub y Windows, los más usados

JetBrains ha publicado los resultados de su quinta 'Developer Ecosystem Survey', una encuesta en la que han participado casi 32.000 programadores de todo el mundo con el objetivo de proporcionarnos un panorama de la situación actual del mundo de la programación, sobre todo en lo relativo a los lenguajes y las herramientas más usados.

Son varias las claves que apuntan los resultados de la encuesta. La primera es que el programador medio es joven (sólo el 14% tiene más de 40 años) y varón (en una proporción que varía entre el 97% entre los más veteranos y el 81% entre aquellos que aún carecen de experiencia profesional).

A la pregunta "¿para qué plataformas desarrollas?", el 71% afirma programar para backend web, el 58% para frontend web, el 32% para escritorio y el 30% para móviles. Luego ya vienen los servidores, la nube, el Internet de las Cosas… y hasta un 1% en consolas.

Los lenguajes de programación de moda

En cuanto a lenguajes de programación, JavaScript se alza como el más usado, con un 69% de los desarrolladores encuestados reconociendo usarlo… si bien tan sólo el 39% lo señala como su "lenguaje de programación principal". Por regiones, JavaScript lidera en Occidente y en la India, pero no en el Extremo Oriente, donde Java aún conserva su corona.

De hecho, por debajo de JavaScript, Java y Python prosiguen su particular guerra: Python (52%) ya es más usado que Java (49%), pero éste último sigue siendo más popular que aquél como "lenguaje principal" (32%). Entre Python y JavaScript aún podemos encontrar a un veterano con salud de hierro: el lenguaje de base de datos SQL (54%).

Otros cuatro ránkings nos ayudan a tantear la evolución de las tendencias del mercado del desarrollo de software. Uno es el TOP5 de los lenguajes que los desarrolladores han estado aprendiendo este año, donde encontramos —en este orden— JavaScript, Python, TypeScript, Java y Go.

El otro es el TOP5 de los lenguajes a los que los desarrolladores están pensando migrar, un listado en el que podemos encontrar caras nuevas en esta ocasión: Go, Kotlin, TypeScript, Python y Rust. A continuación, podemos citar el de los lenguajes con mayor ritmo de crecimiento: Python, TypeScript, Kotlin, SQL y Go.

Pero así como desembarcan nuevos y prometedores lenguajes, otros abandonan lenta pero silenciosamente el escenario de la programación: Ruby, Objective-C y Scala son los que más han visto reducido su uso durante el último lustro.

Dato curioso: el 84% de los desarrolladores usan interfaz oscura en sus entornos de desarrollo favoritos

Windows lidera, pero WSL no tiene tanto peso

Pero no todas las novedades en este campo se centran en los lenguajes usados: también son de importancia las herramientas, plataformas y entornos de programación. Por ejemplo, ¿qué sistemas operativos usan los programadores? Pues bien, Windows gana con un 61% (un porcentaje bastante menor que entre el público general), con Linux y macOS casi en empate técnico (47% y 44%, respectivamente).

Y entre ese 61%… ¿qué peso tiene WSL, el entorno que permite la ejecución de herramientas Linux dentro de Windows? Pues sólo el 35% confiesa usarlo, ya sea por usar herramientas instaladas en el mismo, ya sea para ejecutar el software en desarrollo.

{"videoId":"x7ziu8u","autoplay":true,"title":"Las matemáticas no se me dan mal, quiero aprender a programar"}

¿GitHub o GitLab? ¿AWS o Azure?

En cuanto a servicios de control de versiones, Github es usado por un 91% de los participantes en la encuesta (un 20% más que el año pasado), seguido muy de lejos por GitLab (48%) y por Bitbucket (30%), si bien su predominio se reduce al preguntar por su uso en proyectos empresariales (un 48%, aunque aún en cabeza).

Y por último, las plataformas de cloud computing: Amazon Web Services (AWS) no sólo mantiene, sino que consolida su dominio, siendo usado por el 64% de los encuestados. Pese a los esfuerzos de Google y Azure, sus plataformas empatan varios escalones por debajo (25% y 22%, respectivamente). Y, además, suman nuevos competidores: Alibaba Cloud ya se sitúa en el 12%.

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Qué es GitHub Copilot y cómo funciona

14/07/2021
Artículo original

Todo el mundo habla de GitHub Copilot, el asistente de pair programming basado en inteligencia artificial (así lo denominan desde GitHub) Pero, ¿realmente merece tanto revuelo? Bueno, la respuesta corta es sí. Hace poco estuvimos hablando sobre esto (y probándolo) en un evento en directo con Bruno Capuano (AI Microsoft MVP) y aquí te dejamos las principales reflexiones de esta charla.

Qué es Copilot

Copilot es un asistente para escribir código basado en inteligencia artificial, o como gustan en llamarlo en GitHub, un asistente de pair programming basado en IA. Para entendernos (y salvando las distancias) es algo así como Intellisense, pero mucho más potente y que va aprendiendo en tiempo real.

Va mucho más allá que Intellisense. No solo te hace pequeñas sugerencias, es una herramienta generativa que intenta predecir qué quieres hacer y te sugiere funciones completas con múltiples variantes. Incluso puede llegar a escribir código a partir de comentarios que sean definiciones escritas en lenguaje natural de qué necesitas.

[youtube:kjYQlUrO8bo]

Probando ejemplos reales con Copilot

Gracias a que Bruno Capuano disponía de acceso a Copilot, pudimos verlo en acción con ejemplos de Python (aunque podría haber sido con C# u otro lenguaje). En el vídeo podemos ver cómo Copilot nos sugiere en nuestro contexto el código a escribir y con diferentes opciones que van variando en tiempo real según escribes, porque va aprendiendo. Por ejemplo, a partir de que definimos una clase "libro" nos sugiere para esa clase los campos "nombre", "autor" y "precio", para a continuación sugerirnos crear una clase "biblioteca".

Este es solo un ejemplo simple, pero hay más en el vídeo:

[youtube:HJ-tQk2MlsQ]

La principal utilidad de Copilot: detección de los trabajos repetitivos

Es indudable que esta herramienta es ya increíblemente útil para desarrolladores en casos de tareas repetitivas (que es capaz de detectar), una especie de GPT3 de código. Copilot no hace "copy & paste": aprende, interpreta y escribe código viable.

En ocasiones incluso puede llegar a ser intrusivo por sus interrupciones y darte la sensación de que, más que hacer pair programming es como tener a alguien vigilando por encima del hombro lo que haces para interrumpirte a la mínima. Lo bueno, que lo puedes desactivar y activar cuando quieras, y suponemos que esta molestia se irá minimizando con el tiempo según aprenda a "trabajar en equipo".

Está por ver si a medio o largo plazo este tipo de herramientas no se terminan convirtiendo en una nueva capa de abstracción a la hora de desarrollar, pero a priori no parece descabellado pensarlo:

[youtube:TTfJ6ACwUzs]

Cómo funciona Copilot por dentro

Copilot se apoya en tres patas. Ha aprendido del enorme set de datos de código que es GitHub, aprovecha ese conocimiento gracias a OpenIA Codex (el verdadero cerebro de Copilot) y rinde al máximo gracias a la potencia de procesamiento que le brinda Azure.

Es importante recalcar que Copilot NO está copiando código de GitHub, sino que Copilot escribe código nuevo a partir de lo aprendido. Según GitHub, el 99.9% del código generado es nuevo.

En este vídeo, nuestro tutor José Manuel Alarcón y Bruno Capuano comentan cómo funciona Copilot:

[youtube:qOWaM6NSGzY]

Copilot también funciona en español

Por cierto, como en GitHub hay código escrito (y comentado) en muchos idiomas, también podemos usarlo en español. Aunque claro, de forma un poco más limitada porque el set de datos en español del que ha podido aprender es significativamente más pequeño.

[youtube:SHtr64Rm8gw]

Cómo puedo instalar y probar Copilot

Copilot de momento es un plugin para VS Code (en el futuro estará disponible para más editores) pero para poder usarlo necesitas pedir el acceso (y hay lista de espera) ya que actualmente se encuentra en beta cerrada. Si intentas usar el plugin sin tener acceso te va a dar un error.

Página Siguiente