25 de diciembre de 2017

Slices may behave strange

While doing an advent of code exercise I saw an strange bug: 

in a [][]byte when I modified a point [3][10] it also was modified in [0,4].

So the problem was a slices sharing in some way the backup array, but how?

for me was not trivial to know why it was happening because I was using append.

After some coincidences that helped me to find first the bug, and then think in how to resolved.

I found out the problem was my split.

Basically I had this input:
.........
.........
.........
.....#...
...#.....
.........
.........
.........

So I read all and put it in a data[]byte.

then I called byte.Split so I have grid [][]byte

then I add a new column at the end:

for i:=range grid{
   grid[i] = append(grid[i], 46)
}

so when I modified grid[3][10],  grid[0][4] was affected. For me this was a big ? why?

Eventually I realized that if  data was a big array of contiguous memory that contained my input.
so the split what it does was create a two dimensional slice:
grid [][]byte, with data[index:]

So even when I was able to work with grid as a two dimensional slice the backup array was the same. big array from data []byte.

so when I added a new column to the row, in reality I was using a contiguous memory space. which was the same as the beginning of my other row.

So when you use bytes split consider that [][]byte is using the same backup array than the source []byte.

This is an example that shows the issue:
package main

import (
   "bytes"   "fmt")

func main() {
   data := []byte(`hello world`)
   grid := bytes.Split(data, []byte(" "))

   fmt.Printf("%q\n", grid)
   grid[0] = append(grid[0], byte('1')) // Adding 1 to hello   grid[0] = append(grid[0], byte('2')) // adding 2 to hello1
   fmt.Printf("%q\n", grid) // the w was modified}

output:
["hello" "world"]
["hello12" "2orld"]

22 de diciembre de 2017

Slice rotate

There is a good site with golang "slice tricks" and want to add the rotate of a square two dimensional slice. 

for i := 0; i < len(a); i++ {
   for j := i; j < len(a); j++ {
      a[j][i], a[i][j] = a[i][j], a[j][i]
   }
}

6 de agosto de 2017

Mi propio wiki

Bueno ya estoy de vuelta, y quiero mostrar algo que me ha parecido útil en mi vida laboral.
Se remonta a cuando entré a trabajar en Montreal. Estaba haciendo pair-programming con alguien que considero muy bueno. De entre todo lo que aprendí de él hay algo que quiero remarcar para este post y es el uso de un wiki para el trabajo.

De momento me pareció algo exagerado tener un servidor mysql y un servidor web para la wiki de una sola persona. Pero definitivamente era una herramienta útil.

Cuando este senior programmer se fue de la empresa me di a la tarea de buscar una solución que me pudiera servir.

Entonces evalué varios wikis, como por ejemplo media wiki. Pero me tope con uno que se destaca para mi caso de uso.

Y ese es: http://tiddlywiki.com

Ahora que lo pienso, mi wiki tiene que ser algo que me ayude organizar información y que me permita colaborar con mis differentes Yos en el tiempo.

Por lo regular encuentro información por haber leído código o por haber preguntado a otras personas, y como son comandos o procesos complicados que no puedo recordar porque los uso esporádicamente.

Lo que hago es que lo meto en una entrada del wiki y listo ya lo puedo olvidar. Después cuando pasan seis meses y tengo que saber la lista de comandos precisos para hacer una actividad. Busco en mi wiki y listo.

La ventaja es que tiddlywiki esta autocontenido en un solo archivo. Y con la ayuda de un plugin en firefox, ni siquiera tienes que "descargar" el archivo para salvar. Y con dropbox lo puedes sincronizar y tener disponible en todas tus computadoras.

Este no esta hecho para ser multiusario. Pero es suficiente para mis propósitos.

Un día le mostré aun amigo keep.google.com y este me dijo: "entonces para que necesitas tu wiki?"

Y me quede pensando puede que tengas razón creo que la única diferencia es la que yo hago al usar mi wiki para el trabajo y keep para asuntos personales.

Bueno en general se los recomiendo.

Cuales son tus herramientas?

31 de mayo de 2017

Los hábitos que quiero fomentar

Si bueno, probando, el micrófono sigue funcionando?
Este blog se ha caracterizado por muchos re lanzamientos, vengo y digo ahora si voy a continuar este blog. Durante un momento fui muy fanático de escribir, y luego ya no tanto, pero bueno que mas da, vamos a relanzar el blog y ahora va a ser mas técnico, mas geek, mas personal y sobre todo mas, mas -pausa teatral-, mas sobre software.

A pesar de todo me ha gustado releer lo que he escrito aquí. Me permite regresar al pasado y revivir. 

Antes que nada, quiero hablar de que es lo que estoy haciendo.

Trabajo como desarrollador python para una empresa de video juegos en Montreal.
Ya no estoy estudiando francés, y aunque me encanta ahora que lo deje, ya lo estoy empezando a olvidar. Pero al menos intento escuchar radio en francés todos los días.

Un amigo me recomendó un app en ios, sobre como escoger hábitos y hacer tracking de ellos. Yo baje un app para android y lo sigo. El primer día le puse muchas cosas y ahora ya lo limpie y deje cosas mas realistas pero trato de seguirlas.

Los míos son: 
Por la mañana: Tomar un vaso con agua como primer acción del día, tomar mis vitaminas, decirme que hoy va a ser un gran día, tomar un tiempo para dar un gran respiro. ahh y tomar mis vitaminas. (aquí hago trampa porque aprovecho el habito de tomar un vaso de agua para tomarmelas)

A medio día: Comer mas verduras y frutas, tomar una taza de te y aquí tengo caminar unos 20 minutos. En cierta forma hago todo eso cuando camino por mi ensalada al super mas cercano. Y soy afortunado de que en el trabajo podamos tomar dos frutas cada día.

Por la tarde: Estudiar algo una hora, leer, desconectarme de todo a las 10 y dormir temprano.

Como duermo temprano me levanto temprano y llego mas temprano al trabajo. Por lo que puedo salir mas temprano y disfrutar mas el quasi buen clima que empieza a haber en Montreal.




15 de febrero de 2017

Ansina

El dia de hoy mientras estudiaba francés en línea, repasaba los adverbios, cuando note uno en especial, que ya conocía pero que ahora releyendo me cayó el veinte de que el adverbio existe en español.

El adverbio es "ainsi" y cuando lo leí me preguntaba si este adverbio estará relacionado con el que alguna vez escuchamos en los pueblos: "ansina" y al principio pensé que era posible. Y cuando busqué ambas definiciones efectivamente están relacionadas del latín "in sic":


Y ansina es como ahorita mi cabeza está que estalla, lo curioso es que en francés, el adverbio sigue en uso pero en español está en desuso. 


23 de julio de 2016

Dos entradas más

La película de Terraformars estuvo genial, al principio tuve mis dudas pero la historia va de twist que al final no sabes como va a acabar. Los efectos y las peleas al estilo anime me gustaron me hicieron recordad a Dragón Ball Z.

Las película del director estuvieron en fantasía desde el primer Festival en 1996 y pero no había tenido la ocasión de asistir pero esta ves por fin asistió.

Aunque soy asiduo visitante de chowfanblog no me había percatado que este director dirigió algunas películas que me gustaron mucho.

En cuanto a la película the wailing estuvo muy buena con humor y todo aunque yo soy fácilmente asustado creo que tuvo escenas con muy buenos efectos.

Esta padre normalmente estoy acostumbrado a ver este tipo de películas en casa y tener esta oportunidad de verlas en la pantalla grande es genial.

A mi me gustaba ir mucho al cine pero en estos tiempos por lo menos en algunas salas en México siento que veo la película con mejor calidad en casa.

Pero bueno que se le va a hacer, ahora todo está automatizado no hay nadie del cine viendo que la película este corriendo bien.

Y por terminar quiero comentar que en mi trabajo regalaron más boletos y a mi me tocaron dos cupones que luego tuve que cambiar en la taquilla.

Le Di uno a mi esposa y es por eso que ahora tengo la oportunidad de ver Sori.

Bueno ya estaré contando que más pasa ante.

Y cerca del Festival hay un sitio de noodles. :)

11 de julio de 2016

Festival Fantasia

El festival fantasia esta por empezar y hay una gran cantidad de películas a escoger de diferentes géneros y orígenes. Aunque este año me incline mas por el cine asiático porque son películas que no tiendo a ver en el cine. La oferta de  películas es tan grande que puedes hacer del festival lo que tu quieres que sea.
Mi selección de películas es la siguiente:
The terraformars (Japones)
The wailing (Coreana)
Skiptrace (China)
Familyhood (Coreana)
The top secret: Murder in mind (Japonesa)
Hace dos años cuando fue mi primer festival mi criterio fue mas orientado a peliculas independientes de ciencia ficción (en particular sobre viajes en el tiempo).
La oferta de peliculas es enorme, en total las peliculas se exhiben en 8 salas diferentes exparsidas en diferentes auditorios y teatros por el metro Guy-Concordia y justo acabo de notar que mis cinco peliculas esta en el mismo lugar.
En fin, tratare de dar una pequeña opinion de cada pelicula despues de haberlas visto. Hasta la proxima.
ps.
Peliculas que me quedare con ganas de ver:

9 de julio de 2016

Algo deberia cambiar

A cinco meses de que mi tablet tenga dos años conmigo, me parece muy injusto que siendo un buen hardware no haya mas actualizaciones solamente porque no es económicamente buena idea desde el punto de vista de la empresa que las fabrica.
En ese sentido, no creo que realmente convenga comprar high end devices porque el precio es mas elevado, se deprecian cuando sale el siguiente modelo y aunque al ser high end bien podrían continuar en buen funcionamiento con los nuevos SO dejan de sacar actualizaciones.
Claro que con Android las cosas han mejorado, la posibilidad de actualizar el SO, era algo no común en los antiguos devices. Y daba pena que entre mas servicios extra tuvieran menos podían resistir el paso del tiempo.
Es por eso que creo que algo debería cambiar, que se separe la actualización del SO de la capa de modificaciones del carrier. Algo modular que permita actualizar y aun así mantener los cambios que cada carrier quiera tener.
Claro que seria buena idea que, si el device no soporta el nuevo, SO tuviéramos la opción decisión hacer downgrade.

5 de junio de 2015

Banano, platano, cambur, plantain, platano, guineo

Espero no ofender, podría ser diferente en la región en que vives pero me pareció curioso esto y lo quería compartir.

Bueno el punto es que En México a todo lo de arriba le llamamos plátanos .

Pero Ahora que he podido convivir con personas de España, Venezuela y mi maestro de Frances.

Me dicen que por ejemplo lo que nosotros llamamos como Plátano en México (el mas común no el plátano macho), en Venezuela le dicen Cambur, y en España Banano.

Y a lo que nosotros llamamos Plátano macho, le dicen en Venezuela:Plátano, en España:Plátano en Quebec:Plantain

Y le pregunte a mi compañero de Brazil y me dijo que el conoce al plátano macho como banana de tierra, y es parecido como en México en el sentido que todos son banana .

Y es chistoso,  trabajando con personas de todo México, seguido nos topabamos con cosas que cada persona llamaba diferente, pero aun así teníamos un marco general para nosotros todos son plátanos y podemos indicar el tipo para ser mas específicos.

28 de mayo de 2015

Como en los años 00's

Cada ves que entro al espacio para crear post, hay unos blogs a los que estoy suscrito, el otro día recordando el tiempo en el que google reader era la neta del planeta me puse a hojear y dije sabes que voy a usar otra vez un rss reader no le hace que google reader ya no exista, ni que por culpa de este ultimo bloglines se haya hundido.

El caso es que ya habia intentado antes, pero tenia muchos blogs que no se actualizaban y tenia otros que actualizaban mucho, pero que no eran personas en si si no un grupo de noticias. Entonces me propuse a limpiar los blog personales que seguia y me puse manos a la obra.

Primera regla para permanecer en mi rss es haber publicado algo este año. Ahi me sorprendió que MetalKnite haya escrito algo este año asi que el y otro pequeño grupo ahora son seguidos por mi. 

Segunda regla evitar los sitios de noticias, porque para empezar son muchas personas y aunque sus noticias estan curadas a veces, para eso ya uso reddit a si que fuera contentware.

Y lo que me quedaron son como 12 blogs de los cuales estoy muy contento de seguir porque en promedio escriben entre todos 2 post por semana lo cual es bastante fácil de seguir. 

Y asi es como siento como si estuviera en la década pasada.

Y ustedes tienen alguna actividad que hayan retomado últimamente que los haga sentir como de la década pasada?

20 de mayo de 2015

Los otros

Montreal es una ciudad donde hay dos grandes grupos: los francofonos y los anglofonos (el resto somos alofonos)

Es curiosos porque en la provincia de Quebec hay leyes que protegen el idioma, la cual comprendo la razón, y creo que en algunos casos exageran el alcance en la que los aplican pero en general estoy de acuerdo en que quieran preservar su idioma. 

Total que cuando yo llego a la ciudad me parece padre tener la oportunidad de aprender un nuevo idioma así que decido vivir en una zona francofona y me ha gustado, no he tenido problemas pero creo que siempre estoy tratando de mostrar que estoy aprendiendo francés y creo que eso los alaga y les caigo bien, o eso creo yo.

Para poner algo de contexto antes de comentar mi experiencia con los Angofonos les comento que en youtube una vez escuche alguien que dijo que: "Se piensa que la división de Montreal esta dada por el idioma, pero en realidad la división esta dada por un lado los que solo quieren hablar una lengua y los que aprenden las dos lenguas -la francesa y la inglesa-"

Entonces pues como les decía yo arriba, mas bien me considero un poco barbero porque siempre trato de hablarles en francés y cuando cambio a ingles les pregunto en francés si podemos continuar en ingles.

Pero tres veces me he topado con los otros y pues yo queriendo agradar les digo que no se francés aun pero estoy aprendiendo, a lo que me responden no lo necesitas hablas bien el ingles.

Y otro ejemplo fue este fin de semana fui a Mount Royal y nos preguntaron de donde eramos en ingles y les contestamos de México y todo entonces se dirigieron a mi hija mayor y le preguntaron como estaba y le respondimos que no sabia ingles todavía, pero que podría entenderla en francés mas que en ingles por la escuela.

A lo que no dijo nada y se siguió dirigiendo a ella en ingles y le dijo pero también tienes que aprender ingles, ves las caricaturas en ingles? Mi hija no entendía, por lo cual le traducimos.

Al final yo pienso que la persona nos creyó turistas y nos pregunto si enseñaban francés en México.
A lo que contestamos que no, y ya no dio tiempo de explicar mas. Pero entonces me pareció evidente que nos habíamos topado con los otros!

Slices may behave strange

While doing an advent of code exercise I saw an strange bug:  in a [][]byte when I modified a point [3][10] it also was modified in [...