Los mayores errores del Software Libre

por:

Te contamos los mayores problemas que tiene los proyectos de software libre para que no cometas sus errores

 

En esta entrada quiero transmitir mi opinión, es una opinión y cada uno puede tener la suya, sobre cuales son los mayores problemas en los proyectos que son Software Libre. El centrarse en este tipo de proyectos, es debido a que suelen tener unas características bastante especiales respecto a los proyectos comerciales (pocas personas, desarrolladores voluntarios y normalmente bajo presupuesto). Antes de que dejes de leer y digas, esto es un ataque más al Software Libre, te quiero decir que yo también soy un firme defensor del Software Libre y este artículo es para evitar esos errores.

1 ¿Documentación? Léete el código

Seamos realistas a nadie nos gusta documentar el código y dedicar parte de nuestro tiempo a ir comentando que hace cada cosa. Sin embargo esto es un pilar básico en todo proyecto medianamente decente que se precie, si queremos que los programadores usen nuestro proyecto, le tendremos que decir cómo funciona y qué hace cada cosa y no, no vale con decir léete el código, ahí está todo.
En los últimos años he usado varios proyectos grandes de Software Libre y sorprendentemente no traían ninguna documentación, pero es que tampoco incluían casi comentarios en el propio código fuente, así que para entenderlos tenía o bien que ejecutarlos paso a paso o bien ir siguiendo todas las funciones con lápiz y papel.
Este error se puede subsanar usando por ejemplo Doxygen como ya os contamos hace un tiempo.

2 ¿Colaboradores? Estoy mejor solo

Otra de las cosas que más me ha llamado la atención es que algunos proyectos están desarrollados por una única persona y aunque el proyecto cada vez es más grande, no tienen ningún interés en que colabores con él. En muchos casos porque como no hay documentación, te tendría que enseñar como funciona cada función del código fuente.

Leer más

Nuevos modelos de aprendizaje en la informática

por:

En algunas de nuestras entradas hemos hablado sobre las distintas maneras de acercarse a la informática, mediante alguna metodología que certifique además los conocimientos alcanzados. Sabemos que muchos hemos aprendido la mayoría de cosas de manera autodidacta, pero este tipo de formación puede suponer un problema cuando nos piden que presentemos un título que demuestre lo que decimos.

Hace algún tiempo hablábamos de los MOOC como un nuevo sistema para aprender con contenidos de calidad, encontrar gente con intereses en nuestros mismos temas y además certificar unos conocimientos.

Hoy os vengo a hablar de otra manera que está teniendo un gran auge en los últimos tiempos en otros países y de cómo se está realizando en España.

Cursos intensivos de desarrollo

Cursos de desarrollo intentivos de IronHack

De un tiempo a esta parte, se están poniendo de moda los cursos intensivos de desarrollo y desde mi punto de vista no es una moda pasajera. Estamos hablando de cursos que para las personas que ya llevamos tiempo en la informática, nos van a permitir en poco tiempo (suelen durar menos de 3 meses), adaptarnos a un conjunto de tecnologías. Pero están pensados también para explicar lo básico y necesario que una persona debe saber si quiere entrar a trabajar en ese tipo de desarrollos.

Pongamos un ejemplo: ahora mismo podemos saber de programación lo básico que comparten todos los lenguajes, las sentencias condicionales, las de control de flujo, los tipos de las variables etc. Si nos ponemos a comparar, esto lo tienen todos los lenguajes y su sintaxis es prácticamente igual, así que sabiendo uno bien podemos irnos moviendo hacia otros de una manera más o menos sencilla.
Si venimos de programación orientada a objetos (Java, C#, C++ etc) y quizás queremos cambiar de puesto y empezar a desarrollar proyectos web, lo único que necesitamos es que nos expliquen las cuestiones, tecnologías y herramientas que se necesitan para este tipo de proyectos. Puesto que ya sabemos algoritmia, estructuras de datos, manejar alguna fuente de datos como una base de datos etc, así que justo lo que necesitamos es un curso intensivo de 2-3 meses que nos ayude a pivotar. Este concepto tan usado últimamente que indica movernos de una posición a otra pero sin partir de cero, ya que nosotros vamos a aprovechar los conocimientos que ya tenemos. Sin embargo como digo estos cursos no son sólo para informáticos, sino para cualquier que sea inquieto y quiera entrar en el sector de las nuevas tecnologías.

Ironhack

Ironhack te enseña a programar
Ironhack es una plataforma bastante nueva, que busca implantar en España este concepto de cursos de desarrollo intensivos centrados en un nicho de mercado. Llevo siguiendo sus pasos desde hace un par de años, cuando seguí una charla que impartieron y donde nos invitaban a participar en este reto. Lo primero que me extrañó mucho fue que el reto había que programarlo en Ruby. En aquellos días yo no sabía ni que existía algo que se llamaba así y mis compañeros estaban más o menos en la misma situación así que empecé a investigar.
Algunas de las conclusiones que alcancé fueron que era una plataforma de formación innovadora, con la metodología de cursos de desarrollo intensivos, pero con la característica de que sus cursos son sobre tecnologías muy actuales. Muchas veces cuando estamos en la universidad estudiando informática vemos que lo que estudiamos es el pasado, en Ironhack era todo lo contrario enseñaban el presente y en algunos casos el futuro, o las tecnologías que se iban a usar dentro de un año.
La verdad Ruby, bases de datos NoSQL, Node.js etc son tecnologías muy usadas hoy en día, pero fuera de los planes de estudio de la mayoría de las instituciones, así que yo creo que faltaba algún sitio, donde formarte en las tecnologías actuales.

La experiencia in Ironhack

Debido a que yo no he participado en ninguno de sus cursos, he intentado buscar opiniones y contactar con gente que sí los ha realizado y este es lo que he encontrado:

  • Se parte de una selección de un pequeño grupo de personas con gran motivación por aprender todo lo posible sobre esa tecnología, de edades y procedencia muy diversas.
  • La metodología de trabajo es de 9AM a 7PM de lunes a viernes, donde se da la teoría y luego se realiza la práctica sobre los conceptos explicados. Además se apoya esta formación con charlas y clases de refuerzo los sábados y los domingos.
  • Se cuenta con un grupo de profesores amplio, que es experto en cada tema, de tal manera que cada concepto, tecnología o lenguaje será impartido por alguien con grandes conocimientos de la misma, huyendo de la típica enseñanza generalista donde una persona sabe de todo. También se cuentan con profesores asistentes para facilitar el éxito en la realización del curso para todos los usuarios, siendo en algunos casos los propios profesionales que prestan apoyo antiguos alumnos del curso.
  • Además del esfuerzo por enseñar cómo programar, se pone mucho énfasis en la calidad del código, explicando a los alumnos conceptos como clean code y evaluando como lo aplican en sus propios trabajos.
  • Desde IronHack ayudan a los propios alumnos a desarrollar su propia idea y es un punto de encuentro muy importante, para hacer contactos, conocer gente del sector (ya que hay empresas colaboradoras que van a dar charlas) y en definitiva tener más oportunidades de conseguir un trabajo. Labor que se toman muy en serio desde Ironhack ayudando en todo lo posible a sus usuarios.

Los alumnos de los que he podido conocer su opinión tiene una formación muy variada, en algunos casos son ingenieros que quieren entrar en el campo de la informática, en otros alumnos que buscan una formación rápida en lugar de elegir una carrera universitaria para entrar directamente en el sector, otros buscan cambiar de trabajo y reorientar su carrera en la informática en otra dirección etc. Pero lo que todos me han transmitido es que es son cursos duros porque son intensivos, pero que merecen la pena realizar.

Si queréis conocer algo más de información sobre Ironhack les podéis visitar desde aquí.

¿Qué os parecen este tipo de cursos de formación intensiva? ¿Creéis que serán una moda pasajera o algo que ha llegado para quedarse? ¿Forzarán a las universidades a actualizarse? Esperamos vuestros comentarios.

Creación de códigos QR

por:

En este artículo vamos a enseñaros como crear códigos QR, desde la terminal, mediante el paquete/aplicación QREncoder para crear los códigos QR, y por otra parte, iremos usando a lo largo del artículo la aplicación QR Droid, en el móvil, para ir comprobando que los códigos QR muestra lo que realmente ha de mostrar. Pero sirve cualquiera que pueda escanear este tipo de códigos.

Para ello, el único requisito para nuestro sistema operativo, que en este caso es Ubuntu 12.04, es instalar la aplicación QRencoder desde terminal.

Un código QR, es también conocido como un código de barras bidimensional, es una imagen que puede guardar texto, mapas, e incluso contactos para la agenda de direcciones, entre muchas otras cosas. En este artículo vamos a hacer un QR sobre una URL, y un segundo código sobre texto.

Código QR con un enlace

Instalaremos la aplicación con el siguiente comando:

1
apt-get install qrencode
apt-get install qrencode

Para enseñar como funciona esta aplicación, vamos a empezar creando un código QR que nos lleve a la página oficial de Somos Binarios. Para ello, utilizaremos el siguiente comando

1
qrencode -o somosbinarios.png http://www.somosbinarios.es
qrencode -o somosbinarios.png http://www.somosbinarios.es

Ese comando nos creará un fichero PNG, llamado somosbinarios que contendrá el código QR, dónde si lo analizamos con un programa analizador de códigos QR, en nuestro caso, el QR Droid, nos redirigirá a nuestra web, www.somosbinarios.es.

Hay que tener en cuenta que para evitar posibles fallos en los lectores, siempre crearemos las imágenes QR con extensión PNG.

Nuestro codigo QR creado

Leer más

Aprende a usar Markdown y escribe rápido

por:

markdown Header
Entre las muchas tecnologías que se están haciendo populares en los últimos tiempos y de las que os solemos hablar en esta comunidad, hay una con la que no me había topado pero que está convirtiéndose en algo realmente muy usado. Esta tecnología es Markdown, aunque más que tecnología podíamos hablar de un sistema para aplicar estilos a nuestros textos de manera rápida y sencilla.

Por qué es útil Markdown

Muchos de nosotros, somos usuarios habituales de sistemas de procesamiento de texto, como pueden ser Word, Writer. En los que para poner en negrita un texto, por ejemplo debemos soltar una mano del teclado y con el ratón aplicar este estilo o sabernos un atajo con el que poderlo poner sin soltar el teclado.
En algunos casos este sistema es muy interesante debido a que podemos tener un grado de personalización de los ajustes muy amplio, pero en otros casos donde solo queremos tener las tres o cuatro opciones más comunes, debería existir otro sistema que nos permitiera escribir rápido, sin tener que utilizar el ratón para dar el estilo al texto esto es lo que nos permite hacer Markdown.

¿Qué podemos hacer con Markdown?

Por supuesto este sistema, no tiene todas las facilidades que puede tener Word y no vamos a poder configurar el estilo de página o una gestión compleja de los encabezados. Pero hay muchas otras cosas, más que suficientes en la mayoría de los casos que sí vamos a poder hacer:

  • Podemos aplicar negrita y cursiva de una manera sencilla, encerrando nuestro texto con ‘*’ para cursiva y con ‘**’ para negrita
  • Podemos crear encabezados y subtítulos de manera simple, estableciendo una jerarquía usando ‘# ‘ siendo una almohadilla, el elemento mayor de la jerarquía de encabezados (h1 en HTML) y añadiendo otra almohadilla para tener el segundo elemento (h2 en HTML) etc.
    Leer más

MOOC : el nuevo sistema de enseñanza

por:

Para muchos de vosotros, las siglas MOOC (Massive Online Open Course) pueden resultar desconocidas, pero si hablamos de Coursera, Udacity y proyectos similares, puede que la cosa cambie. Pero si todavía no sabes lo que son estos sitios y lo que te pueden ofrecer, te recomendamos que prestes atención al siguiente artículo.

Qué es un MOOC

Logotipo de los cursos MOOC

Los MOOC son cursos de una temática en concreto, que por lo general suelen ser bastante especializados, cuya inscripción es gratuita, que permiten un aprendizaje mediante vídeos y documentos de texto de forma masiva. Este tipo de cursos, suelen tocar multitud de temáticas, aunque los de carácter tecnológicos suelen ser los más comunes. Como rasgo común, podemos encontrar que son ofertados principalmente por universidades de Estados Unidos, como Stanford y Princeton. Estos MOOC intentan ser canalizados por plataformas como Coursera, que buscan por un lado ofrecer la mejor y más variada oferta y por otro, tener una gran comunidad de estudiantes, muy activa y que busque nuevas metas.

Las ventajas de los MOOC

Los MOOC han conseguido, revolucionar la enseñanza con algunas de sus ventajas:

  • Son gratis, así que mucha gente los prueba porque no hay que realizar una gran desembolso. Esto quiere decir, que mucha gente se apunta a un curso, que no tiene nada que ver con lo que estudia o ha estudiado, para probar.
  • Tratan sobre temas muy concreto, como por ejemplo aprendizaje automático, cosa que no ofertan en la mayoría de universidades.
  • Se crea una gran comunidad entre los alumnos, por experiencia propia, casi todos los cursos tiene su grupo de discusión, foro, grupo de Facebook etc, donde los estudiantes presentan sus dudas, documentos relacionados y cualquier cosa de interés para la comunidad.
  • Suelen contar con un material muy bien elaborado, que en la mayoría de los casos, basta para aprobar el curso.

Las desventajas de los MOOC

Principalmente podemos destacar estos puntos negativos:

  • Gran cantidad de los alumnos, nunca terminan los cursos.
  • La mayoría están en inglés, aunque algunos cuentan con subtítulos en diferentes idiomas. Esto supone un impedimento para muchas personas.
  • Es difícil evaluar de forma individual a tantas personas, así que se suelen utilizar exámenes tipo test y los mismos ejercicios. Con el problema, de que los alumnos se copien.

Leer más

Microsoft regala 300 libros sobre tecnología

por:

Rompemos un poco el calendario de publicación establecido para informaros de la nueva iniciativa de Microsoft en la cual regalan gran cantidad de libros sobre tecnología. Aunque principalmente está enfocada en sus productos, como Word, Excel, SQL Server o Windows en sus distintas versiones, también hay otros más generalistas.

Biblioteca

Cómo sacarle provecho a los libros

Un ejemplo sencillo es que si tu buscas aprender SQL lo mismo no hay ningún libro que enseñe SQL exacto, pero seguramente si descargas el de SQL Server vaya explicando el lenguaje SQL y elijan como entorno SQL Server lo cual te puede permitir aprender el lenguaje, ya que la base con la que trabajes es más o menos independiente y por lo tanto no te dará muchos problemas.

Los mejores libros

En esta sección voy a destacar los siguientes:

Como os indicamos hay muchos libros y lo mejor será que cada uno entre y vea cuales le interesan. Podéis entrar desde aquí.

Además Microsoft indica que ya se ha pasado el hito del millón de descargas y han publicado un top que es accesible desde aquí.

Actualización: hoy nos hemos enterado de que Microsoft sigue poniendo a nuestra disposición más libros de manera pública y gratuita, que se pueden consultar aquí entre ellos podemos encontrar uno sobre Windows 10, varios sobre Azure (la nube de Microsoft) y uno muy interesante de desarrollo de aplicaciones móviles multidispositivo con Xamarin. Yo me he bajado este último y la verdad tiene una calidad excepcional, más de 400 páginas donde enseñan lo principal, con ejemplos, fotos, diagramas etc.

Desde Somos Binarios esperamos que algunos de ellos os sean útiles y si os enteráis de alguna iniciativa similar, nos podéis informar vía comentarios o redes sociales.

Microsoft Virtual Academy un buen lugar para aprender

por:

Es estos tiempos actuales, las principales empresas del sector de la tecnología, están desarrollando sus propias plataformas para enseñar de forma gratuita sus tecnologías. Una de ellas es Microsoft que con MVA (Microsoft Vitual Academy) intenta expandir el uso de sus sistemas (Windows 8 y Windows Phone 8) y sus principales tecnologías C#, la plataforma .NET o su nube privada, Azure.

Microsoft Virtual Academy
Microsoft Virtual Academy

Microsoft Virual Academy

Este servicio es un lugar perfecto para aprender, ya que conseguimos contenido de primer nivel (principalmente en inglés) y de forma gratuita. Además quien puede enseñar mejor como trabaja C# que los propios creadores o empleados que trabajan con ellos todos los días.

Tenemos también la oportunidad de configurar los cursos que queremos seguir, realizando un plan personalizado de aprendizaje, para llegar a culminar nuestra tarea. Este recurso lo veo interesante tanto para gente que quiere aprender desde el inicio, como para profesionales que necesitan actualizarse con nuevas tecnologías.

Leer más

Introducción a Git (II)

por:

Manual de git tu repositorio

 

Git : Usando ramas

¿Qué ocurre si queremos trabajar en el desarrollo de una nueva función de nuestro software pero queremos añadirlo a la rama principal una vez que esté completamente desarrollado? Crearíamos una nueva rama en la que trabajaríamos para luego fusionarla con la principal. Esto se hace con el comando git branch <nombre de la rama>, para luego movernos a ese branch con git checkout:

$ git branch nuevo

$ git checkout nuevo

Alternativamente, podemos juntar estos dos pasos escribiendo:

$ git checkout -b nuevo

Esta rama no estará disponible en el repositorio remoto a menos que la subamos:

$ git push origin nuevo

Cuando queramos fusionar esta rama con otra, por ejemplo la rama master (que es la rama por defecto), deberemos hacer el checkout a dicha rama y luego usar git merge:

$ git checkout master

$ git merge nuevo

En el caso de que hayan habido cambios en la rama master probablemente habrá que corregir conflictos en los archivos manualmente. Tras la resolución de dichos conflictos tendremos que hacer el add y el commit habitual. Antes de hacer el merge podemos consultar las diferencias usando:

$ git diff master nuevo

Y finalmente, si consideramos que hemos acabado con esta rama y queremos borrarla:

$ git branch -d nuevo

Leer más

Aprender a programar en c

por:

En esta entrada os queremos invitar a un curso para aprender a programar en c paso a paso. Para ello contamos con un foro y material que se usa en el aprendizaje en las universidades.

Introducción

El lenguaje de programación C fue creado en 1972, está pensado para implementar Sistemas Operativos, clásicamente Unix. Además de para crear S.O. se utiliza para diseñar aplicaciones, debido a la alta eficiencia del código escrito en este lenguaje.

Es un lenguaje peculiar ya que posee características de lenguajes de bajo nivel, como ensamblador (gestión de memoria, punteros, etc.). Pero además se pueden implementar estructuras complejas, como listas, árboles, etc.

El libro más importante es  “El lenguaje de programación C”  (conocido como la Biblia de C) de Kernighan and Ritchie.

El libro para aprender a programar en c

Para consultar más información, os recomendamos este artículo.

¿Por qué aprender a programar en C?

Aunque es cierto que C es un lenguaje que últimamente esta siendo remplazado en la docencia por Java y otras personas lo consideran una base para C++ o C#, nosotros si creemos que tiene sentido aprender a programar en C.

Aprender C puede ser el primer contacto de un informático con la programación a bajo nivel y además permite darse cuenta de la potencia que tiene este lenguaje, ya que posee punteros. Un buen manejo de los punteros permite aumentar la eficiencia de los algoritmos de manera exponencial, pero también he de decir que un conocimiento justo de ellos, puede probar serios problemas de corrupción de memoria o de acceso a zonas de memoria restringidas.

Leer más

Aprender Verilog paso a paso

por:

 

Aprender Verilog paso a paso

 

Introducción

Verilog es un lenguaje de programación orientado a la realización de simulaciones de hardware. Esto permite describir en este lenguaje puertas lógicas y sus conexiones y realizar distintas pruebas, antes de construir directamente el componente o circuitos, que pensábamos hacer. Además permite la depuración y análisis de resultados, que nos sirven para optimizar el circuito y reducir costes (por ejemplo pasar de 7 puertas lógicas a 3).

¿Por qué aprender Verilog?

Realmente yo no conozco a nadie cuyo trabajo exija tener conocimientos de Verilog, es un lenguaje que se usa principalmente para diseñar nuevas CPUs y otro tipo de complejos circuitos, con grandes costes de producción y multitud de elementos eléctricos y electrónicos. Normalmente el diseñar una nueva CPU o un pequeño PIC con Verilog, es un proceso complejo y que requiere muchísimo tiempo, ya que hay que indicar cada conexión una por una y unirlas patilla por patilla de cada elemento.

Captura de un fragmento de código de Verilog

Leer más