geografías, sistemas y más

Año: 2021

Migrando a Debian 11

La intención de está entrada es contar las primeras sensaciones usando Debian 11. En primer lugar, no soy administrador de sistemas ni un usuario avanzado de GNU Linux. Si bien desde el 2019 utilizo GNU Linux, en este tiempo no me dedique a estudiar el sistema en detalle. Solamente hacer instalaciones personales ( a través de Calamares), agregar o sacar repositorios e instalar y desinstalar programas con la terminal. Dado estos conocimientos básicos, Debian siempre había parecido un cuco. Tiene fama de ser dificil de usar y que es facil de “cagarla” sino estás muy en tema.

Mi historial GNU Linux

Cómo mencionaba, desde el 2019 elijo usar (cada vez que puedo)  software libre. Si bien había tenido algunas experiencias anteriores, allá por el 2009 o 2010, instalando Ubuntu y Linux Mint en la búsqueda de una interfaz más similar a Windows, en ese entonces no sabía de la filosofía del Software Libre. Las experiencias habían sido buenas pero la necesidad de usar Arcmap me ancló a Windows.

En el 2019, me uní al Club del Software Libre y realicé un taller de instalación. El resultado fue tener un dual boot durante dos meses entre Windows 10 y Ubuntu Studio, y luego de eso me di cuenta que el Windows ya no lo usaba ni tampoco lo necesitaba.

Había elegido Ubuntu Studio porque me llamaba mucho la atención la cantidad de programas que venían enfocados a la producción audiovisual. Luego de unos meses cambie a Ubuntu Mate ya que los programas esos no los usaba y quería algo más limpio.

En estos años, Ubuntu (el 18 y el 21.04) anduvo muy bien. El sabor tenía todo lo que necesitaba, y los programas que uso (QGIS, R Studio, Anaconda, Inkscape, GIMP, Atom y Steam) también respondieron bien. Solo que estas últimas semanas empezó a fallar con algunos congelamientos que me forzaron a resetear y perder algunas cosas mínimas. Dado que estaba por tener vacaciones era el momento de probar una distro nueva, cosa que si tenía algún problema tenga el tiempo para arreglarlo o en el peor de los casos volver a una instalación limpia de Ubuntu.

Migrando a Debian

La principal fama de Debian es que es estable y eso es lo que estaba buscando después de tener esos congelamientos en la compu, un sistema estable que no se cuelgue. La segunda fama que tiene es que no es la más amigable para usuarios novatos. Con el primer punto – hasta ahora coincido – con el segundo no del todo.

Considero que es super importante probar la distribución antes de instalarla (a menos que tengamos una máquina de pruebas). En mi caso, armé una máquina virtual, por un lado, viendo el live, y por otro, para probar el instalador, a ver si tenía algo complicado o algo que tuviera que investigar.

Otro elemento relevante, es realizar la migración con tiempo. Cuando hablo de la migración, hablo desde el momento en que investigamos que distro queremos, probarla, instalarla e instalar los programas que usamos. Es decir, un tiempo pre instalación, y también un tiempo post instalación para dejar todo “pipicucu”.

A su vez, y no menos importante, pensar bien las particiones. Lo más facil es hacer la instalación automática, que el instalador se encargue de las particiones. El tema es que a largo plazo esto implica mayor tiempo de backup y más vueltas si queremos instalar varias distros, o si queremos volver a instalar una distro de cero. En mi caso, tengo una partición para el boot, otra swap, otra root y otra para el home (donde pongo mis archivos, documentos, descargas, bla). Esto me permitió que al tener el home en una partición aparte, todos mis archivos sigan estando con el mismo orden y en el mismo lugar, con la migración de Ubuntu a Debian.

El instalador que use se llama “Calamares” y basicamente es un instalador gráfico que te va diciendo que hacer (elegir donde estás, idioma, teclado, si queres particionar y la instalación). No recuerdo cuanto tiempo me llevo instalar pero habrá sido entre 15 y 30 minutos. La iso la descargue de este link que es la versión con controladores privativos. Y el sabor que elegi es KDE. Entiendo que puede haber otros instaladores en donde el usuario tiene mayor control de lo que instala, en mi caso no quise probar algo nuevo y la verdad que no hubo problema. Se instaló todo, resetie y CHAN… Error de Grub!

En ese momento putie un poco pero fue una falsa alarma. No se bien que hice, si desactive el secure boot, o pase a modo UEFI o que (esas son cosas que no entiendo mucho) pero al cambiar eso booteo perfecto y ya estaba usando Debian.

Los chiches de KDE

Una de las razones por las que elegí el sabor KDE sobre Mate (que venía usando antes) es que KDE tiene miles de opciones, widgets y cosas que hacen que la compu se vea re contra cheta. Creo que lo primero que hice con el sistema fue probar estas cosas y si bien hay templates de usuarios y se puede agregar botoncitos y “cositas” lo más funcional para mi sigue siendo lo más sobrio en cuanto a diseño.

A la derecha de la pantalla, agregue unos widgets de rendimiento (memoria, cores, cpu use), una barra inferior con algunos íconos favoritos, que está abierto y el minimizador, y por último, arriba a la derecha otra barra con la hora y algunas opciones de dispositivos (wifi, bluetooth, conexión, display, avisos, sonido).

Instalación de aplicaciones

La instalación de aplicaciones, al menos las que uso yo, no difiere mucho de Ubuntu. Algunas están en el centro de software y otras se hacen a través de la sources.list. Por ejemplo, QGIS se puede instalar agregando repositorios o a través de Discover, el centro de software.

 

En cuanto a la sources.list simplemente tengo agregado repositorios non free y los repositorios de QGIS

Y los drivers?

La verdad es que la instalación que use me dejo todo andando: wifi, bluetooth, audio, mic, placa de video. Pero con esto último si hubo algunas idas y vueltas. Mi laptop tiene dos placas de video: una onboard y otra nVidia que uso para juegos. La instalación que hice yo instala drivers para la placa nVidia no privativos. Más allá de los drivers, privativos o no privativos, a la hora de correr juegos en Steam (el CSGO) lo primero que pasaba es que estos se ejecutaban usando la placa onboard, lo cual bajaban mucho los FPS.

Al instalar, los drivers privativos esto seguía sucediendo y ahi empecé a “meter mano”. Y si bien esta es una forma de aprender a veces podemos romper algunas cosas. En mi caso, el “meter mano” implico agregar repositorios de testing, backports, actualizar todo el sistema, y a partir de eso, actualicé kernel, drivers y demás. El resultado fue que los juegos empezaron a usar la placa de video nVidia pero después de unos minutos se tildaba todo al momento de jugar. Fuera de los juegos todo andaba impecable.

A partir de eso, decidí volver a atras instalando todo de 0. Cómo la instalación había sido fácil lo mejor era empezar con una instalación “fresca”. Si bien fueron varias horas con prueba, la placa funcionó. A diferencia de Ubuntu en donde había una opción de actualización en donde elegía que drivers quería, acá tuve que seguir algunos pasos que están muy bien documentados y a su vez, cuando quiero utilizar la placa tengo que ejecutar una serie de comandos para activarla.  Algo asi como ejecutame esto usando tal placa. Seguramente esto se puede mejorar armando un acceso directo, por ahora esta solución me alcanza.

Todo el tema de los drivers nVidia fue lo que más dolor de cabeza me dio, creo que fue una buena experiencia para aprender un poco más del sistema. Por otro lado, quizás con los drivers no privativos probablemente también sirva esta solución, pero ahora prefiero no cambiar. Estoy con el kernel 5.10 y drivers nvidia 460…

Conclusiones prematuras

La experiencia usando Debian 11 viene siendo muy buena. Es cómo tener una compu nueva ( por rendimiento y por estética). La usabilidad del sistema para un usuario novato o seminovato cómo yo, hasta ahora es muy similar a Ubuntu. La instalación fue impecable y termino con todo operativo (uno de los miedos alrededor de GNU Linux). El tema de drivers nVidia puede ser algo hincha huevos pero puede pasar en todas las distribuciones pero a diferencia de Ubuntu (que es de donde vengo) creo que Debian tiene una documentación más robusta y no es poca cosa. En general, cualquier duda de Ubuntu la resolvía en stackexchange. En este caso, los primeros y mejores resultados fueron los que vienen de la wiki de Debian con paso a paso y explicaciones entendibles para usuarios no avanzados. Un ejemplo de esto, es que no solo muestran diferentes formas de instalar drivers privativos sino que hay una wiki especifica para usar Steam. En este sentido, y una de las cosas que más me sorprende del software libre vs el software privativo es la documentación y la ayuda de la comunidad. Para este último, hay un cierto “status quo” de la documentación y de las ayudas. En otras palabras, suele pasar que en los foros, las respuestas oficiales tienden “esto tiene que funcionar asi y punto!” (mirar foros de PowerBI o ESRI). Con el software libre, la documentación y las ayudas están más humanizadas entendiendo el ecosistema de usos y problemas que puede haber. Pero sin extenderme mucho en esto, me sorprendio y para bien la documentación en Debian.

Cómo conclusión final, la cantidad de distribuciones para probar es muy amplia y hay mucha variedad según que uso le demos a nuestras PC. En tanto y en cuanto, tengamos una máquina virtual para hacer pruebas y un poco de tiempo, mi recomendación es que investiguen y vean que es lo que buscan en su informática y seguramente encuentren una distribución GNU Linux que les cierre. Se van a dar cuenta que el software libre no solamente no muerde sino que es funcional y transparente.

Sale Counter!

ACLARACIÓN 2023  Por un problema de migración se perdieron las imágenes.

Lo importante: link a la app , link al código


Marzo 2020, empieza la pandemía, incertidumbre, confinamiento y Counter Strike…. Resulta que pocos días de dictarse el confinamiento en Argentina, se organizaron unas partidas de Counter Strike Global Offensive. Lo que empezó con un rato de distracción derivo en un nivel de manija importante. Jugamos casi todos los días a las 19hs durante 7 meses seguidos de dos a tres horas sumando miles de mensaje en el grupo de wasap discutiendo las partidas (Estudio Counter se llamó off the record).

El punto es que en algún momento se investigo sobre la posibilidad de obtener estadísticas de cada partida, se armaron tablas para completar manual pero nada de eso prospero.

library(CSGo)

Julio 2021, en una de tantas noches de insonmio veo que existe una API de CSGO para utilizar con R Studio (Gracias Adson Costanzi Filho). A partir de eso, la manija se apoderó de mi y decidí armar una shiny app… un poco para fogonear en el grupo, otro poco para practicar un poco de shiny y no oxidarme.

Por si no les interesa, el código, el link a la app está acá. Sino acá va un poco del esqueleto de la APP…

 

Tres cosas importantes:

  • necesitamos credenciales para usar la api . Si escribimos en r vignette("auth", package = "CSGo")nos aparece el paso a paso para conseguir la credencial de la api
  • necesitamos nuestro user id, o el user id de algún amigo. Para ésto debemos ir a nuestro perfil de steam y desde ahí vamos a ver que la url tiene un formato similar a este: ‘https://steamcommunity.com/profiles/76561198263364899/’ En este caso, el user id son todos esos números que aparecen en la URL

 

  • Por último tenemos que poner la configuración de nuestro perfil en “público” de lo contrario no vamos a obtener ningún dato cuando utilicemos la API. Para eso último debemos ir a Editar Perfil dentro de Steam y dejar configurado el perfil cómo aparece en la imagen

Luego de todo ésto arrancamos en R. La idea de la APP era tener una parte de gráficos comparativos (siempre jugamos los mismos y esto servía para picantear quienes eran los mejores rankeados o los peores) y otra parte con estadísticas individuales utilizando un filtro reactivo con los jugadores.

 

# Instalamos el paquete y lo cargamos
install.packages("CSGo")
library(tidyverse) #para no perder la costumbre
library(CSGo)

 

Con el código get_stats_friends

csgo_stats <- get_stats_friends(api_key = 'tuAPI, user_id = 'tuID')  #el resultado es una lista
df <- as.data.frame(csgo_stats$friends_stats) #lo pasamos a df para trabajar más cómodo
view(df)

Vamos a ver que el data frame que creamos tiene un formato long. En name podemos ver algunos de los indicadores que arroja la API. Realmente es muy variada la info que da y puede llegar a marear. En mi caso, creo que me costo más sintetizar lo que quería mostrar que armar el código. El formato long lo cambie con pivot_wider.

stat <- df %>%  
filter(type=='stat' & category=='stats') %>% select(c(1,2,7)) 
%>% pivot_wider(names_from = name, values_from = value)

Indicadores

Para el dashboard arme dos tabItems: “Estadísticas individuales” y “Comparativo”.

Dentro de estadísticas individuales use:

  • hits_efficiency, hits_to_kill, kills_efficiency (éstos tres fueron copiados textual del blog de Adson ) visualizados con highcharter

UI SIDE

        fluidRow(
        box(
            title = "Efectividad según arma", status = "primary", solidHeader = TRUE,
            collapsible = FALSE,
            width = 12,
            height = 8,
            highchartOutput("plot1", height = 600)
        )
        )
SERVER SIDE
output$plot1 <- 
renderHighchart({
      eficiencia %>% filter(player_name==input$nombresset) %>% 
hchart( "line", hcaes(name_match, valores, group = estadisticas))
      
    })

Si bien el gráfico lo hice crudo, sin personalizar nada en la línea de código podemos ver que hay un filtro por player filter(player_name==input$nombresset) y por otro lado, si van a utilizar gráficos de ésta librería hay que usar la función renderHighchart.

 

Por otro lado, el resto de los indicadores de esa slide los hice con renderInfoBox tambien utilizando el filtro por player filter(player_name == input$nombresset)

  • Matchs jugados (total_matches_played)
  • Headshots (total_kills_headshot)
  • Ganados (total_wins)
  • Defuse (total_defused_bombs)
  • Kills (total_kills)
  • Muertes (total_deaths)
  • MVPs (total_mvps)
  • Kills con faca (total_kills_knife)

Un ejemplo de esto:

UI SIDE

        fluidRow(
            
            infoBoxOutput("kills", width = 3),
            infoBoxOutput("muertes", width = 3),
            infoBoxOutput("mvp", width = 3),
            infoBoxOutput("facas", width = 3)
            
        ),

SERVER SIDE

      #FACAS 
        output$facas <- renderInfoBox({
          a <- df %>%
            filter(player_name == input$nombresset)
          a <- a %>% filter(name=='total_kills_knife')  
          a<- sum(a$value)
        infoBox(
            "Kills con Faca", a, icon = icon("list"),
            color = "purple", fill = TRUE
        )
    })

Para el otro tabItem use:

  • Tiempo jugado
  • Ganados/Jugados
  • Kills/Shots
  • Headshot/Kills
  • Kills/Rounds
  • MVP/Matches
  • Deads por match
  • Puntos contribuidos por match

UI SIDE

              fluidRow(
                box(
                  title = "Deads por match", status = "primary", solidHeader = TRUE,
                  collapsible = TRUE, width = 6,
                  highchartOutput("plot8")
                ),

SERVER SIDE

    #DEADS/MATCHS
    output$plot8 <- renderHighchart({
      stat %>%  mutate(dead=as.integer(total_deaths)/as.integer(total_matches_played)) %>% arrange(dead) %>% 
              hchart("column", hcaes(x = player_name, y = round(dead,2)))%>% 
        hc_xAxis(title = NULL) %>% hc_yAxis(title= NA)
          })

Acá el código completo aquí

Links útiles:

 

 

FOSS4G 2021 + Ruteo en R

Que es la FOSS4G?

La FOSS4G es el evento de software open source y software libre geoespacial más grande del mundo. Es un encuentro organizado por la fundación OSGEO (Open Source Geospatial Foundation) y las comunidades locales de cada parte del planeta en la que participan desde programadores, investigadores, estudiantes, organismos no gubernamentales, empresas, docentes, etc. Dentro de la conferencia hay talleres, charlas, mapatones, stands y lo más importante el encuentro con personas.

Ésta vez fue la primera vez que participé y si bien no tenía mucha expectativa dado el formato virtual el nivel de la conferencia es INCREIBLE en cuanto a la calidad de las ponencias, talleres y también de la organización (desde la plataforma hasta la comunicación). En este sentido, hay que remarcar el trabajo que hicieron los Geoinquietos Argentina y la Asociación GeoLibres para poder llevar a cabo menuda conferencia poniendole el cuerpo a situaciones realmente dificiles y dolorosas.

De las cosas que más rescato de mi experiencia en la FOSS es la posibilidad de escuchar en primera persona las experiencias y trabajos de gente que uno admira. En mi caso, participe de un taller de Vector Tiles llevado a cabo por Map Tiler. Además de escuchar a los “viejos conocidos” el encuentro da la posibilidad de escuchar otras voces que son parte de la comunidad pero no son tan conocidas o activas en las redes y llevan a cabo un trabajo espectacular.

Otra de las cosas que más me gusto del encuentro – y pese a que el formato fue virtual – fue la posibilidad de poder hablar con gente. La plataforma tenía una interfaz en donde cada participante podía ser un personaje y a través de diferentes representaciones de la Ciudad uno se podía cruzar con gente y generar una video llamada. Ésto hizo que uno pueda seguir intercambiando data o conociendo gente más allá de las charlas o talleres.

 

Mi primer FOSS

Cómo suele pasar en la mayoría de los eventos en los que participo, primero me anoto y a partir de eso me obligo a presentar algún trabajo. En esta ocasión la charla que dí se basó en un indicador que construimos para el Ministerio de Cultura sobre accesibilidad física a espacios y actividades culturales en la Ciudad de Buenos Aires.

El trabajo se basa en calcular para cada una de las esquinas de la Ciudad la distancia peatonal a una serie de espacios culturales (Cines, Teatros, Clubes de Música, Bibliotecas, Museos, Espacios de Formación). Ésto implico, por un lado utilizar alguna herramienta de ruteo – en este caso fue OSRM – y poder programar un script que lupee las esquinas y además que disminuya el tiempo de procesamiento lo máximo posible.

Más allá del contexto del trabajo, éste fue una buena oportunidad para poner en práctica algunas cosas que vengo haciendo en R. Empece a estudiar éste lenguaje en diciembre 2019 y en estos dos años me obligue a usarlo literalmente casi todos los días ya sea para manejo de tablas, escrapeo, data wrangling, geoprocesos, desarrollo de dashboards etc.

Otro dato no menor es que la charla la hice 100% en ingles. Si bien estaba la posibilidad de hablar en castellano, la mayoría del público hablaba ingles (y las relaciones sur-sur no se van hacer solas) y eso también implicó un lindo desafio.

 

 

Para terminar el posteo, ojala que la FOSS4G2021 sea la primera de muchas otras (la próxima se hace en Florencia, Italia) . Y a modo personal, queda pendiente empezar a ver algunos videos de lo que fueron las presentaciones. Realmente hay material de estudio muy interesante para indagar.

Descarga de diapositivas

Descarga del código