Blog

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 cada vez que puedo usar software libre. Si bien había tenido algunas experiencias anteriores, alla por el 2009 o 2010, instalando Ubuntu y Linux Mint en la busqueda 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.

File:Pantallazo de Ubuntu 10.04 LTS (Lucid Lynx).png
Ubuntu 10

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.

Habia 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 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).

Lo otro que modifique, de lo cual no estoy tan convencido es lo que sería el “menú de inicio”

Tiene un diseño muy moderno pero estoy más acostumbrado al menú tradicional

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.

Discover es la herramienta que vino en Debian 11 KDE para descargar programas

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. Seguramente esto se puede mejorar, 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!!!

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:

Buenas noches!

Hello World Buenas noches… se me hizo un poco tarde desde que arranque con la idea de este espacio a ahora

Bienvenides a mi Blog. Un espacio en donde busco volcar contenidos acerca del mundo geoespacial.

Mi intención es comunicar y producir contenidos de divulgación en un formato distinto al de las redes sociales. Comunicar algunas cosas vinculadas al lado profesional y otras un poco más descontracturadas. Es decir, mostrar lo que hago profesionalmente (o lo que quiero hacer) pero también mostrar aquello que sucede fuera de lo laboral: reflexiones, ideas, trabajos, críticas, etc. A su vez, el poder tener este espacio es un desafío para que algunas ideas se empiecen a materializar o también para documentar trabajo.

Por si no leyeron mi web, soy Martín Ortiz, geógrafo, Geo Data Analyst, Geo Data, GIS Specialist, Gisero, GeoNinja, GeoHack o algo con GEO según el país donde vaya o con quien trabaje. Pero buen, lo que hago es pensar soluciones a partir de información geoespacial. Un poco de Data Wrangling (o geo data wrangling), ETL, análisis espacial, automatización, loops, estadística, data viz, etc.

Elijo trabajar con software libre (esto merece una entrada sobre el tema) no por moda (teléfono…..) sino porque es una forma de democratizar el acceso a la tecnología.

Hoy en día uso QGIS, R, Python y JS pero todo ésto puede ir cambiando con el tiempo. Creo que lo importante es el software libre y no tanto el nombre propio de tal o cual.

Bueno, esperó que alguno de los contenidos les sirva.

Arrancamos….