viernes, 22 de febrero de 2019

Linear regression on JS (works on chrome browser console)

Para que no se les canse el dedo picándole a la calculadora, quick and dirty JS code for linear regression para uso en su siempre amiga consola de Javascript (command,alt,J) 

function mult (a){return a[0]*a[1]}

function x(a){return a[0]}

function y(a){return a[1]}

function xsquare(a){return a[0]*a[0]}


function sumArray(A, func){ sum =0 ;for (i=0;i

function linearw1(data) { return (data.length * sumArray(data,mult) - sumArray(data,x)*sumArray(data,y))/ (data.length * sumArray(data,xsquare) - (sumArray(data,x)* sumArray(data,x)) ) }

function linearw0(data) {return (1/data.length) * sumArray(data,y) - (linearw1(data) / data.length )*sumArray(data,x)}

data = [[2,2],[4,5],[6,5],[8,8]]

linearw1(data)

linearw0(data)


Juan Martín Barrios Vargas - comentó 2011-10-27 06:49:48-0700
Como lo hago yo en R:
data <- 4="" 5="" 6="" 8="" br="" c="" cbind="">data <- as.data.frame="" br="" data="">lm(V1~V2, data)
si quieres más información estadística se puede hacer
linear.info <- br="" data="" lm="">summary(linear.info)

Silence broken by repetition

So G+ is shutting down so I did the takeout thing and start browsing through my post (mostly throwaways) but every once in a while I will have things that are still worth preserving so I will add them here if I find something worth publishing

jueves, 9 de agosto de 2012

two years and counting...

People usually write this type of messages when they are leaving Google, either because they want to, in which case they sound phony and over the top, or because they are forced to, in which case they are bitter and incomplete. I want to try something different and write what I really think of working at Google while working here.
Today is my second Google birthday, i.e. today 2 years ago I started working here which puts me in a kind of weird place since I'm certainly not a noogler anymore but neither an old timer. I know for a fact that is fair to say I'm in the middle of two worlds.
On the one side there is the long time Googlers who have been here on some cases right from the start and know everything and everyone and on the other are the nooglers who are full of excitement and have yet to find their place. But right in the middle are the rest of us who have the illusion of control and think we have it figured out :)

I drank the kool-aid


First of let me start with a disclaimer, I do like Google, I loved Google even before I joined Google, I used a bunch of our products for work and pleasure and I since I'm here this love has steadily increased. I do believe that Google is having a positive impact in the world and I'm proud to to be part of it. Yes we are not perfect and ,while we try (really hard) not to, we sometimes fail to do the best thing we can do.

Obviously this is not an official position and I can only speak for myself when I say the things I say but please also let me be clear that there is no personal or company agenda behind these post. I just want to take a snapshot of how I feel and as with every snapshot if others can enjoy it is good if they think is bad and have something to say about it is better.

The right decision for the wrong reasons

So starting from the top, when I joined Google, I was in a really weird place in my life. I had just left a company I build from nothing and that had been my life for the last six years, and I had no idea what I wanted to do next but I did knew that I wanted to be in a place where I could grow and learn. To do that one of the most important things is to be around better people who know more than you do. So the natural move was towards the big tech companies.  So I did some interviews and eventually an offer crossed my path and I took it, thinking "well some time in Google can't hurt a resume right?".

Boy was I wrong ... this place has totally ruined me. I now have a personal bar so high, regarding what I will need from a new job, that I realize that I could not do a remotely satisfying job if I was to put in charge of my own compensation package. Lesson 1: The guy in charge of compensation in this place is smarter than me. 

No, I'm not talking about the strongly publicized perks of Google (though all of them are nice) and no, I don't have a big fat salary, not to be pretentious but I'm pretty sure I could get more money if that was my goal, and finally no, I don't think that the rest of the companies out there are doing it wrong or that this is as good as it gets. What I'm really talking about is the general attitude towards compensation Google has: It feels fair and I'm confident is financially sound (again smarter people than me doing that).  

The "team"

One of the hard parts of being at Google, is explaining to people some of the terms we throw around casually in one conversation or another but may have not precise definition, like googley or the pletora of acronyms we use. Oddly enough when talking about "the team" it always is a qualified term, either explicitly or implicitly. At any given point you are always in a huge number of "teams". My official role is being a CSE (customer solutions engineer if you must know) so in my case you can find a partial list of the teams I can refer to as "the team"; play a game and put each between "the" and "team" or play a drinking game and take a shot for each "the" you forget.
  • Mexico
  • Latam
  • CSE Latam
  • Global CSE
  • Americas
  • SP-latam  
  • Sales
  • Engineering
  • SSPO
  • west wing
  • TGIT
  • "we are trying to find a good name" 
  • Starterkit
  • YouTube 
  • Google
  • ...
There are probably much more than those, including each of the project I'm into, and all the  combinations you can think of. Also as in any launch email, those that were forgot, not because they are not important, but because we really need to send this. The weird part of it is that in all of them you find a place you feel part of, and there will eventually be an all-hands meeting you will get invited to. 

Is all about attitude

One of the unexpected things I found and I love is the extremely open culture (towards the inside) which allows to have very approachable people. You can reach out to most people within the company for help and they will generally try to help you, most won't be bothered by org charts or bureaucracy and if you take others into consideration most of them will consider you too. 
I think Google is full of really talented people and most of them are at least smart, well intended and passionate ... about something. I do not have to come to the office, I like it. I do have internet, food and a big monitor at home guess what is it that is not there.

6 things I hate about you
Obviously there are things I don't like about being here and most of them are probably things I don't like about me, projecting on others, but in the interest of balance and full disclosure here are a few:
  • People that feel better than others. Either internally or even worst with people outside the company. I really don't like when someone talk trash about others in a non-constructive way. This happens everywhere but when I see some Googler doing this, it feels wrong. 
  • You have to watch what you say. People have this tendency to blew out of proportion everything Google (or any googler for that matter) says and it sucks because there is so much you say that actually does not have anything to do with Google that sometimes is just annoying to always keep you mouth connected to you brain ;)
  • You are always using a crappy version of our products. We are famous for testing our products internally before releasing to the general public, which sounds great from the outside but what nobody tells you is that as a result the internal version is almost always crappier than the external. 
  • You lost track of what has been launched, and because you have to watch what you say, you end up keeping you mouth shut about an awesome feature for months after it was launched. 
  • The nagging emails. When you take so much action based on what people think and feel you end up asking a lot of people for a lot of feedback a lot of times, the most unimaginative solution is email which is not that bad the first time you get the email, but not the second nor the third time nor the fifth time asking you to please answer the survey that you answer when the first email arrived 3 weeks ago because "we are only at 83% of completion... ".
  • The re-orgs. Not too much to say I guess that is just another thing we are good at and we like to do it a lot ... most of them are for the best, but I sometimes it feels like driving in circles.

The future

I want to be here for a while, there I've said it. I like lots of things and most of what I don't like I can change. Though I've always feel that wherever I am I'll be there for good, I now know that this is not actually true. I hope this place keeps challenging me to be a better person and a better professional, I hope we keep growing and bringing more awesome people than the ones we lose. 

miércoles, 13 de julio de 2011

Si no te importa cuanto tiempo pasas leyendo email puedes dejar de leer ahora.

Tuve un par de conversaciones separadas con algunos de ustedes que me motivan a compartir algunos tips con ustedes sobre como ser más productivos y en particular como lidiar con la avalancha de emails que todos los días reciben.

Disclaimer: Esto es lo que YO hago, algunas de las ligas mencionan otros pasos u otros nombres pero al final es una cuestión de lo que mejor les funcione.
  • Proceso mi correo N veces al día. No todo el tiempo. El valor que tome N depende de ustedes y de su carga de trabajo, al contrario de lo que piensan más trabajo probablemente implique un N menor, no mayor.
  • Mi proceso sigue los principios delineados por el proceso de GTD de David Allen, si no han leido el libro o visto el techtalk. realmente se los recomiendo.
    • Elevator pitch: Para cada correo en mi inbox decido si tengo/puedo hacer algo, en caso afirmativo tomo una decisión si hacerlo inmediatamente (solo para cosas que toman menos de 2 minutos), agendar un momento específico para hacerlo, delegarlo (asegurándome de dar follow up) o simplemente ponerlo en mis acciones(que es lo que hago el resto del tiempo).
    • Una imagen vale más que mil palabras, pero no tengo tiempo de hacer mi versión así que los mando a esta. :) (external link)
  • Uso ActiveInbox, que es una maravillosa extensión de chrome para implementar este sistema
  • Obviamente Procesar es distinto de HACER. Mi objetivo al procesar email es procesar TODO lo más rápido posible, no necesariamente hacer todo lo que deriva de esto, eso es mi trabajo, en el que me puedo concentrar mejor con mi inbox vacía.
  • Raramente uso más de 30 minutos para procesar mi correo (si, eso incluye después de vacaciones o viajes), se esto porque solía usar un timer para mantener tanto mi regla de 30 min como la de los 2 minutos. Realmente ahora ya no lo necesito (it grows in you)
  • Resultado de todo lo anterior, mi inbox está vacía la mayor parte del tiempo. :)
Voy a dejar las cosas aqui aún cuando hay muchos detalles adicionales que puedo compartir con ustedes porque a muchos les aburren mis largos posts ;) pero finalmente si a alguien le interesa conocer más detalles pueden empezar por :
  1. ver la plática de inbox zero o
  2. ver la info en el sitio 43 folders
Vaz

sábado, 9 de julio de 2011

Quick and fun

Three great tools that helped me get things done quickly and nicely, in their own words:
  • htmlcleaner is open-source HTML parser written in Java. HTML found on Web is usually dirty, ill-formed and unsuitable for further processing. For any serious consumption of such documents, it is necessary to first clean up the mess and bring the order to tags, attributes and ordinary text. For the given HTML document, HtmlCleaner reorders individual elements and produces well-formed XML. By default, it follows similar rules that the most of web browsers use in order to create Document Object Model. However, user may provide custom tag and rule set for tag filtering and balancing.
  • XPath is a language for addressing parts of an XML document, designed to be used by both XSLT and XPointer.
  • XPath Helper makes it easy to extract, edit, and evaluate XPath queries on any webpage.
How to user them together.
One way you can use them is to grab info from a page in a way that you can use process it with your own programs. Please do check that this is compliant with such website terms and conditions ;). Here is how:
  1. Start with any page you like to get it´s content. Right from your browser use Xpath Helper to point to the element you want and you´ll get the expression you need. Tweak it a little bit to grab all the content you need and remove unnecessary parts.
  2. Use HTMLCleaner to programmatically grab that URL and then use the evaluateXPath function to get what you want out of the page.
  3. Do what ever you need with the data and have fun :)
Plus bonus for htmlcleaner it´s on the main maven repo so just include them in you project and go.
They worked great for me and hope they do for you.

jueves, 23 de junio de 2011

Caza ofertas

Hace unos días me preguntaba a mi mismo instigado por Agri si necesitaba comprar algo. Todo esto a propósito de mi viaje a las tierras del chocolate Girardelli y los puentes emblemáticos, i.e. SFO. Y el tema es que no que yo sea consumista, pero la verdad es que a pesar de no ser el único en mi país, los miopes comerciantes nomás no le hacen al big and tall y mucho menos al patón.
por lo que conseguir con que taparme las vergüenzas siempre me ha costado trabajo y aprovecho para llenar mi closet cuando me encuentro por estos lados.

En fin, reflexionando me di cuenta que necesito pantalones ... no para decidir cosas en la casa, ahi todos sabemos quien toma las decisiones :) ... si la Agri :( sino para seguir con la espiral descendente que es mi work fashion estos días, es decir necesito más jeans.

Con esto en mente me dí a la tarea de comprar lógicamente los mismos pantalones que ahora tengo y que la neta me quedan suficientemente bien. Intento 1: amazon ... fail, intento 2: sitio de la marca ... fail, intento 3: google ... fail tanto en natural como en adwords :( decepcionado del pobre estado del comercio electrónico abandoné la misión y me resigné a seguir poniendo en alta rotación los que tengo hasta que algo trágico suceda :P

So estaba caminando por la calle después de ser emboscado por la Mac Store y comprarle su ipad al paquito cuando me encuentro una tienda de X marca que se merece mi preferencia pero no mi promoción :), me armé de valor y entré con pocas esperanzas, procedí a probarme 5 pares en 3 tandas (porque claro los empleados son tan útiles como el web check-in que obliga a pasar al mostrador) sin obtener un resultado satisfactorio... en este punto la realidad es que estaba dispuesto a pagar cualquier precio dentro del rango no escandaloso por un par de jeans ... pero ni Intenet ni el modelo tradicional me habían conectado con lo que necesitaba.
Eso si, en una de las vueltas me topé con una pijama que desesperadamente necesitaba porque la única que tengo creo que la compré cuando aún había torres gemelas ... y se le nota.

Con carita triste me dirigía a las cajas, cuando el rincón de las ofertas me llamó... cabe mencionar que esta es una parada obligada para mi porque simplemente no puedo resistir la curiosidad de saber si hay algún buen deal esperándome.

Así que con un poco de flojera empiezo a buscar cosas de mi talla y rápidamente descarto algunas cosas horribles ... que son muchas, cuando encuentro sorpresa sorpresa unos pantalones con buen potencial para ser míos... los llevo al probador y sorpresa!!! me quedan si bien no perfectos mucho mejor que cualquiera que haya probado ese día ... el color es lo que buscaba así que por fin me fijo en el precio pero obviamente ya decidido a comprarlos.
Cual sería mi sorpresa al notar que habían sido marcados en oferta tantas veces que ahora el total era de ... 97 .... CENTAVOS!!!
esto cerró el tema para mi y obviamente los compré.

Saliendo de ahi recordé que mi equipaje se limitaba a una backpack que con mucha suerte iba a tener la capacidad de almacenar todos los triques que cual servicio de mensajería que soy me corresponde llevar a mis amigos... y para colmo no traje mi maleta extra, así que entro a una de esas tiendas que tienen nombres 0 originales pero que a fuerza de vender una sola cosa acaban apoderándose en forma de marca y franquicia de sustantivos previamente libres. Pero bueno sucede que esta única cosa que venden es justo la que necesito ... i.e. un contenedor.

Entrando a la tienda nuevamente llama mi atención un letrero sobre un anaquel que indica ... ofertas en unas mochilitas dos tres coquetas... así que me acerco y tada!!! encuentro una mini mochila de mensajero con el tamaño perfecto para almacenar mi laptop con su correspondiente fundita acolchonada cortesía de Mr. White. Artículo que aún cuando @solsona fué tan amable de prestar/donar su mochila que es pequeña y bonita aún buscaba reducir un poco más. Me lo llevo dijo mi cabeza y de nuevo a ver el precio ... no era una ganga como mis jeans, pero el precio fue razonable y con descuento se volvió irresistible.

Justo ahora estoy sentado usando mis nuevos pantalones, después de haber sacado mi laptop de la mochila donde cabe perfecto y que de paso alberga convenientemente mi celular, pasaporte y audífonos. El sentimiento general es el de satisfacción por haber hecho un buen negocio y me doy cuenta que es una excelente metáfora para lo que ha sido mi vida en los últimos años. Donde aún cuando siempre he estado dispuesto a pagar cualquier precio razonable por las cosas que quiero, pero me he negado a aceptar menos de lo que creo que necesito y/o quiero, y como han salido las cosas es que cuando no estoy buscando y casi estoy por darme por vencido una oferta irresistible aparece que es todo lo que he buscado y más pero aún así pide mucho menos de mí que lo que estoy dispuesto a dar

miércoles, 28 de julio de 2010

Mi nuevo presentador

Pues me compré un bonito presentador profesional para dar mi curso. El modelo elegido fue el Logitech Professional Presenter R800 with Green Laser Pointer obviamente disponible en amazon.

Las razones por las cuales lo elegí fueron:
1) si algo le aprendí al pinzón en estos años es que el laser verde rifa
2) el timer seguro me será útil para no colgarme en mis presentaciones.
3) el rango que tiene que seguro no es de los 100 pies que anuncian pero creo que será suficiente.

En fin lo que no chequeé por andar de mamador fue como funcionaban los cambios. Así que Oh sorpresa me topé con que las flechas de avanzar y retroceder enviaban un pgup y pgdown respectivamente.
Esto significa que en los google docs el botón no funciona como un click sino que pasa el slide, osea se come mis transiciones.

Obviamente esto no iba a funcionar así que después de un par de googlazos y pensarle 2 segundos encontré que la solución estaba en engañar a mi compu así que agregué un par de configuraciones a mi teclado y TADA!!!! ahora mi control manda un down arrow y up arrow (que hacen lo que quiero) con solo cambiar poner el caps-lock :)

Para el geek que todos llevamos dentro ahi va el como:

En el archivo
/usr/share/X11/xkb/symbols/pc
hay que cambiar la definición de las teclas correspondientes para que queden algo así:

key {
type= "ALPHABETIC",
[ Prior, Up ]
};

key {
type= "ALPHABETIC",
[ Next, Down ]
};


Ojo el ALPHABETIC sirve para que la modificacion aplique con caps lock y no solo con shift.