martes, 31 de diciembre de 2013

Feliz 2014!!



Feliz 2014 para todos!!!

* Hay dos días al año sobre los que no puedes hacer nada: ayer y mañana. Solamente hoy podrás perdonar, sonreir, soñar, amar, sentir. Feliz Año Nuevo 2014

* Quien volviendo a hacer el camino viejo aprende el nuevo, puede considerarse un maestro. Feliz año nuevo!

* Cierra los ojos, piensa en todo lo que te hizo sonreír en el año que termina y olvídate de lo demás…Ojalá esas sonrisas se te multipliquen para el 2014. Feliz Año!

* La vida te da mil razones para llorar, demuestra que tienes mil y una para soñar. Haz de tu vida un sueño y de tu sueño una realidad. ¡Feliz año nuevo 2014!

* Los amigos son como las estrellas, no siempre hablas con ellas pero tú sabes que siempre están allí. Feliz año nuevo 2014.

* Hoy te he ingresado 365 días de buena suerte, alegría y felicidad en tu cuenta número 2014. Adminístralo, que no hay para más. ¡Feliz año!

* Se cambia de año, se cambia de sueños, se cambia de objetivos, se cambia de aspecto, pero jamás, jamás se cambia de amigos. ¡Felíz año!

* Etc...


Debian + Openbox = CrunchBang

CrunchBang es una distribución Linux basada en Debian, que utiliza Openbox.

Openbox es es un gestor de ventanas libre para el Sistema X Window, disponible bajo licencia GPL. Está diseñado para ser rápido y consumir una mínima cantidad de recursos. Para conseguir esa ligereza sacrifica algunas funciones típicas en buena parte de los gestores de ventanas como por ejemplo barra de menú, lista de aplicaciones en ejecución o bordes redondeados en las ventanas. Pero a cambio ofrece otras posibilidades tales como menús generados dinámicamente capaces de ofrecer información variada.

CrunchBang está diseñado para ofrecer un excelente balance entre velocidad y funcionalidad, es tan estable como el mismo Debian, además de incorporar por defecto una interfáz minimalista y moderna que puede ser personalizada con alto grado, lo que hace a esta distribución perfecta para equipos con recursos limitados.

La verdad me gusta mucho!!

Dejo link:
http://crunchbang.org

Kali Linux, el hijo de BackTrack


Si recuerdan el post sobre BackTrack, recordaran que BackTrack era una distribución linux para realizar testing de seguridad, una herramienta para probar si nuestras aplicaciones eran hackables. BackTrack evoluciono en una distro completa que se llama Kali linux.

Esta distribución trae todas las herramientas para hacer testing de nuestras aplicaciones y no permitir fallos de seguridad.

Dejo el link:
http://www.kali.org/

lunes, 30 de diciembre de 2013

Ruby 2.1.0 Liberado



Ruby 2.1.0 ha sido liberado. Una de las más importantes mejoras es en el garbage collection. Esto significa una importante mejora en la performance.

Pero garbage collection no es la única mejora de esta nueva versión, podemos nombrar RDoc 4.1.0, RubyGems 2.2.0, y diferentes actualizaciones de librerías.

Dejo link:
https://github.com/ruby/ruby/blob/v2_1_0/NEWS


jueves, 26 de diciembre de 2013

Los 10 trabajos más buscados en Linkedin

Leyendo clarin, me llamo la atención, este articulo en el cual se publican las mayores búsquedas de trabajo de este año.

Me llamo la atención que este tan bajo la búsqueda de programadores java. En realidad esta oculta las búsqueda de programadores porque por ejemplo Mobile Development, seguro son programador Android y es Java.

Más allá de los programadores Java o C o Ruby, salta a la vista que el mercado no busca solo programadores; buscan gente que programe y maneje tecnologías. Mobile, Cloud, Big data, etc. son algunos de los nombres que se manejan en la lista. Por eso es buena idea no quedarse solo con la programación si no abrirse a otras tecnologías.

Dejo link:
http://next.clarin.com/?dzs_portfolio=los-10-trabajos-mas-buscados-en-linkedin


miércoles, 25 de diciembre de 2013

lunes, 23 de diciembre de 2013

Yii, The Fast, Secure and Professional PHP Framework



Me toco volver a las fuentes y hacer un trabajo en PHP. Y obvio para no reinventar la rueda estoy buscando un framework para trabajar y me tope con Yii.

Vamos a analizar el slogan de Yii, la primera palabra que lo describe es rápido, y la rapidez es algo que se puede medir por lo tanto en su pagina pone esta comparativa con otros frameworks:


Por que es tan rápido? Por que utiliza una técnica de carga perezosa, es decir no carga un archivo hasta que se use.

La seguridad es un estándar de Yii. Incluye la validación de entradas, filtrado de salida, la inyección de SQL y la prevención de Cross-site scripting.

Yii es un framework profesional porque nos ayuda a desarrollar un código limpio y reutilizable. Usando el  patrón MVC, asegurando una clara separación de la lógica y la presentación.

En mi opinión lo que más me llamo la atención de yii es la facilidad con que se trabaja, sale todo sumamente rápido.

Primero descargamos el Framework, luego vamos a http://localhost/yii/requirements/ para ver si todo esta bien; en esta pagina yii, nos muestra las cosas que necesita y si nosotros las tenemos funcionando.

Luego debemos correr yiic desde linea de comando por ejemplo:
./yiic webapp ../prueba

Esto nos creara un esqueleto de la aplicación llamado prueba.

Luego debemos crear la base de datos.

Luego creamos nuestro modelo y de ese modelo se generan los CRUDs. Y luego podemos modificar cada ventana.

Dejo link:
http://www.yiiframework.com/


lunes, 16 de diciembre de 2013

Play Framework for Java Developers


Typesafe creo un curso online gratuito para aprender play para desarrolladores Java. El objetivo es aprender aplicaciones Reactive con Play Framework.

Esta es una buena oportunidad para aprender play y interiorizarse de los conceptos para hacer hacer aplicaciones reactive.

Dejo link:
https://typesafe.com/how/online-training?utm_medium=email&utm_source=Act-On+Software&utm_content=email&utm_campaign=Announcing%20Typesafe%E2%80%99s%20New%20Online%20Trainings&utm_term=Play%20Framework%20for%20Java%20Developers

domingo, 15 de diciembre de 2013

Idris, un lenguaje de programación con Dependent type


Idris es un lenguaje funcional de propósito general, con una particularidad es un lenguaje con Dependent type. Ahora viene la pregunta ¿que es Dependent type? Dependent type es un concepto de la programación pero también de la lógica; Dependent type es un tipo que depende de un valor. En la programación funcional se utiliza para prevenir errores, al permitir un sistema de tipo extensivo.

Dependent type añaden complejidad a un sistema de tipos. Es decir, para saber un tipo en algunos casos se deben realizar cálculos o ejecutar sentencias; esto hace bastante complejo el proceso de chequeo de tipos; y en algunos casos imposible. Pero algunos aspectos del comportamiento de un programa se pueden especificar con precisión en el tipo.

Idris es un lenguaje muy similar a haskell; pero con la propiedad de Dependent type.

Dejo links:
http://www.idris-lang.org/

viernes, 13 de diciembre de 2013

jueves, 12 de diciembre de 2013

Top 10 Ceylon Language Features I Wish We Had In Java

Que buen resumen de las características de Ceylon voy a dejar:
http://ht.ly/rFUAY

Por estas razones es que debemos elegir Ceylon!!

Programación funcional en 5 minutos o más

A mi me llevo un poco más leer todo, pero no quiero ser contra:


Le ayudamos a descubrir linux...

Les quiero recomendar un blog que intenta acercar a la gente común a Linux.

Personalmente me encanta resolver problemas con lineas de comandos. Pero a la gran mayoría de la gente no, por lo tanto la consola es muy buena para servidores y hackers. Pero para la gente común necesitamos un sistema operativo para humanos, por lo tanto la pagina se llama HumanOS.

Dejo link:
http://humanos.uci.cu/

martes, 10 de diciembre de 2013

Leksah, una ide escrita en haskell para escribir haskell

Leksah es una IDE (entorno de desarrollo integrado) escrito en Haskell, y sirve para escribir código en Haskell.

Leksah es  open source y utiliza GTK+ como GUI Toolkit. Es totalmente independiente de la plataforma que este instalado,  puede utilizar GHC.

Entre las ventajas podemos nombrar:

  • Resaltador de la sintasis
  • Autocompleter
  • Documentación
  • Chequeo de errores on the fly

En ubuntu se puede instalar con un simple:

sudo sudo apt-get install leksah

Dejo link:
http://leksah.org/

Dejo imágenes:




sábado, 7 de diciembre de 2013

CodeBrew, un editor online para Scala


Si queres ver si funciona código o queres probar código y no tenes instalado scala; aca te dejo la solución. Un editor online nos puede salvar las papas, les dejo uno muy bueno.

Dejo link:
https://codebrew.io/

viernes, 6 de diciembre de 2013

Como configurar ClearOS como un Gateway?

La gente de Linux Fundation nos dejan un video en el que nos muestran como configurar ClearOS como un Gateway:


jueves, 5 de diciembre de 2013

Linux Mint 16, Petra


Linux Mint ha sido lanzado de forma oficial en sus dos sabores Mate y Cinnamon.

Entre las novedades, podemos citar:

  • Cambios en la pantalla de login
  • Mejoras en la artistica de la interfaz
  • Mejoras de rendimiento
  • Cinnamon 2.0
  • Mejoras en Software Manager


Algo para destacar es que Petra esta basado en Ubuntu 13.10, por lo que trae todas las mejoras de esta versión.

Dejo link:
http://www.linuxmint.com/




Desarrollo de Aplicaciones en HTML5 y para Dispositivos Móviles Firefox O.S


Con ese titulo debe estar muy bueno el curso, les paso el link y opinan:

http://www.formaciononlinegratis.net/desarrollo-de-aplicaciones-en-html5-y-para-dispositivos-moviles-firefox-o-s/

martes, 3 de diciembre de 2013

MongoDB en Español


"Es una pena que muchos libros e información sobre tecnologías novedosas no sean traducidos al idioma español (uno de los primeros 5 idiomas más usado en el mundo); esta limitante origina que muchos estudiantes, entusiastas y profesionales con poco conocimiento de otros idiomas se vean limitado a usar traductores o entender lo que puedan de los libro en otros idiomas.

Por eso me encuentro inspirado para ayudar a crear documentación en español, en este caso sobre base de datos NoSQL (No relacionales) especificamente sobre el motor de base de datos MongoDB. Este libro contendrá toda la información sobre uso, administración y programación con MongoDB, los ejemplos de programación estarán enfocados a Python y NodeJS.

El nivel será de básico a intermedio, en una primera edición, posteriormente saldrán otras ediciones sobre programación avanzada con MongoDB y administración avanzada de MongoDB."

Así comienzo el libro en español de mongoDB que quiero compartirles, un excelente link:

Dejo link:
http://libromongodb.com

domingo, 24 de noviembre de 2013

97 cosas que todo programador debería saber



Voy a hacerme eco de una noticia de Javahispano, 97 cosas que todo programador debería saber es una traducción del libro: 97 Things Every Programmer Should Know

Contiene todo tipo de consejos y recomendaciones para los profesionales de la programación informática: refactorización, código limpio, pruebas, aprendizaje continuo, etc.






Dejo link: http://97cosas.com/programador/

10 Free Java Programing Books for beginners


Una lista excelente de libros para empezar en Java, totalmente gratuitos!

Dejo link:
http://java67.blogspot.sg/2013/11/10-free-java-programing-books-download-PDF-HTML.html

jueves, 14 de noviembre de 2013

What Does the Chameleon Say?

Me reí mucho con este video:

Ceylon 1.0.0 is now available


Sip, la versión 1.0 del lenguaje Ceylon fue liberada hoy. Y esta versión incluye:


  • Una implementación completa del lenguaje.
  • Un conjunto de herramienta de linea de comando, tanto para compilar a bytecode java, como para compilar a javascript.
  • Una poderosa arquitectura basada en modulos.
  • Y un modulo para el lenguaje con el SDK de Ceylon.


Muy bueno!!

Dejo link: http://ceylon-lang.org/blog/2013/11/12/ceylon-1/

miércoles, 13 de noviembre de 2013

hadoopconf; para configurar hadoop con lineas de comando

Me encontre un muy buena entrada acerca de como configurar Hadoop con lineas de comandos, dejo link: http://hadoop.quora.com/hadoopconf-Configure-Hadoop-with-command-line

Saludos.

PYTHON VS. NODE VS. PYPY


Las comparaciones son odiosas, pero si buscamos performance no queda otra debemos comparar y buscar el más rápido, en esta ocasión quiero compartir un Benchmark acerca de la performance PYTHON VS. NODE VS. PYPY.

Por las dudas si no saben Pypy; PyPy es un intérprete y compilador JIT para el lenguaje Python, que se enfoca en la velocidad y eficiencia, y es 100% compatible con el intérprete original CPython.

Dejo el link: http://blog.kgriffs.com/2012/10/23/python-vs-node-vs-pypy.html

viernes, 8 de noviembre de 2013

TDD con Python

Les quiero compartir este genial libro sobre desarrollo guiado con pruebas con tecnología python. Esta muy bueno: https://docs.google.com/file/d/0B27y0EyqdKlPUUhSNjRibHBCQmM/edit?usp=sharing

Aprender a programar en Android desde cero gratuitamente

Quiero compartir estos recursos que están muy buenos y vienen muy bien para poder iniciarse en el desarrollo android:

http://www.elandroidelibre.com/2013/11/aprender-a-programar-en-android-desde-cero-gratuitamente.html

GlassFish Commercial Edition ha muerto


Si bien no me afecta mucho la noticia porque nunca he usado Glassfish edición empresarial. Si me da miedo, Oracle no tiene ningun problema en matar un producto si no le va bien. De todas formas no se cuanta participación en la comunidad tiene Oracle.

De igual forma afecta bastante al producto dado que en USA por ejemplo, son de comprar el soporte comercial. Tambien recordemos que Oracle compro la empresa BEA que era dueña del servidor WebLogic y esto se veía venir. Oracle no iba a mantener 3 productos compitiendo entre ellos en el mercado.

La verdad que creo que es un primer paso a la destrucción de un gran producto. Espero que me equivoque.

Cinco proyectos para aprender Python



Quiero compartir un link interesante acerca de Proyectos hechos para jugar y aprender Python:

http://www.cyberhades.com/2013/08/19/cinco-proyectos-para-aprender-python/

Por que deberías aprender Haskell?

He escrito bastante de Haskell, porque me parece importante; y esto por que? Porque es un lenguaje funcional puro que gano terreno gracias a la innovación, Scala por ejemplo toma muchos conceptos de Haskell. Que sea un lenguaje funcional puro trae consigo muchas ventajas. Por ejemplo no lidiar con estados.

Haskell es lazy. En castellano perezoso lo que significa que el espera que necesites un valor para ejecutar código. Esto en ciertos casos es más eficiente. En Haskell lo que se guarda una variable por ejemplo, son funciones no valores, y cuando necesitamos valores se ejecuta la función.

Haskell es de tipado estático, aunque no necesitemos especificar el tipo. El lo infiere y luego trabaja siempre con ese tipo. Esto es muy útil para minimizar errores.

Haskell es conciso y elegante. Dado que es un lenguaje de programación declarativo, se puede hacer mucho con muy poco código.

Haskell fue creado por un grupo de investigación. El proyecto de crear Haskell comenzó en 1987 cuando un comité de investigadores se pusieron de acuerdo para diseñar un lenguaje revolucionario. En el 2003 el informe Haskell fue publicado, definiendo así una versión estable del lenguaje.

lunes, 4 de noviembre de 2013

Libro sobre go!



No recuerdo si ya compartí este link; igual el publico se renueva, un excelente libro sobre Go totalmente gratuito.

Dejo link:
http://www.golang-book.com/

Conferencia Regional de Software Libre 2013

Quiero compartir esta invitación con ustedes. 

Invitación a la Conferencia Regional de Software Libre 2013

Ésta edición de la Conferencia Regional de Software Libre (CRSL) - Edición 2013 reunirá a las figuras más destacadas del Software Libre en la región y en el país. Se presentarán ponencias referidas al uso y/o desarrollo de tecnologías libres y se mostrarán sus aplicaciones en distintos ámbitos de la sociedad. Además se dictarán paneles de debate que vincularán a las entidades más relevantes (gobiernos, universidades, empresas y comunidad) que utilizan, capacitan o desarrollan con herramientas libres.

Objetivo

El objetivo es crear un espacio propicio de encuentro entre todos los actores interesados y/o involucrados en la temática del Software Libre que posibilite la discusión y el intercambio de ideas y opiniones de interés tanto en ambientes públicos como privados.

Lugar

Centro Cultural y de Convenciones de Entre Ríos "La Vieja Usina". Gregoria Matorras de San Martín 861. Paraná, Entre Ríos, Argentina.

Fecha

Jueves 7 de Noviembre de 2013.

Organiza

El Laboratorio de Investigación Gugler  - Secretaria de Extensión - Facultad de Ciencia y Tecnología - Universidad Autónoma de Entre Ríos.

Certificación

Se entregarán certificados de asistencia avalado por el Laboratorio de Investigación Gugler. Todas los participantes que desean recibir el certificado, deberán registrarse en el formulario online y posteriormente acreditarse en la mesa de entrada el día del evento.

Costo

El evento es totalmente gratuito.

Enlaces

Sitio Institucional
http://crsl.gugler.com.ar

Inscripciones
http://crsl.gugler.com.ar/index.php/inscribite

jueves, 31 de octubre de 2013

Dreamspark

La gente de Microsoft abrió una nueva pagina, para incentivar el estudio de sus tecnologías; este es uno de sus numerosos intentos. Me gusta que una empresa invierta en conocimiento y capacitación pero creo que microsoft esta invirtiendo demasiado en esto porque la gente del software libre comparte de forma gratuita. Y existen muchísimos manuales de uso de software libre.

A mi parecer Microsoft debería tomar otro camino, dar más importancia a las comunidades e invertir en tecnología libre. Si duda un jefe prefiere invertir en tener una arquitectura toda armada. Pero un desarrollador no, a los desarrolladores nos gusta el código y configurar solo lo que usamos. Por eso me gusta tanto el software open source y Java. Tener verdadera soberanía de la tecnología que usamos es más trabajo. Pero el trabajo es nuestro, es decir hacemos una inversión en nuestra gente.

Dejo link:
https://www.dreamspark.com/

Disfraces de halloween para programadores

No me gusta para nada halloween, pero esta caricatura me hizo reír mucho:




miércoles, 30 de octubre de 2013

Probando Ubuntu 13.10 Saucy Salamander

La verdad es que mi prueba fue como usuario, no como técnico,  no tengo la capacidad de decir si xmir es mejor o peor que tal o cual producto aun que 13.10 no lo use todavía. Opino como usuario, y la verdad estoy muy contento.

El sistema se instalo muy bien con 0 problemas con drivers o otras cosas. Luego apareció la interfaz típica de Unity, con pocas modificaciones a mi entender pero suficientes.

El sistema es estable, pero por alguna razón que tengo que ver se pone lento. (lo reviso y les digo)

Muy aconsejable, si no probaste linux esta podría ser una buena distro para empezar.

Dejo link y fotos:
http://www.ubuntu.com/









Execute LISP Program Online (GNU CLISP 2.49)


Queres probar Lisp y no tenes ganas de instalar cosas? Este sitio es para vos! Nos permite ejecutar lisp de forma online. Probalo y me contas!!

Y no tenes solo Lisp si no otros lenguajes...

Dejo link:
http://www.compileonline.com/execute_lisp_online.php
http://www.compileonline.com/

sábado, 26 de octubre de 2013

7 días para Principles of Reactive Programming

El martes 23 de agosto, postee sobre el nuevo curso que dicta Martin Odersky, por medio de la pagina Coursera; ahora solo faltan 7 días así que si no te inscribiste; estas a tiempo!!



Dejo link:
https://www.coursera.org/course/reactive

jueves, 24 de octubre de 2013

The Functional Database


El amigo Rich Hickey (creador de Clojure) creo una base de datos funcional llamada datomic. Pero que es una base de datos funcional? Lo que nos  promete la programación funcional es mayor orden; mejor consistencia y facilidades en el mantenimiento.

Datomic es una base de datos ACID flexible y adaptable; que se integra de forma natural con Clojure; se puede buscar de forma funcional; por ejemplo una query tiene la siguiente forma:

{:find [variables...] :where [clauses...]}

Si bien tiene una versión de pago; podemos bajarnos su versión gratuita.

Dejo link:
http://www.datomic.com/
http://www.infoq.com/presentations/datomic-functional-database?utm_source=infoq&utm_medium=popular_links_homepage

martes, 22 de octubre de 2013

La revista de The Pragmatic Bookshelf





The Pragmatic Bookshelf es una editorial que me gusta mucho, tiene muy buenos libros de programación. También lanza una revista la cual se puede descargar de forma gratuita. Va por el numero 49 y yo ni enterado :S

Se pueden encontrar muchos temas de interés y artículos sobre java, scala, clojure, elixir, erlang, python, ruby, etc.

Dejo link: http://pragprog.com/magazines

lunes, 21 de octubre de 2013

Infografia sobre Ubuntu

Ubuntu ha hecho grandes cosas en su vida, en esta infografia, muestra un resumen:


sábado, 19 de octubre de 2013

Conociendo ML


ML es un lenguaje funcional desarrollado por Robin Milner en los años 70, no es un lenguaje muy usado pero esta lleno de conceptos que son usados en otros lenguajes.

Vamos por parte, es un lenguaje Funcional por lo tanto las funciones son ciudadanos de primera clase. Y a la vez hace un uso intensivo de recursividad, veamos un ejemplo:

fun fac (0 : int) : int = 1
  | fac (n : int) : int = n * fac (n - 1)

Como pueden ver en el ejemplo es de tipado estático, es decir tenes que poner expresamente el tipo, el compilador no lo infiere.

También tiene listas y las listas son tipadas:

- [];
val it = [] : 'a list
- [1,2,3,4,5]
= ;
val it = [1,2,3,4,5] : int list
- [2,3,"hola"];
stdIn:7.1-7.13 Error: operator and operand don't agree [literal]
  operator domain: int * int list
  operand:         int * string list
  in expression:
    3 :: "hola" :: nil

El error es porque quiero poner elementos de diferente tipo en la misma lista. 

Como la mayoria de los lenguajes funcionales ven una lista como el ultimo elemento y el resto; lo que permite junto a la recursividad hacer cosas muy interesantes:

fun contar (xs : int list) : int =
      if null xs then 0
      else 1 + contar(tl xs)
;
contar([1,2,3,4,5]);

Aclaro que null es una función que nos indica que la lista es vacía, y el algoritmo hace lo siguiente si la lista es vacía devuelve 0, si no devuelve 1 más la cantidad de el resto de los elementos de la lista. Con la función tl obtenemos el resto de la lista, sin el ultimo elemento, veamos otro ejemplo:

fun sumar (xs : int list) : int =
      if null xs then 0
      else hd xs + sumar(tl xs)
;
sumar([1,2,3,4,5]);

Con la función hd tomamos el ultimo elemento, es decir que lo que estamos diciendo es que la suma de todos los elementos es igual a la suma del ultimo elemento más la suma de los demás elementos.

Prometo otros posts!

Dejo link:
http://en.wikipedia.org/wiki/ML_(programming_language)


viernes, 18 de octubre de 2013

Cobol está más vivo que nunca: es migrable y transportable


Que lo maten!! grita la gente ...  Hey hey, paren un poco, con este post no intento alimentar el morbo de la gente, ni la lucha entre lenguajes de programación menos que menos apoyar a cobol (que demasiado me hizo sufrir) solo que atraído por una nostalgia vi esta nota y me resulto muy interesante.

"Cobol es un tema importante en el desarrollo de software, es parte de nuestra historia, es parte de nuestro presente y definitivamente será parte de nuestro futuro." Toma tu torta!!

"Si está relacionado, de hecho de las transacciones de negocio que están ejecutando en el mundo financiero un 80% son Cobol, otra cosa es que el front-end sea Java pero detrás está Cobol, así que en Instituciones financieras es importantísimo, pero no es la única industria en la que es importante." Esto me parece bastante discutible pero no soy un estadísta y no tengo datos precisos.

En mi opinión, y solo en mi opinión que que cobol cope los mercados financieros y se use aun demasiado, habla bien de cobol? o habla mal del sector? o habla de una falta de inversión? Entiendo que cambiar grandes sistemas es muy costoso, que lo que funciona no es necesario cambiarlo, pero realmente cobol es mantenible? realmente cobol es el futuro? perdón que lo dude, es solo una opinión.

Dejo link: http://sg.com.mx/buzz/cobol-esta-mas-vivo-que-nunca-es-migrable-y-transportable?utm_content=buffer55a46&utm_source=buffer&utm_medium=twitter&utm_campaign=Buffer