Tab only in current workspace – Tips for Ubuntu Desktop

Using lots of windows can be messy,  ubuntu desktop (unity and now gnome) gives us the possibility to have multiple virtual desktops to have a better organization of the working space. This excelent feature can be easily enhance by limitin the alt-tab switching command to current space. If not it can be counterproductive.

To make that configuration you can follow this guide

  1. Install dconf-editor
  2. Open  and go to  org -> gnome -> shell -> app-switcher
  3. Set current-workspace-only propertie to true

That’s all!

Installing jade template engine on jsreport

To install Jade / Pug (or any other template engine) with jsreport you con follow these steps:

  1. First off all, create a local folder that will hold the server, i.e.  (~/myTools/jsreport)
  2. Go to that directory. (cd ~/myTools/jsreport)
  3. yarn global add jsreport-cli (you can also use npm install -g jsreport-cli)
  4. Execute the command:  jsreport init (this will create folder structure)
  5. Add jade or ejs or the template engine package to folder with these command: yarn add  jsreport-jade
  6. start the server running jsreport start

That’s  all folks. You should hace jsreport + jade running on port 5488

How to remove a property from a JavaScript Object with ES6 ( ECMAScript 2015 ) – Functional Programming Functional Programming approach

To remove a property from a JS Object, we can take advantage of the destructuring capabilities released in ES6.

Destructuring: It’s a JavaScript expression that allows us to extract data as variables or constants directly from arrays, objects, maps and sets

const removeXProperty = ({x, ...rest}) => rest

Before we have to use the delete operator

const removeXProperty = function(obj) {
 delete obj.x
 return x
}

This way seems better for javascript functional programming.

const employees = [
  {name: 'Pedro', age: 35, address: AddrObj },
  {name: 'Charlie', age: 55, address: AddrObj },
  ... 
]

const removeAddress = ({address, ...rest}) => rest

// If we wan't to remove address from the array we would do


console.log( employees.map(removeAddress) )

    CONSOLE LOG
--------------------------
[
   {name: 'Pedro',age: 35},
   {name: 'Charlie', age: 55}
]

Another very useful thing we can do with destructuring is to modify the value of a property using very little code. For example if we wan’t to uppercase only the name we could do:

const employees = [
  {name: 'Pedro', alias: 'toto', age: 35 },
  {name: 'Charlie', alias: 'titan', age: 55 },
  ... 
]

const nameToUpCase = ({name, ...rest}) => ({...rest, name: name.toUpperCase()})

// If we wan't to upperCase the name we would do

console.log( employees.map(nameToUpCase) )

 CONSOLE LOG
--------------------------
[
 {name: 'PEDRO', alias: 'toto', age: 35},
 {name: 'CHARLIE', alias: 'titan', age: 55}
]

Hope it works for you,

Cheers,

Tus propios iconos al Social Links Menú de WordPress (Tema: Twenty Seventeen)

El social link menú built-in de twenty seventeen

El menú para redes que viene built-in en este tema (muy popular) trae por defecto los iconos de las redes sociales más importantes. Para utilizarlos uno simplemente debe  agregar los links y voilà!

El tema se encarga de agregar los iconos que en cada coso considere correctos. Esto lo hace por la url base (ej: www.linkedin.com) sabe que debe usar el icono de linkedin.

¿ Como podemos agregar redes o páginas que no están soportadas por defecto ? 

Seguí leyendo “Tus propios iconos al Social Links Menú de WordPress (Tema: Twenty Seventeen)”

Un CRM ideal para startUps con todoist, creatividad y un poco de magia

Cuando un emprendimiento empieza a crecer, puede ocurrir que a uno se le dificulte hacer un correcto seguimiento de clientes. Es natural que uno empiece a buscar herramientas que lo puedan ayudar con esta difícil tarea y aquí es donde aparecen los CRM (Customer Relationship Management o Gestor de Relaciones con Clientes).  Hay una oferta muy amplia en el mercado y herramientas realmente productivas. En mi caso todas excedían lo que yo demandaba y por eso me arme una herramienta a medida combinando apps que ya venía utilizando.

Ingredientes:

* Todoist (premium, para poder manejar labels personalizadas)

* IFTTT (if this then that)

* Google Inbox

* Google Contacts

Preparación:

1)  Definir tu proceso de ventas y acciones

Antes de pensar en utilizar cualquier herramienta uno tiene que tener claro cual es su proceso de ventas.

En mi caso utilizo el AIDA enunciado por E. St. Elmo Lewis, pero cada empresa utilizará el enfoque que mas le sirva.

AIDA viene de Atención, Interés, Decisión y Acción.  En resumidas cuentas uno debe llamar la atención de sus potenciales clientes, luego despertar su interés ofreciendo un servicio/producto adecuado a sus necesidades, acompañar al prospect en la toma de decisión y finalmente llevarlo a la acción.

Cada acción entre estas etapas esta representada en todoist (un gestor de tareas ) por una etiqueta.  Deberán crear las etiquetas que resulten mas apropiadas para su caso.

Yo en particular agregue, Seguir, Negociar, Cerrar que son las que se ajustan a mi proceso.

Puestas dentro del proceso quedarían así:

2) Integración con Google Inbox utilizando IFTTT

 En mi caso, este punto era fundamental y no negociable.  Hay muchas herramientas en el mercado que se integran con gmail, pero con google inbox solo encontré una (pero como les comentaba antes tenía demasiadas funciones  para esta etapa de mi emprendimiento) .

Lograr la integración con Inbox es muy simple, para ello crearemos una nueva agrupación a la que llamaremos “Oportunidades”. Cada mail que represente una oportunidad de negocio debe ser etiquetado.

a) Creamos la etiqueta. Hay un botón “Crear” en el fondo de la lista de etiquetas

b) Creamos la etiqueta oportunidades

c) Seleccionamos el mail que represente una oportunidad y lo movemos a oportunidades

d) El mail queda asignado a Oportunidades

En IFTTT creamos un nuevo applet

Con la siguiente configuración

Cada vez que agrupemos un mail se creara una nueva tarea para que podamos darle seguimiento a la oportunidad.

A esa tarea le iremos agregando como comentarios toda la info relevante relacionada a dicha oportunidad. También iremos actualizando el estado de acuerdo a la etapa en que nos encontremos. Si ya avanzamos a la etapa de decisión la tarea se verá así:

Por último lo pasamos @cerrar si estamos puliendo los detalles del contrato

Una vez cerrado el trato se marca la tarea como completa.

3) Google Contacts nos sirve para guardar toda la info relevante del cliente

Conclusión

La intención de esta  publicación es compartir una integración que a mi me sirve para hacer seguimiento de oportunidades. No soy un especialista en ventas y cualquier comentario que quieran hacer para mejorar este instructivo será bienvenido.