1
00:00:03,190 --> 00:00:09,630
Bueno, la charlita es Conectando
Soluciones, le puse de nombre.

2
00:00:10,150 --> 00:00:12,190
Estamos en el FLISoL 2024.

3
00:00:13,050 --> 00:00:18,500
Y bueno, la idea es mostrar un poco el uso
de la consola, pero más allá de lo que es

4
00:00:18,600 --> 00:00:19,670
solo texto.

5
00:00:19,790 --> 00:00:20,780
Digamos, ¿no?

6
00:00:20,810 --> 00:00:23,720
Como en general, justamente lo que
comentaban en la charla anterior era como

7
00:00:23,820 --> 00:00:29,900
hay miedo a la consola, sí, es como hay
gente ñoña, que usa fondo negro, letras

8
00:00:30,000 --> 00:00:34,150
verdes, pero bueno, se pueden
hacer cosas interesantes en la consola.

9
00:00:34,250 --> 00:00:34,780
¿Quién soy?

10
00:00:34,880 --> 00:00:37,930
Soy OSiUX en la
comunidad, OSiRiS es mi nombre.

11
00:00:38,930 --> 00:00:41,010
Ese es mi sitio web, OSiUX.com

12
00:00:41,210 --> 00:00:45,150
Trato cada vez que puedo de compartir
conocimiento siempre de tecnologías

13
00:00:45,150 --> 00:00:48,170
Libres, ahí disponible.

14
00:00:49,350 --> 00:00:51,090
No está muy actualizado,
pero bueno, lo intento.

15
00:00:51,150 --> 00:00:54,630
Este año todavía no escribí nada, pero
bueno, hay todo lo del año pasado y años

16
00:00:54,630 --> 00:00:55,570
anteriores.

17
00:00:55,810 --> 00:00:56,390
Trabajo en gcoop.

18
00:00:56,470 --> 00:00:58,290
gcoop es una cooperativa de Software Libre

19
00:00:59,190 --> 00:01:02,230
Quiere decir que es un lugar donde
no tenemos ni jefes ni empleados.

20
00:01:02,430 --> 00:01:04,730
Somos todos pares, una
estructura horizontal.

21
00:01:05,570 --> 00:01:08,950
Es un lío porque es un grupo de
personas que tienen que ponerse de acuerdo

22
00:01:08,950 --> 00:01:11,170
y trabajamos
exclusivamente con Software Libre.

23
00:01:11,630 --> 00:01:13,550
Eso es lo que me motivó a mí a participar.

24
00:01:13,710 --> 00:01:18,000
Hoy somos unas 20 personas ahí y de
hecho esta semana estamos en una búsqueda

25
00:01:18,050 --> 00:01:23,050
de Backend PHP Senior, si hay
alguien interesado entre en la página

26
00:01:24,050 --> 00:01:27,330
tty, consola, terminal, o
el nombre que quieran usar.

27
00:01:27,370 --> 00:01:28,230
¿Por qué la uso?

28
00:01:28,770 --> 00:01:31,470
Bueno, porque está siempre
disponible en cualquier servidor,

29
00:01:31,470 --> 00:01:33,190
en cualquier dispositivo hay una consola.

30
00:01:33,690 --> 00:01:34,550
Es UNIX Way.

31
00:01:35,170 --> 00:01:42,210
UNIX Way quiere decir que se va a conectar
con todo y hace una sola cosa y muy bien,

32
00:01:42,270 --> 00:01:44,050
cada comando que existe en la terminal.

33
00:01:45,410 --> 00:01:47,210
Trabaja con muy pocos recursos.

34
00:01:48,210 --> 00:01:51,450
Sigue el principio KISS
Es decir, mantenelo simple, estúpido.

35
00:01:52,370 --> 00:01:53,370
Estúpido es la persona.

36
00:01:54,310 --> 00:01:55,990
No se sientan mal, no es la máquina.

37
00:01:57,370 --> 00:02:00,210
Y puede estar local o remota con o sin X.

38
00:02:00,330 --> 00:02:03,830
Yo en este momento estoy en un
entorno gráfico, aunque no parezca,

39
00:02:03,830 --> 00:02:04,250
se llama Awesome.

40
00:02:04,950 --> 00:02:08,290
Hoy hablaron i3, a mí me gusta
más Awesome, pero son muy parecidos.

41
00:02:09,950 --> 00:02:12,070
Y en una terminal que uso, uso Bash.

42
00:02:12,190 --> 00:02:12,590
¿Por qué?

43
00:02:12,590 --> 00:02:13,470
Porque está siempre.

44
00:02:13,550 --> 00:02:18,330
Hay otras bonitas con más colorcitos, pero
esta está siempre, no hay que instalarla.

45
00:02:18,370 --> 00:02:20,390
Ya viene, están todos
los servidores del mundo.

46
00:02:21,990 --> 00:02:25,570
Y básicamente lo que me importa de Bash
es que es el pegamento que une un montón

47
00:02:25,570 --> 00:02:25,970
de otras cosas.

48
00:02:26,190 --> 00:02:30,010
Yo uno comandos, que unos están hechos
en Python, otros en Java, otros no sé,

49
00:02:30,010 --> 00:02:30,350
no me interesa.

50
00:02:30,410 --> 00:02:36,290
Yo hice un comando que los interconecto
logro solucionar mi problema puntual con

51
00:02:36,290 --> 00:02:39,630
soluciones pequeñas de otros
problemas que lo hizo otra persona.

52
00:02:40,750 --> 00:02:44,560
Como editor de texto uso
Vim, no uso IDE para programar.

53
00:02:44,640 --> 00:02:47,960
Vim tiene todo lo
necesario cuando lo instalas.

54
00:02:48,120 --> 00:02:49,540
Casi que no necesitas confirmar nada.

55
00:02:49,660 --> 00:02:56,000
Si querés, hay plugin para todo y tengo un
Language Server Processing, no sé qué cosa

56
00:02:56,000 --> 00:02:58,460
ahora que corre y hace cosas de colores.

57
00:02:59,240 --> 00:03:00,360
No hace falta más.

58
00:03:01,140 --> 00:03:02,240
¿Por qué lo uso yo?

59
00:03:02,820 --> 00:03:04,820
Porque, por esto, porque
está muy pegado a la consola.

60
00:03:04,900 --> 00:03:08,760
Entonces puedo meter cosas en Vim, sacar
cosas de Vim, interaccionar con el resto

61
00:03:08,760 --> 00:03:12,760
del sistema y casi de manera transparente.

62
00:03:13,000 --> 00:03:15,520
Entonces no... ¿Podrían
hacerlo con otro sistema?

63
00:03:15,740 --> 00:03:18,600
Sí, pero capaz que no tienen
la cantidad de plugins necesaria.

64
00:03:18,620 --> 00:03:23,500
Acá cuando algo Vim no tiene y yo
hago un script y ese script habla con Vim

65
00:03:23,500 --> 00:03:28,100
y hago un script en Bash, re pavote, o sea
como... Y me soluciona mi problema rápido.

66
00:03:30,600 --> 00:03:34,280
Git es una herramienta indispensable
y lo que hay que pensar que Git permite

67
00:03:34,280 --> 00:03:39,360
versionar código inicialmente, pero
en realidad está versionando archivos.

68
00:03:39,400 --> 00:03:42,800
Y en realidad podés versionar
cualquier cosa, no solamente código.

69
00:03:42,900 --> 00:03:47,640
Entonces yo tengo versionado todo lo que
se le ocurra que sea un archivo y todo lo

70
00:03:47,640 --> 00:03:49,200
que puedo lo hago en un
archivo de texto plano.

71
00:03:49,560 --> 00:03:53,800
Es súperrápido, pequeño, entonces como
cada cinco minutos mi compu está mandando

72
00:03:53,800 --> 00:04:00,980
cosas a un repo git en otro lado por si me
la chorean o por si me mando un dedazo yo.

73
00:04:02,300 --> 00:04:08,560
Y si vamos a las herramientas simples
de consola, una muy común y es que súper

74
00:04:08,560 --> 00:04:13,120
poderosa yo debo saber un 5% de esta que
se llama sed y básicamente lo que permite

75
00:04:13,120 --> 00:04:15,300
es buscar cosas y reemplazarlas por otra.

76
00:04:15,760 --> 00:04:22,820
Entonces si yo tengo escrito, ahí GitLab
y lo quiero con guiones bajos, para que

77
00:04:22,820 --> 00:04:25,980
después en Markdown eso se convierta
en una itálica y se vea más bonito.

78
00:04:26,620 --> 00:04:27,980
Bueno, la estructura es esa.

79
00:04:29,500 --> 00:04:32,740
Hago una pausa ahí.

80
00:04:35,200 --> 00:04:38,020
Esto es lo importante digamos.

81
00:04:38,440 --> 00:04:42,620
Esa estructura de... Vamos a buscar acá.

82
00:04:43,340 --> 00:04:44,660
Básicamente lo escribo en otro lado.

83
00:04:45,260 --> 00:04:49,180
"s" barra "a" barra "b" barra "g"

84
00:04:49,520 --> 00:04:52,620
O sea, "a" es el texto a buscar.

85
00:04:53,060 --> 00:04:57,840
Como que puede ser, en este caso
yo el ejemplo estoy dando gitlab.

86
00:04:58,160 --> 00:04:59,600
Y se puede transformar
en cualquier otra cosa.

87
00:04:59,760 --> 00:05:05,360
Estoy buscando el texto
específico ahora de esa palabra.

88
00:05:06,180 --> 00:05:08,200
¿Podría ser más complejo?

89
00:05:10,660 --> 00:05:11,940
Ahí está.

90
00:05:14,460 --> 00:05:19,500
Y lo mismo si yo acá más abajo quiero
decir Bueno, quiero que ese texto, por

91
00:05:19,500 --> 00:05:28,140
ejemplo, txt se transforme en un .txt
con barritas para que después se vea como

92
00:05:28,140 --> 00:05:29,540
un formato de código.

93
00:05:30,480 --> 00:05:32,520
Bueno, también estoy buscando lo mismo.

94
00:05:32,700 --> 00:05:35,720
Como busco un patrón
y lo reemplazo por otro.

95
00:05:36,280 --> 00:05:40,040
De hecho, bueno, esto no es un
patrón, eso es un cacho texto a texto.

96
00:05:40,140 --> 00:05:44,900
Si yo quise ir a
patrones, tengo que ir a RegEx.

97
00:05:45,160 --> 00:05:48,700
Hay quienes dicen que si tenés un
problema y lo intentas resolver con RegEx,

98
00:05:48,700 --> 00:05:49,580
tenés dos problemas.

99
00:05:50,280 --> 00:05:53,640
Es medio un poco así, pero superdivertido.

100
00:05:54,140 --> 00:06:00,000
¡Estás 3 hs hasta que logras que algo
te ande y cuando le pegas, sos Gardel!

101
00:06:00,680 --> 00:06:09,580
Bueno, si yo quisiera buscar dentro de un
texto, dentro de un log, una IP, ¿Cómo lo

102
00:06:09,580 --> 00:06:10,040
defino?

103
00:06:10,100 --> 00:06:16,880
Como hay muchísimas IPs, son una
secuencia de números de uno a tres

104
00:06:16,880 --> 00:06:19,460
números que además van de 0 a 255

105
00:06:19,620 --> 00:06:20,780
No puede ser cualquier número.

106
00:06:21,400 --> 00:06:26,200
Un punto, otro octeto de número,
un punto, otro, un punto y otro.

107
00:06:26,500 --> 00:06:28,960
Bueno, con RegEx yo puedo definir esto.

108
00:06:29,080 --> 00:06:35,940
Puedo decir entre 0 y 9
con el "+" digo uno a muchos.

109
00:06:36,420 --> 00:06:38,940
No sé cuánto, pero por más de uno.

110
00:06:39,620 --> 00:06:42,560
Después viene un punto
y pongo una barra ahí.

111
00:06:42,560 --> 00:06:42,820
¿Por qué?

112
00:06:43,000 --> 00:06:46,980
Porque si pongo puntos solo en
RegEx, quiere decir cualquier carácter.

113
00:06:47,020 --> 00:06:50,360
Entonces, para que sea punto y
no cualquier carácter, barra, punto.

114
00:06:52,480 --> 00:06:54,140
Barrapunto era un lindo
sitio que no existe más.

115
00:06:55,920 --> 00:06:57,600
Y lo mismo lo hago cuatro veces.

116
00:06:58,120 --> 00:07:02,240
Entonces, esto va a machar con un número,
punto, un número, punto, un número, punto,

117
00:07:02,280 --> 00:07:02,600
número.

118
00:07:03,360 --> 00:07:05,860
Los tres primeros podrían ser
el número de la versión de un programa.

119
00:07:05,940 --> 00:07:08,480
No es exactamente una
IP, pero se aproxima.

120
00:07:08,480 --> 00:07:17,540
Y la definición que tengo, digamos,
hay un poco más, pero me cayó el touch.

121
00:07:18,900 --> 00:07:26,260
Pero básicamente con este esquema que
tengo ahí es como digo, bueno, tengo una

122
00:07:26,260 --> 00:07:29,080
secuencia de números, una secuencia de
letras minúsculas, secuencia de letras

123
00:07:29,080 --> 00:07:34,980
mayúsculas opcionales y las puedo ir
concatenando y voy a ir construyendo

124
00:07:34,980 --> 00:07:39,000
patrones más complejos.

125
00:07:40,820 --> 00:07:44,000
Bueno, esto se me fue más rápido
de lo que yo quería, pero bueno.

126
00:07:45,340 --> 00:07:49,000
Otro comando que después lo voy a estar
relacionado, porque las RegEx las uso en

127
00:07:49,000 --> 00:07:50,500
todos lados, es jq.

128
00:07:50,760 --> 00:07:58,420
jq es un comando que interpreta al
vuelo expresiones de que hay un JSON.

129
00:07:58,500 --> 00:08:04,360
Entonces te permite operar un
archivo JSON escribiéndole un query y él

130
00:08:04,360 --> 00:08:04,740
te devuelve el resultado.

131
00:08:05,100 --> 00:08:07,120
Esto lo acabo de descargar hace un ratito.

132
00:08:08,200 --> 00:08:12,520
325 personas se
registraron al FLISoL de este año.

133
00:08:12,940 --> 00:08:14,560
Me bajé el JSON de la página.

134
00:08:15,260 --> 00:08:17,100
Primero le digo, che,
contame cuántos hay.

135
00:08:17,600 --> 00:08:23,920
Y después acá le voy a decir, che, bueno,
tráeme todos los registros que encuentre.

136
00:08:24,020 --> 00:08:28,260
De todos esos registros
tráeme el nombre y el apellido.

137
00:08:29,160 --> 00:08:32,060
Este es el archivo de donde estoy bajando.

138
00:08:32,540 --> 00:08:38,900
Y después acá le tiré un comando que le
digo, de todo ese registro hace un orden

139
00:08:38,900 --> 00:08:43,240
random, cualquiera,
desordenarlo, y tráeme un registro.

140
00:08:43,680 --> 00:08:50,240
Y de ese resultado, un comandito que hice,
le dice future, que es la tipografía para

141
00:08:50,240 --> 00:08:50,960
que se ve así.

142
00:08:51,080 --> 00:08:55,300
Entonces, en este momento acabo
de hacer un sorteo de tres personas.

143
00:08:55,420 --> 00:08:56,260
¿Alguien se ve ahí?
¿Alguien es Flix? ¿Braian? ¿Manuel?

144
00:09:03,240 --> 00:09:04,160
¿No está? ¿No hay nadie?

145
00:09:04,260 --> 00:09:05,000
¡No salió! Suele pasar en la demo.

146
00:09:07,180 --> 00:09:09,180
Y no, pero tenés que
mostrar el DNI que sos Braian.

147
00:09:11,260 --> 00:09:11,700
¿Eh?

148
00:09:12,780 --> 00:09:13,220
Espera, espera.

149
00:09:14,380 --> 00:09:15,520
Espera, espera.

150
00:09:16,660 --> 00:09:17,920
A ver, vamos a aprovechar.

151
00:09:19,040 --> 00:09:20,220
Vamos, vamos, vamos a ver que sale.

152
00:09:21,560 --> 00:09:24,160
eventol2shuf, creo que le puse.

153
00:09:24,520 --> 00:09:25,760
Lucas, ¿no?

154
00:09:26,360 --> 00:09:27,320
Que grite, rápido!

155
00:09:27,480 --> 00:09:27,880
¿Matías?

156
00:09:27,940 --> 00:09:28,060
¿Acá?

157
00:09:29,180 --> 00:09:30,420
Muy bien, Matías.

158
00:09:32,800 --> 00:09:35,000
No te va a servir a
vos el regalo, perdóname.

159
00:09:37,860 --> 00:09:39,920
No es mala onda, ¿eh?

160
00:09:40,860 --> 00:09:43,640
Es una remera gcoop, podés
regalarla es talle S, por eso te digo.

161
00:09:43,700 --> 00:09:44,620
No me entra ni a mí.

162
00:09:47,440 --> 00:09:52,420
Bueno, Martín ..., no sé qué es.

163
00:09:53,680 --> 00:09:54,120
Nereo.

164
00:09:54,880 --> 00:09:55,320
Antu.

165
00:09:56,140 --> 00:09:56,480
Priscilla.

166
00:09:57,140 --> 00:09:57,880
Ah, Priscilla.

167
00:09:59,100 --> 00:09:59,800
Talle S.

168
00:09:59,960 --> 00:10:00,320
¿Dónde está?

169
00:10:00,320 --> 00:10:03,120
No, esta es mía.

170
00:10:03,600 --> 00:10:05,060
Esta es para vos.

171
00:10:05,900 --> 00:10:07,280
Ahí está, perfecto.

172
00:10:07,980 --> 00:10:14,180
Bueno, entonces, esto que es una
pavada, digamos, podemos mirar...

173
00:10:15,040 --> 00:10:18,200
El script se llama eventol2shuf

174
00:10:19,020 --> 00:10:19,480
Eh Livre!

175
00:10:19,720 --> 00:10:22,060
Ahí está la licencia, es GPL, blablabla.

176
00:10:22,580 --> 00:10:27,520
Bueno, y básicamente lo que hice es...
Vamos a poner la pantalla más grande para

177
00:10:27,520 --> 00:10:29,760
que se vea.

178
00:10:30,020 --> 00:10:33,520
El script, todo lo que está
delante es para hacerlo más bonito.

179
00:10:33,760 --> 00:10:39,100
Básicamente es eso, es como comando jq,
un query que lo puse en una variable para

180
00:10:39,100 --> 00:10:44,920
poder cambiarlo, el archivo, ordená y
dame un resultado, y una herramienta que

181
00:10:44,920 --> 00:10:48,580
se llama toilet y le pasás la
tipografía future, la que me gusta a mí.

182
00:10:49,700 --> 00:10:50,340
Eso es todo.

183
00:10:50,660 --> 00:10:57,000
Ahora, ese JSON es un archivo en
mi máquina, y como... ¿con qué está

184
00:10:57,000 --> 00:10:57,480
conectado?

185
00:10:57,500 --> 00:10:57,960
¿con nada?

186
00:10:58,560 --> 00:11:06,180
Bueno, yo podría hacer algo que esté
descargando constantemente del sitio de

187
00:11:06,180 --> 00:11:10,180
Eventol donde se registraron, y bueno, ya
está interconectado, y a mí no me importa

188
00:11:10,180 --> 00:11:11,720
con qué lo hicieron Eventol.

189
00:11:12,280 --> 00:11:16,000
Entiendo que está hecho en Python y
Django, pero es como... Ese sitio me da un

190
00:11:16,000 --> 00:11:16,340
JSON.

191
00:11:16,940 --> 00:11:20,700
Listo, yo hago un comando que lee
ese JSON, lo concatena con herramientas.

192
00:11:20,800 --> 00:11:22,560
O sea, yo no sé en qué esta hecho toilet.

193
00:11:22,680 --> 00:11:23,860
No me interesa.

194
00:11:24,240 --> 00:11:30,960
Entonces, lo importante, cuando uno está
en la consola, lo importante es esto, el

195
00:11:30,960 --> 00:11:31,280
pipe.

196
00:11:32,080 --> 00:11:37,040
El pipe es lo que nos permite
interconectar la salida de un comando con

197
00:11:37,040 --> 00:11:38,220
la entrada de otro.

198
00:11:38,880 --> 00:11:43,720
Y entonces, esos dos comandos, no importa
en qué lenguaje estén construidos, lo que

199
00:11:43,720 --> 00:11:45,520
necesitan hacer es entender texto plano.

200
00:11:46,300 --> 00:11:48,120
Leen texto, escupen texto.

201
00:11:48,480 --> 00:11:48,960
Nada más.

202
00:11:49,240 --> 00:11:50,560
No entienden mucho más.

203
00:11:51,220 --> 00:11:56,500
La inteligencia que se le pone al procesar
ese texto está dentro de cada programa.

204
00:11:56,540 --> 00:11:57,620
Uno tiene que estar sabiendo.

205
00:11:57,900 --> 00:12:01,620
Entonces, bueno, como este programa
espera que la primera columna sea tal cosa,

206
00:12:01,620 --> 00:12:05,040
la segunda tal otra, bueno, hay
que elaborarlo un poquito a veces.

207
00:12:05,940 --> 00:12:09,460
Pero vos podés concatenar
tantos comandos como quisieras.

208
00:12:09,680 --> 00:12:14,860
Y ahí está, me parece,
la magia de la consola.

209
00:12:15,840 --> 00:12:20,520
Esperen que me fui a...
la... La estratosfera acá.

210
00:12:20,760 --> 00:12:22,980
Vamos a acelerar un poquito esto.

211
00:12:24,360 --> 00:12:25,700
¿Perdón, voy muy rápido?

212
00:12:26,540 --> 00:12:28,100
Me pueden pegar un hondazo.

213
00:12:30,240 --> 00:12:32,260
Cualquier pregunta es
válida en este momento.

214
00:12:36,760 --> 00:12:37,480
¿Estábamos en sed?

215
00:12:37,680 --> 00:12:38,240
No.

216
00:12:39,300 --> 00:12:40,080
¿Pasaste RegEx?

217
00:12:40,320 --> 00:12:41,260
Pasé RegEx.

218
00:12:41,740 --> 00:12:42,040
Bueno.

219
00:12:46,400 --> 00:12:48,500
Piqui, piqui, piqui.

220
00:12:48,840 --> 00:12:49,080
Acá.

221
00:12:49,240 --> 00:12:50,720
¿Estábamos en RegEx?

222
00:12:51,160 --> 00:12:52,060
Acá creo que no se llegó a ver.

223
00:12:52,100 --> 00:12:53,000
No sé si llegan a ver todos.

224
00:12:53,140 --> 00:12:54,340
Después yo lo publico esto.

225
00:12:54,760 --> 00:12:58,040
Pero bueno, hay una mejor manera
de escribir la expresión regular para

226
00:12:58,040 --> 00:13:03,460
detectar una IP que es más precisa que
en lugar de decirle más de uno, le decís

227
00:13:03,460 --> 00:13:05,420
entre uno y tres valores.

228
00:13:05,600 --> 00:13:09,140
Bueno, ya es una mejora, digamos.

229
00:13:10,600 --> 00:13:13,740
Bueno, estábamos en jq y el sorteo.

230
00:13:13,920 --> 00:13:16,280
Y bueno, yo, por ejemplo, uso
estas herramientas para construir otras.

231
00:13:16,280 --> 00:13:21,860
Entonces, primero usé jq y después
me topé que necesitaba hacer medio algo

232
00:13:21,860 --> 00:13:22,400
parecido con YAML.

233
00:13:23,060 --> 00:13:27,020
Y alguien hizo yq, que
Yes igual pero para YAMLs

234
00:13:27,160 --> 00:13:32,680
Que en realidad lo que hace es
masajear los datos y se los escupe a jq.

235
00:13:32,840 --> 00:13:33,560
No laburo mucho.

236
00:13:33,760 --> 00:13:34,880
O sea, como aprovechó lo que ya estaba.

237
00:13:34,980 --> 00:13:38,440
Y ese es un poco el espíritu de
trabajar en la consola de Software Libre.

238
00:13:38,580 --> 00:13:40,140
Aprovechar lo que ya alguien hizo.

239
00:13:40,900 --> 00:13:42,760
Bueno, Thalía, te perdiste una remera.

240
00:13:43,560 --> 00:13:44,420
¿Juan también?

241
00:13:47,120 --> 00:13:48,040
Alberto también.

242
00:13:50,300 --> 00:13:51,200
Tengo stickers.

243
00:13:55,060 --> 00:13:56,180
Me quedé escuchando.

244
00:13:58,280 --> 00:13:58,780
¿Vos sos Juan?

245
00:13:58,920 --> 00:13:59,680
Stickers tengo.

246
00:14:00,340 --> 00:14:01,300
Yo puedo dar stickers.

247
00:14:03,640 --> 00:14:04,600
Una plancha de stickers.

248
00:14:04,740 --> 00:14:05,500
La pasan por ahí.

249
00:14:05,960 --> 00:14:07,720
Si alguno agarra por
el camino, no pasa nada.

250
00:14:09,680 --> 00:14:10,280
Bueno.

251
00:14:11,640 --> 00:14:17,100
Sobre esta construcción de
herramientas pequeñas e ir combinándolas,

252
00:14:17,100 --> 00:14:21,300
llegué a txt2md, que es
convertir texto plano en Markdown.

253
00:14:21,600 --> 00:14:26,800
Lo que me sucede mas o menos seguido es
que como escribo solo texto plano porque

254
00:14:26,800 --> 00:14:32,320
ocupa muy poco, porque lo puedo versionar
con Git, es muy rápido escribirlo en Vim.

255
00:14:32,900 --> 00:14:39,680
Y después se puede transformar en
HTML, Markdown, cualquier cosa más linda

256
00:14:39,680 --> 00:14:41,020
y bonita que se vea.

257
00:14:41,140 --> 00:14:42,940
Bueno, entonces me pasa que yo tipeo.

258
00:14:43,200 --> 00:14:46,980
Y tipeo así, texto plano, todo minúscula.

259
00:14:47,040 --> 00:14:49,400
Como debe ser, hasta
72 caracteres de ancho.

260
00:14:49,520 --> 00:14:49,980
Nada más.

261
00:14:50,880 --> 00:14:54,120
Pero eso lo quiero convertir
que se vea un poco más bonito.

262
00:14:54,220 --> 00:14:55,080
Y ahí ya tengo que laburar.

263
00:14:55,320 --> 00:14:59,500
No hay una inteligencia artificial o algo
que diga, entienda lo que estoy tipeando.

264
00:14:59,540 --> 00:15:03,880
Va a entender algunas cosas, pero hay
cosas que son muy puntuales del proyecto

265
00:15:03,880 --> 00:15:07,900
en el que estoy trabajando o cosas mías
y que yo los quiero diferenciar, lo quiero

266
00:15:07,900 --> 00:15:11,460
resaltar de alguna otra manera.

267
00:15:12,260 --> 00:15:13,540
Ay, ya la perdí.

268
00:15:14,120 --> 00:15:15,220
Espere que me cayó la demo.

269
00:15:16,820 --> 00:15:17,420
Vamos a abrir.

270
00:15:17,660 --> 00:15:21,560
Esto era txt.

271
00:15:26,200 --> 00:15:27,260
A ver si ando solo.

272
00:15:29,360 --> 00:15:29,800
Ahí.

273
00:15:30,420 --> 00:15:34,720
Entonces yo en Vim configure para que
si tengo un texto y presiono la tecla F5,

274
00:15:35,060 --> 00:15:39,400
agarre ese texto, se lo pasa a un
script que hice yo, y ese script haga cosas.

275
00:15:39,540 --> 00:15:43,700
Básicamente hace sed, grep,
más que nada, mayormente sed.

276
00:15:44,380 --> 00:15:45,840
Busca texto, reemplaza texto.

277
00:15:46,240 --> 00:15:47,460
No tiene más inteligencia.

278
00:15:47,520 --> 00:15:49,860
Después, bueno, como lo
formatea un poquito y qué sé yo.

279
00:15:50,760 --> 00:15:53,140
No sé si está tardando
mucho o no está haciendo nada.

280
00:15:54,000 --> 00:15:54,460
Ahí está.

281
00:15:55,920 --> 00:16:01,500
Bueno, entonces, es el mismo texto de
arriba que el de abajo, pero la diferencia

282
00:16:01,500 --> 00:16:05,220
está en que, bueno, empezó a
buscar patrones y buscaba esto.

283
00:16:05,260 --> 00:16:10,540
Che, cuando encuentres punto algo, punto
tres letras, es una extensión de archivo.

284
00:16:10,580 --> 00:16:12,660
Entonces, convertirlo a monoespaciado.

285
00:16:14,000 --> 00:16:15,280
Bueno, en este caso es de dos.

286
00:16:16,960 --> 00:16:23,080
Después, cuando encuentres algo que
uso a diario, que es AWX, che, ponerlo en

287
00:16:23,080 --> 00:16:26,600
mayúsculas y en itálica,
porque se ve más bonito.

288
00:16:26,700 --> 00:16:29,380
Cuando estoy hablando de que
estoy diciendo que hice algo con un

289
00:16:29,380 --> 00:16:33,420
job template, lo mismo, ponerlo en
itálica, pero ponelo en minúsculas.

290
00:16:33,420 --> 00:16:38,420
Cuando encuentres algo que se parezca
a una IP, dale formato, porque cuando la

291
00:16:38,420 --> 00:16:41,940
persona que va a leer un PDF, que estoy
haciendo un reporte de algo, va a entender

292
00:16:41,940 --> 00:16:45,120
más fácil cuando las cosas
están como ahí identificadas, ¿no?

293
00:16:45,840 --> 00:16:46,280
Distintas.

294
00:16:46,600 --> 00:16:51,140
Y más después, como este spanglish de
que, bueno, que estoy haciendo algo en

295
00:16:51,140 --> 00:16:54,380
castellano y todo el tiempo estoy
mencionando palabras en inglés, entonces,

296
00:16:54,640 --> 00:16:57,880
el hecho de resaltar las mayúsculas,
minúsculas, permiten distinguirse.

297
00:16:57,960 --> 00:17:01,440
Estoy hablando de una cosa,
de un objeto, de algo puntual.

298
00:17:01,440 --> 00:17:07,620
Y lo más importante para mí es que
cuando escribo, por ejemplo, job 123, se

299
00:17:07,620 --> 00:17:14,460
interpreta ese texto y lo convierte a
una URL en formato de Markdown y le agrega

300
00:17:14,460 --> 00:17:16,460
lo que hace falta,
digamos, la url completa.

301
00:17:17,160 --> 00:17:20,080
Entonces, tengo para job y va esa URL.

302
00:17:20,140 --> 00:17:23,180
Si escribo otra palabra, me cambia la URL.

303
00:17:23,280 --> 00:17:24,640
Y ya no tengo que tipear tanto.

304
00:17:24,800 --> 00:17:29,940
Entonces, esto es cada vez como
más rápido y custom, digamos.

305
00:17:29,940 --> 00:17:31,340
Si...

306
00:17:40,060 --> 00:17:50,060
Y si quisiéramos ver un
poquito de esto, esto está acá, ahí.

307
00:17:51,820 --> 00:17:53,860
Vamos a ver un poco el código.

308
00:17:57,320 --> 00:17:59,140
Esto es parte del código.

309
00:18:00,180 --> 00:18:01,460
Así, agrando un poquito.

310
00:18:04,800 --> 00:18:05,120
Ah, no.

311
00:18:05,460 --> 00:18:07,580
Vamos a cambiar la pantalla.

312
00:18:16,500 --> 00:18:17,400
Bueno, ahí está.

313
00:18:18,480 --> 00:18:21,480
Bueno, básicamente es un
script bastante de cabeza.

314
00:18:23,880 --> 00:18:27,060
Los caracteres tienen que
llegar hasta 72 de ancho.

315
00:18:27,080 --> 00:18:29,660
Lo dice un RFC de la
Internet en el año '70...

316
00:18:29,660 --> 00:18:31,280
Yo lo respeto.

317
00:18:32,520 --> 00:18:37,300
Es por si en algún momento alguno
de mis correos llegara a pasar por un

318
00:18:37,300 --> 00:18:39,980
servidor muy,
muy viejo, no lo va a truncar.

319
00:18:40,440 --> 00:18:41,720
Nada más que por eso,

320
00:18:42,180 --> 00:18:43,220
de molesto.

321
00:18:44,220 --> 00:18:47,200
En realidad código vertical
es mejor que código horizontal.

322
00:18:47,680 --> 00:18:53,700
Entonces, si te está yendo muy, muy
extenso para la derecha, volvé negro a la

323
00:18:53,700 --> 00:18:54,940
izquierda que va a estar mejor.

324
00:18:56,240 --> 00:18:57,700
Más conciso, más claro.

325
00:18:58,500 --> 00:19:01,780
Acá, por ejemplo, tenemos
la función que hace los links.

326
00:19:01,980 --> 00:19:09,000
Lo que hace es, bueno, recorre todas
las líneas que está encontrando y bueno,

327
00:19:09,000 --> 00:19:12,280
la línea empieza con una almohadilla.

328
00:19:13,140 --> 00:19:15,120
Es un comentario, ignórala.

329
00:19:18,000 --> 00:19:19,200
No sé, esta es mi lógica.

330
00:19:19,320 --> 00:19:25,360
Si encuentra un prefijo que dice
NO_PREFIJO hace una cosa y si no hace otra

331
00:19:25,360 --> 00:19:29,520
y después si se encuentra sufijo que
dice NO_SUFIJO lo mismo, una cosa u otra.

332
00:19:29,800 --> 00:19:37,580
Básicamente lo que termina haciendo es
uuia..., Escape, 1, 2 y aquí, aquí, ahí.

333
00:19:38,420 --> 00:19:41,260
El mismo ej. un poco más complejo por ahí.

334
00:19:42,160 --> 00:19:49,300
Pero básicamente es "s" barra lo que busco
barra lo que está del otro lado que es lo

335
00:19:49,300 --> 00:19:50,000
que va a reemplazar.

336
00:19:50,240 --> 00:19:55,020
Entonces, busca una RegEx que viene de
otro lado la RegEx bien, busca una RegEx y

337
00:19:55,760 --> 00:20:02,660
cuando la encuentres, lo que encuentres
que es lo que está dentro del \1 lo que

338
00:20:02,660 --> 00:20:07,040
encuentres, ponelo como resultado ahí
porque no sé lo que es como es una RegEx,

339
00:20:07,160 --> 00:20:09,420
como va a encontrar
varias cosas distintas.

340
00:20:09,420 --> 00:20:14,880
Ponelo ahí y ahí me construye, con la
URL me construye la URL propiamente dicha

341
00:20:14,880 --> 00:20:15,540
en Markdown.

342
00:20:16,420 --> 00:20:19,840
Y eso lo manda a un archivo temporal y
después lo procesa línea por línea hasta

343
00:20:19,840 --> 00:20:20,880
que logra el resultado.

344
00:20:20,980 --> 00:20:30,980
Si quisiera ver cómo construyo estas
reglas acá tengo las algunas expresiones

345
00:20:31,800 --> 00:20:37,440
regulares que utiliza, que estoy buscando
este patrón y entonces si encontrás un

346
00:20:37,440 --> 00:20:46,800
porcentaje, un número, un tipo de versión
de programa, horas, fechas, teclas de función

347
00:20:46,800 --> 00:20:56,480
como cosas específicas, como nombres de equipos,
nombres de servicio a medida que voy tipeando

348
00:20:56,480 --> 00:21:02,060
y encuentro algo que le falta agrego la
RegEx lo mismo para la itálica yo no

349
00:21:02,060 --> 00:21:06,420
quiero poner itálica a todas las palabras
si no algunas puntuales y tengo todos esos

350
00:21:06,420 --> 00:21:14,840
casos no más que en un archivo de texto
plano, lo mismo palabras que me equivoco y

351
00:21:14,840 --> 00:21:17,980
nunca le pongo acento entonces listo, ya
están en un listado las palabras que me

352
00:21:17,980 --> 00:21:23,080
equivoco siempre presiono F5 y le va a
poner acento y no tengo que correr el

353
00:21:23,080 --> 00:21:29,960
corrector de ortográfico y también algo
que uso bastante en eso son la posibilidad

354
00:21:29,960 --> 00:21:39,600
de snippets entonces si yo quiero escribir
una función, escribo fdie ENTER y ya sale

355
00:21:39,600 --> 00:21:47,980
completa y pido gran parte del código o
por ahí tengo un Query y entonces ya está

356
00:21:47,980 --> 00:21:54,440
yo escribo como muy poquito y me sale
entero, esa es la manera de ir acelerando

357
00:21:54,440 --> 00:21:59,180
todo el proceso y no es más que una
construcción de sumatoria de comandos

358
00:21:59,180 --> 00:22:08,940
simples concatenados uno detrás de
otro, no es más que eso volvamos a donde

359
00:22:08,940 --> 00:22:17,200
estábamos, acá perdí
creo que es ¡pi, pi, pi!

360
00:22:18,980 --> 00:22:19,700
¿Dónde está?

361
00:22:20,500 --> 00:22:21,400
¡Ah!

362
00:22:21,640 --> 00:22:23,300
me perdí...

363
00:22:24,940 --> 00:22:25,400
Bueno...

364
00:22:26,280 --> 00:22:29,300
Estamos en RegEx...

365
00:22:34,900 --> 00:22:35,360
Bueno...

366
00:22:35,820 --> 00:22:37,680
Hicimos sorteo... Al grep

367
00:22:38,600 --> 00:22:39,900
me lo comí porque dice...

368
00:22:39,900 --> 00:22:40,600
unclude, ¿no?

369
00:22:41,520 --> 00:22:42,440
Include...

370
00:22:42,440 --> 00:22:45,060
A ver...

371
00:22:47,210 --> 00:22:48,430
Vamos a ver un poquito de grep...

372
00:22:48,950 --> 00:22:53,350
grep utilizan también expresiones
regulares, básicamente es para buscar.

373
00:22:53,630 --> 00:22:54,950
Acá tengo un ejemplo de...

374
00:22:54,950 --> 00:22:57,870
Yo tengo un script que todo el
tiempo está escaneando las WiFi

375
00:22:58,570 --> 00:22:59,690
que están cerca. Y las guarda un archivo.

376
00:23:00,510 --> 00:23:05,450
Y eso me deja la señal, el SSID,
si está protegida o no, el canal.

377
00:23:06,410 --> 00:23:08,990
Y la MAC Address, digamos, de la red.

378
00:23:10,430 --> 00:23:14,470
Entonces, yo para conectarme a
la red con esta compu, no uso nada.

379
00:23:14,710 --> 00:23:16,450
Que venga, hice un script que se conecte,

380
00:23:16,670 --> 00:23:17,250
de molesto.

381
00:23:17,730 --> 00:23:20,830
Y en realidad no es de molesto, sino
que una vez me pasó que el programa que yo

382
00:23:20,830 --> 00:23:25,710
usaba se topó con que en el lugar
donde yo vivo, hay más de 300 APs.

383
00:23:25,890 --> 00:23:28,010
Entonces era muy difícil y se rompía.

384
00:23:28,450 --> 00:23:31,590
Entonces de esta manera, yo lo que hice
es digo, bueno, no debe ser tan difícil.

385
00:23:31,610 --> 00:23:33,730
Hay un comando que
busca y lista las redes.

386
00:23:33,810 --> 00:23:36,510
Las guardo en un
archivo procesado, ordenado.

387
00:23:36,610 --> 00:23:39,010
Y después con una expresión regular.

388
00:23:40,170 --> 00:23:41,230
Que me gustan tanto.

389
00:23:42,310 --> 00:23:43,890
Le digo ahí con esto...

390
00:23:44,530 --> 00:23:51,630
Busca algo que sea "-" un
número que empiece con 6 o con 7.

391
00:23:52,030 --> 00:23:54,030
Que va a ser la mejor señal posible.

392
00:23:54,790 --> 00:23:57,850
Y que sea preferentemente 5.8.

393
00:23:58,050 --> 00:23:59,210
Por la frecuencia.

394
00:23:59,790 --> 00:24:02,890
Si no encuentra eso, bueno, tengo
el fallback para que busque una 2.4

395
00:24:02,890 --> 00:24:03,190
...

396
00:24:03,790 --> 00:24:06,610
Pero entonces ya el
script tomó una decisión.

397
00:24:06,770 --> 00:24:09,970
Bueno, ya tomé la decisión y la puse en un
script que es cuando yo me quiero conectar

398
00:24:09,970 --> 00:24:15,310
a una red que tiene que tener este
nivel de señal, que tiene que tener

399
00:24:15,310 --> 00:24:15,930
esta frecuencia.

400
00:24:16,990 --> 00:24:20,070
Inclusive puede tener
algún nombre en particular.

401
00:24:20,210 --> 00:24:22,390
De hecho, como, prefiere mis redes.

402
00:24:23,070 --> 00:24:26,390
Hay un listado y dice, bueno,
si está conectado desde el Celu.

403
00:24:26,770 --> 00:24:27,870
O agárrala el Celu.

404
00:24:28,310 --> 00:24:31,830
Agarra redes conocidas y no desconocidas.

405
00:24:32,170 --> 00:24:32,510
Bueno.

406
00:24:35,210 --> 00:24:35,430
Perdón.

407
00:24:35,430 --> 00:24:36,670
Y esto no es de saber.

408
00:24:36,830 --> 00:24:38,790
Si no es de interés, de curiosidad.

409
00:24:38,890 --> 00:24:40,530
Che, ¿cómo podría ser esto?

410
00:24:42,070 --> 00:24:42,670
Busco.

411
00:24:42,770 --> 00:24:44,290
¿Cómo hacer tal cosa?

412
00:24:44,750 --> 00:24:46,430
Copiar, pegar, pruebo.

413
00:24:46,570 --> 00:24:47,230
No me anda.

414
00:24:47,410 --> 00:24:48,130
Tres horas después.

415
00:24:48,370 --> 00:24:49,350
Busco otra vez.

416
00:24:49,630 --> 00:24:51,930
No es más que prueba y error.

417
00:24:53,790 --> 00:24:55,390
No es magia.

418
00:24:56,070 --> 00:24:56,290
Bueno.

419
00:24:57,470 --> 00:24:59,470
Vamos a hacer así.

420
00:25:00,130 --> 00:25:01,990
Hacemos un poco más rápido esto.

421
00:25:03,910 --> 00:25:11,490
En esta búsqueda permanente de la mejora
continua, llegué a hacer un script que se

422
00:25:11,490 --> 00:25:15,070
llama jrnl (Journal) que está inspirado
en otro script que está hecho en Python.

423
00:25:15,110 --> 00:25:16,730
El mío está hecho en Bash.

424
00:25:17,310 --> 00:25:18,410
Con amor.

425
00:25:19,470 --> 00:25:20,110
Y puro Bash.

426
00:25:20,790 --> 00:25:26,730
Y básicamente lo que permite este script
es que yo escribo "j" o "jn" o "jn" algo.

427
00:25:27,570 --> 00:25:28,650
O jrnl (Journal) más completo.

428
00:25:29,290 --> 00:25:33,690
Y ya me crea en una estructura de
directorios un archivo de texto y me abre

429
00:25:33,690 --> 00:25:34,310
Vim.

430
00:25:34,470 --> 00:25:35,890
Para que yo tipee cosas ahí.

431
00:25:36,510 --> 00:25:38,950
No es más que eso esencialmente.

432
00:25:39,490 --> 00:25:43,430
A medida que fue pasando el tiempo
lo fui interconectando a otras cosas.

433
00:25:44,030 --> 00:25:48,670
Pero básicamente lo que
hace es esto que vemos acá.

434
00:25:49,570 --> 00:25:55,190
En una estructura de directorio que es
año, año-mes, año-mes-día y finalmente

435
00:25:55,190 --> 00:25:59,210
el nombre del archivo con hora,
minuto y segundo, genera un archivo plano.

436
00:25:59,890 --> 00:26:04,530
Y lo que le va a hacer a ese archivo
plano es solo ponerle este encabezado.

437
00:26:06,330 --> 00:26:08,530
La fecha, la hora y el minuto.

438
00:26:09,470 --> 00:26:10,350
Simplemente eso.

439
00:26:11,250 --> 00:26:11,950
¿Por qué?

440
00:26:11,990 --> 00:26:15,790
Porque me va a permitir que tomar notas
de lo que estoy trabajando, lo que estoy

441
00:26:15,790 --> 00:26:20,430
haciendo para después poder tomarme un
vino tranquilo y al otro día continuar con

442
00:26:20,430 --> 00:26:21,590
lo que estaba haciendo ayer.

443
00:26:22,870 --> 00:26:23,870
Y de una manera ordenada.

444
00:26:24,050 --> 00:26:26,890
Entonces yo no me tengo a preocupar
de guardar donde está el archivo o sea

445
00:26:26,890 --> 00:26:28,790
configurar el Vim para que se guarde solo.

446
00:26:29,230 --> 00:26:30,810
El nombre de archivo se genera solo.

447
00:26:31,650 --> 00:26:34,750
Y después lo que va
adentro es lo que ustedes quieran.

448
00:26:35,570 --> 00:26:41,190
Yo finalmente lo llevé para el lado de
Markdown porque el mundo va para ese lado

449
00:26:41,190 --> 00:26:41,630
hoy.

450
00:26:41,870 --> 00:26:47,210
Yo antes de esto usaba Org-mode, que
es algo que funciona dentro de Emacs.

451
00:26:47,510 --> 00:26:48,850
Es como un universo completo.

452
00:26:50,630 --> 00:26:53,870
Pero lo que sucedió que eso
funcionaba muy bien cuando yo era developer.

453
00:26:54,730 --> 00:26:57,010
Y estuve como 7 o 8 años con Org-mode.

454
00:26:57,210 --> 00:26:58,150
Y era fantástico.

455
00:26:58,930 --> 00:27:01,870
Pero yo de golpe pasé a
ser SysAdmin a tiempo completo.

456
00:27:02,450 --> 00:27:06,290
Y no podés estar todo el
tiempo en una sola ventana cargando cosas.

457
00:27:06,330 --> 00:27:09,630
En el proyecto de desarrollo
estamos hablando de cosas de meses,

458
00:27:10,270 --> 00:27:10,790
de días, semanas.

459
00:27:11,130 --> 00:27:13,650
Siempre SysAdmin son 5
minutos y ya está todo mal.

460
00:27:14,230 --> 00:27:18,570
Entonces vos tenés que abrir 800 ventanas
y no te da tiempo, para estar... Y además

461
00:27:18,570 --> 00:27:20,390
tenés agilidad algo rápido.

462
00:27:20,910 --> 00:27:24,330
Entonces creé esta herramienta que en
principio lo único que hacía es abrirme un

463
00:27:24,330 --> 00:27:24,870
editor de texto.

464
00:27:25,150 --> 00:27:30,370
Yo copiaba y pegaba la salida de lo que
había tipeado en un servidor y me olvidaba

465
00:27:30,370 --> 00:27:30,710
y me iba.

466
00:27:31,010 --> 00:27:36,070
Después al otro día podía buscar con grep,
con sed, reemplazando cosas y siendo Markdown

467
00:27:37,390 --> 00:27:41,330
De hecho configuré que las terminales en
mi compu se cierran automáticamente a los

468
00:27:41,330 --> 00:27:41,870
60 segundos.

469
00:27:42,670 --> 00:27:46,410
Si yo no tipeo suficientemente
rápido se cierra, directamente.

470
00:27:46,890 --> 00:27:51,470
Y eso me obliga a que, a no tipear
OneLiners, sino que a esos OneLiners se

471
00:27:51,470 --> 00:27:52,930
convierten en scripts rápidamente.

472
00:27:53,210 --> 00:27:54,870
Porque si no, como se pierden.

473
00:27:57,030 --> 00:28:03,490
Entonces, si yo voy a crear un journal,
bueno, puedo hacer "jrnl new" y un texto.

474
00:28:03,530 --> 00:28:03,890
Listo.

475
00:28:03,990 --> 00:28:06,170
Y me devuelve la ruta de
donde se creó el archivo.

476
00:28:06,470 --> 00:28:07,450
Nada más.

477
00:28:07,670 --> 00:28:10,910
Quedé en la consola y quedo eso ahí
como una marca de tiempo si quiere.

478
00:28:11,970 --> 00:28:15,970
Si listo, el journal, lo que hace es,
bueno, lo va a listar de una manera.

479
00:28:16,050 --> 00:28:22,030
Primero inventé un hash similar a git,
que básicamente ese hash está basado en

480
00:28:22,030 --> 00:28:23,210
la hora y la fecha.

481
00:28:23,250 --> 00:28:24,170
Entonces no va a cambiar.

482
00:28:24,770 --> 00:28:26,170
Hay solo uno por minuto.

483
00:28:26,210 --> 00:28:28,010
No debería tener más
de un journal por minuto.

484
00:28:28,570 --> 00:28:33,730
Y esto me permite después buscarlo,
rápido copiarlo, hacer operaciones con

485
00:28:33,730 --> 00:28:33,970
ese journal.

486
00:28:34,450 --> 00:28:39,170
Después tengo una barrita que va a
indicar el tiempo, en qué momento de

487
00:28:39,170 --> 00:28:41,790
la hora en que está
ese journal, cuánto consumí.

488
00:28:42,010 --> 00:28:43,970
Es decir, el journal
tiene una hora de inicio.

489
00:28:44,270 --> 00:28:48,490
Y va a tener un... No va a tener una hora
de fin, sino que va a tener un tiempo que

490
00:28:48,490 --> 00:28:49,310
tardé en hacerlo.

491
00:28:50,350 --> 00:28:55,530
Y ese tiempo lo puedo poner a mano o
hice un script que dice, che si hace

492
00:28:55,530 --> 00:28:59,030
un rato hiciste una cosa y ahora
estás haciendo otra, quiere decir que

493
00:28:59,030 --> 00:28:59,750
lo anterior lo terminaste.

494
00:28:59,910 --> 00:29:01,110
Y entonces le calcula el tiempo.

495
00:29:01,650 --> 00:29:06,390
O calcula el tiempo entre los dos
últimos commits o cualquier otra cosa

496
00:29:06,390 --> 00:29:07,930
que tenga por ahí
corriendo y ya me lo pone.

497
00:29:07,970 --> 00:29:10,030
Después yo lo puedo
cambiar es un texto, nada más.

498
00:29:10,710 --> 00:29:12,330
Pero ya me facilita.

499
00:29:13,550 --> 00:29:14,530
Entonces acá estoy viendo...

500
00:29:17,110 --> 00:29:17,570
uhia...

501
00:29:17,570 --> 00:29:23,130
acá estoy viendo cuánto tiempo tiene
este journal, a qué hora empezó y a qué

502
00:29:23,130 --> 00:29:23,650
hora terminó.

503
00:29:23,750 --> 00:29:30,290
Esto acaba de suceder 16:40 no pasó nada
todavía y no está corriendo ningún reloj.

504
00:29:30,370 --> 00:29:31,450
Para mí eso es lo más importante.

505
00:29:31,550 --> 00:29:32,410
No hay algo corriendo.

506
00:29:32,950 --> 00:29:36,470
Porque todas las aplicaciones que te
llevan a que esté corriendo reloj, como

507
00:29:36,470 --> 00:29:40,210
que te obligan a estar... O sea, sos
un ajedrecista, como que estás parando el

508
00:29:40,210 --> 00:29:40,830
reloj la cada rato.

509
00:29:41,210 --> 00:29:41,550
No puedo.

510
00:29:41,770 --> 00:29:43,090
Yo cambio de contexto rápidamente.

511
00:29:43,210 --> 00:29:43,990
Me olvido de lo que estoy haciendo.

512
00:29:44,550 --> 00:29:48,570
Yo saco el diferencial entre cosas que
estoy haciendo y eso después me calcula la

513
00:29:48,570 --> 00:29:48,790
hora.

514
00:29:49,430 --> 00:29:51,550
Después si quisiera la puedo dibujar.

515
00:29:51,750 --> 00:29:52,930
Está buenísimo.

516
00:29:54,310 --> 00:29:55,750
Y si quiero ver el journal

517
00:29:59,070 --> 00:30:02,250
solo me muestra el texto que tiene.

518
00:30:02,410 --> 00:30:04,050
A ver si acá no...

519
00:30:04,770 --> 00:30:05,770
creo que no tengo nada.

520
00:30:09,890 --> 00:30:11,890
Ahora vamos a ver.

521
00:30:12,990 --> 00:30:17,230
Bueno, sobre este mismo journal, que
es un montón de archivos de texto de mi

522
00:30:17,230 --> 00:30:21,930
computadora de distintas cosas, obviamente
mayormente relacionadas con el trabajo

523
00:30:21,930 --> 00:30:26,150
resulta que cuando estoy trabajando en
un issue de algo que hay que solucionar

524
00:30:26,150 --> 00:30:31,690
un desarrollo o algo que corregir
el mundo no usa journal, usa GitLab.

525
00:30:31,910 --> 00:30:36,150
Entonces yo lo que voy a hacer es tener
que mandar esta información que tengo en

526
00:30:36,150 --> 00:30:41,850
mi blog de notas archivos .txt, que yo lo
llamo journal y mandarlo a... En lugar de

527
00:30:42,950 --> 00:30:48,830
verlo, seleccionarlo, copiarlo, ir al
GitLab pegarlo, editar, no sé, como hacer

528
00:30:48,830 --> 00:30:54,130
un montón de pasos que para mí ya en
una vida de clics y tiempo, lo que hago es

529
00:30:54,130 --> 00:30:58,450
ejecutar pequeños comandos
que hacen todo eso por mí.

530
00:30:59,070 --> 00:31:05,150
Y yo ya no tengo que pensar y lo
mejor es no tener que salir de la consola.

531
00:31:05,610 --> 00:31:09,750
Entonces si yo quiero ver el último
journal, hago "jrnl view", o en realidad

532
00:31:09,750 --> 00:31:11,170
yo uso un alias que es "jv".

533
00:31:11,310 --> 00:31:11,710
Listo.

534
00:31:11,850 --> 00:31:12,370
Más rápido.

535
00:31:13,070 --> 00:31:16,270
Y de nuevo lo que hacía antes, lo
interesante, la magia está en el pipe.

536
00:31:16,450 --> 00:31:20,450
Yo hago un pipe, o sea yo podría hacer
"jrnl view", mandarlo a un archivo agarrar

537
00:31:20,450 --> 00:31:23,550
ese archivo, abrirlo,
copiarlo, no, como pipe.

538
00:31:23,710 --> 00:31:27,530
Eso me interconecta a
lo que venga del otro lado.

539
00:31:28,070 --> 00:31:33,030
Y hice un script que se llama
gl-issue-note y entonces va ese

540
00:31:33,030 --> 00:31:38,270
gl-issue-note, lee un texto, interpreta
que ese texto viene de jrnl y va a

541
00:31:38,270 --> 00:31:43,210
buscar el número de issue, va a verificar
con el directorio donde estoy parado, si

542
00:31:43,210 --> 00:31:48,810
es el directorio del repo, si tiene una
URL válida, tomar el Token, conectarse

543
00:31:48,810 --> 00:31:53,490
contra GitLab, mandarle la nota, y si
ese jrnl, que es un texto, de vuelta,

544
00:31:54,190 --> 00:31:59,770
tiene abajo sobre el final una arroba y un
formato tiempo, va a decir, ah, este es el

545
00:31:59,770 --> 00:32:01,310
tiempo que tardó en hacer este issue.

546
00:32:02,030 --> 00:32:06,310
Entonces, se lo va a mandar, lo va a
transformar y lo va a enviar como un time,

547
00:32:06,450 --> 00:32:07,710
un "spend time" en GitLab.

548
00:32:07,750 --> 00:32:10,990
Entonces va a decir, yo este
issue tardé tanto tiempo en hacerlo.

549
00:32:11,450 --> 00:32:17,950
Y eso es de cada tarea que voy
haciendo, se va haciendo un reporte de

550
00:32:17,950 --> 00:32:18,230
horas de trabajo.

551
00:32:18,730 --> 00:32:23,870
Y esto lo puedo simplificar, como decía,
tengo como un texto largo, lo puedo hacer

552
00:32:23,870 --> 00:32:28,230
con alias más cortos, yo directamente
tengo un alias que hace todo esto.

553
00:32:28,790 --> 00:32:30,610
j2glin (Journal To GitLab Issue Note)

554
00:32:31,510 --> 00:32:36,010
Pueden ponerle zaraza, como es su
consola, pueden hacer lo que quieran.

555
00:32:36,170 --> 00:32:43,110
¿Y cómo se ve en el GitLab?, el jrnl que
acabo de hacer, en el GitLab, se ve así.

556
00:32:43,590 --> 00:32:50,470
Está el texto que decíamos hoy antes
del tema de las IP, de nombre de host, el

557
00:32:50,470 --> 00:32:52,870
nombre de una aplicación, en otro formato.

558
00:32:52,910 --> 00:32:56,290
Esto ayuda a comprender que el resto del
mundo cuando lea algo se entienda bien,

559
00:32:56,370 --> 00:32:58,350
incluso yo mismo que
siento que es lo que dice acá.

560
00:32:59,670 --> 00:33:08,370
Y además esto, dentro del jrnl yo
escribí atusu 261 y generó la URL en Markdown

561
00:33:08,370 --> 00:33:12,130
y acá se ve bonita y fue cuando lo
navegas hace clic y te lleva a eso.

562
00:33:12,210 --> 00:33:16,890
Entonces, toda esta inteligencia digamos
entre comillas, no fue más que concatenar

563
00:33:16,890 --> 00:33:24,630
de nuevo un script tras otro de cosas
que intento resolver en el día a día y que

564
00:33:24,630 --> 00:33:25,330
me llevan tiempo.

565
00:33:27,190 --> 00:33:31,890
Sobre esta línea de seguir trabajando
sobre texto, por ejemplo, para documentar,

566
00:33:32,550 --> 00:33:36,650
una manera de documentar es
escribir, hacer un bonito ASCII Art.

567
00:33:37,170 --> 00:33:42,190
Hay una herramienta que se llama Boxart y
que te permite definir que lo que pongas

568
00:33:42,190 --> 00:33:48,230
entre dos corchetes se transforma en una
cajita de texto y que si lo relacionas con

569
00:33:48,230 --> 00:33:53,610
otra cajita entienda esa relación
y te vaya construyendo ese gráfico.

570
00:33:53,910 --> 00:34:00,390
En principio es bastante simple pero, por
ejemplo, poner de esa forma es texto UTF-8

571
00:34:00,390 --> 00:34:04,910
dentro de un código, podés ver un
diagrama, una secuencia simple entre dos

572
00:34:04,910 --> 00:34:10,510
aplicaciones, ayuda mucho a cuando
estás desarrollando pero también podés

573
00:34:10,510 --> 00:34:12,630
convertirlo en un formato dot.

574
00:34:12,630 --> 00:34:16,310
Un formato dot es una herramienta que se
llama GraphViz que te permite hacer grafos

575
00:34:16,310 --> 00:34:21,390
muy complejos y ponerle más
colorcitos y otros atributos que lo hace

576
00:34:21,390 --> 00:34:22,010
más interesante.

577
00:34:22,690 --> 00:34:27,390
Pero GraphViz no hace más que es un
lenguaje que tiene dos elementos que es

578
00:34:27,390 --> 00:34:31,470
el nodo y el edge y puedes
generar todo tipo de gráfico.

579
00:34:31,470 --> 00:34:33,070
¿Qué tipo de gráfico, por ejemplo?

580
00:34:33,330 --> 00:34:33,810
¡Ah!

581
00:34:33,810 --> 00:34:34,670
¡Me falló!

582
00:34:36,170 --> 00:34:37,090
Suele pasar.

583
00:34:39,250 --> 00:34:40,510
No sé por qué.

584
00:34:41,930 --> 00:34:42,870
A ver acá.

585
00:34:47,090 --> 00:34:52,970
Hace 17 años empecé a trabajar con
SugarCRM, una aplicación en PHP y quería

586
00:34:52,970 --> 00:34:55,630
entender la
estructura de tablas que tenía.

587
00:34:55,750 --> 00:34:58,070
Tenía un montón
de tablas, yo no entendía nada.

588
00:34:58,510 --> 00:35:01,330
Y lo que necesitaba era
un diagrama Entidad-Relación.

589
00:35:02,030 --> 00:35:04,230
Y empecé a buscar y no había nada.

590
00:35:04,310 --> 00:35:08,770
Había un montón de herramientas que te
permiten dibujar un diagrama, pero a mano.

591
00:35:09,030 --> 00:35:11,630
Con clics, tipo diseño gráfico.

592
00:35:11,990 --> 00:35:13,830
Y yo dije, esto se puede
solucionar de otra manera.

593
00:35:13,890 --> 00:35:17,690
Entonces me puse a investigar y
esta aplicación en una tabla tiene la

594
00:35:17,690 --> 00:35:23,990
descripción de las relaciones
porque obviamente tiene que entender cómo

595
00:35:23,990 --> 00:35:26,250
funciona a sí mismo y cómo
se relaciona una cosa con otra.

596
00:35:26,930 --> 00:35:31,250
Y entonces básicamente es una tabla
que tiene 8 columnas y que dice, esto se

597
00:35:31,250 --> 00:35:32,370
relaciona con esto u otro.

598
00:35:32,670 --> 00:35:34,070
Campo, tabla, campo, tabla.

599
00:35:34,330 --> 00:35:38,310
Entonces yo hice un script que
hace un query a la DB de MySQL.

600
00:35:38,590 --> 00:35:46,010
O sea, es texto que busca datos y genera
un texto en formato texto que GraphViz me

601
00:35:46,010 --> 00:35:47,270
permitió convertirlo en este PNG.

602
00:35:49,090 --> 00:35:50,050
Y lo grafica GraphViz.

603
00:35:50,250 --> 00:35:51,650
Yo no hice ninguna línea de esto.

604
00:35:51,670 --> 00:35:52,510
Yo hice texto.

605
00:35:52,990 --> 00:35:54,070
De hecho es un Bash script.

606
00:35:54,550 --> 00:36:03,110
Lo interesante de este gráfico es que yo
dejé este proyecto y ahora 17 años después

607
00:36:03,110 --> 00:36:06,670
volví a un proyecto que
ya no es Sugar, es Suite.

608
00:36:07,050 --> 00:36:09,410
Es un fork de esta aplicación.

609
00:36:09,850 --> 00:36:12,730
Pasaron más de 10 años
de la última vez que lo vi.

610
00:36:12,970 --> 00:36:14,530
Y dije, ¿cómo habrá cambiado esto?

611
00:36:14,550 --> 00:36:18,390
Y además esto se está utilizando para un
proyecto en particular que no era igual al

612
00:36:18,390 --> 00:36:19,630
otro, pero era parecido.

613
00:36:20,130 --> 00:36:24,450
Entonces dije, bueno, agarro ese script
que hice hace 17 años y se lo tiro a la DB

614
00:36:24,450 --> 00:36:25,510
actual y vemos que sale.

615
00:36:25,750 --> 00:36:26,470
Bueno, no anduvo.

616
00:36:26,470 --> 00:36:28,170
Lo tuve que corregir.

617
00:36:28,210 --> 00:36:28,730
Muy poquito.

618
00:36:29,410 --> 00:36:30,530
Pero lo corregí y salió.

619
00:36:30,570 --> 00:36:31,710
Entonces ya tuve un DER.
(Diagrama Entidad Relación)

620
00:36:31,870 --> 00:36:34,830
No solo de una tabla, sino que le puedo
preguntar de cualquier tabla y me lo da

621
00:36:34,830 --> 00:36:35,970
completo de toda la aplicación.

622
00:36:36,030 --> 00:36:42,470
Entonces quiere decir que esto de hacer
scripts simples, yo uso Bash, pero puede

623
00:36:42,470 --> 00:36:48,030
ser Python, puede ser cualquier otro
lenguaje de script y mantenerlo versionado

624
00:36:48,030 --> 00:36:51,630
en repositorio de manera pública, porque
esto yo lo hice público, lo liberé en su

625
00:36:51,630 --> 00:36:53,990
momento a toda la comunidad de Suite.

626
00:36:55,190 --> 00:36:57,470
17 años después todavía sirve.

627
00:36:57,790 --> 00:37:02,270
Toqué muy poco, lo mejoré y lo
publiqué en el nuevo foro, como diciendo,

628
00:37:02,270 --> 00:37:04,010
mirá, hice esto si alguno le sirve.

629
00:37:04,230 --> 00:37:07,990
Bueno, me mostraron, mira, yo hice esta
otra cosa que es más bonita, navegable.

630
00:37:09,110 --> 00:37:10,190
Está bien, es más completa.

631
00:37:10,890 --> 00:37:13,170
Pero eso me dio ideas
para después mejorar esto.

632
00:37:13,470 --> 00:37:14,090
Ya lo voy a hacer.

633
00:37:14,610 --> 00:37:18,870
Pero una herramienta muy simple, pues
no dependo de nada, porque lo que habían

634
00:37:18,870 --> 00:37:22,450
hecho es algo navegable
que está ahí y está desactualizado.

635
00:37:22,450 --> 00:37:24,030
Esto está leyendo tu DB.

636
00:37:24,350 --> 00:37:27,550
Ya vos le tirás una con un usuario
password de una base de datos y te la

637
00:37:27,550 --> 00:37:28,910
grafica.

638
00:37:29,490 --> 00:37:31,410
Bueno, es una de las maneras.

639
00:37:32,370 --> 00:37:40,710
Y esto decía, podía salir de Box Art como
simple TXT o un GraphViz, hacer algo más

640
00:37:40,710 --> 00:37:42,650
complejo.

641
00:37:43,930 --> 00:37:45,710
Ahí se cortó, no sé por qué.

642
00:37:46,410 --> 00:37:49,510
Pero vamos a buscar acá.

643
00:37:49,510 --> 00:37:51,190
Para que vean...

644
00:37:51,190 --> 00:37:52,990
Uh, no tengo internet.

645
00:37:54,230 --> 00:37:54,910
Qué mal.

646
00:38:03,390 --> 00:38:05,170
Se me cayó.

647
00:38:06,210 --> 00:38:06,870
No me anda nada.

648
00:38:07,670 --> 00:38:07,850
¿Qué?

649
00:38:07,850 --> 00:38:08,250
DNS.

650
00:38:13,220 --> 00:38:17,780
Bueno, el DNS está acá y puede
estar apuntando a cualquier cosa.

651
00:38:18,940 --> 00:38:20,260
Vamos a confiar en CloudFare.

652
00:38:23,900 --> 00:38:24,250
Tampoco.

653
00:38:24,870 --> 00:38:26,250
Debo ser yo.

654
00:38:29,230 --> 00:38:30,430
Qué raro.

655
00:38:31,670 --> 00:38:32,250
¿localhost?

656
00:38:34,990 --> 00:38:35,590
Tampoco.

657
00:38:35,810 --> 00:38:38,250
Si no llego a localhost,
está pasando algo raro.

658
00:38:39,650 --> 00:38:42,110
Bueno, ahora vamos a buscar el archivo.

659
00:38:43,470 --> 00:38:44,330
Y lo encuentro acá.

660
00:38:48,310 --> 00:38:49,510
Tiki Tiki.

661
00:38:52,150 --> 00:38:52,750
IMG.

662
00:38:52,810 --> 00:38:53,770
Ahí está.

663
00:38:55,030 --> 00:38:55,630
Web.

664
00:38:58,570 --> 00:39:01,150
Ahí levanto un Python en el 8.8.8.8

665
00:39:03,510 --> 00:39:04,190
Ahí está.

666
00:39:07,130 --> 00:39:08,710
Esto es un gráfico hecho con GraphViz.

667
00:39:10,430 --> 00:39:15,450
Esto es una representación de todas
las computadoras que se administran

668
00:39:15,450 --> 00:39:16,030
en Banco Credicoop

669
00:39:16,770 --> 00:39:25,010
Son 6300 host que los hicimos de manera
automatizada con algo que se llama AWX,

670
00:39:25,130 --> 00:39:28,550
que es un nodito que está por acá, que
es una VM que controla todas las demás.

671
00:39:28,630 --> 00:39:31,170
O sea, lo que están viendo son
distintas computadoras distribuidas por

672
00:39:31,170 --> 00:39:31,370
todo el país.

673
00:39:31,910 --> 00:39:34,510
Bueno, este gráfico no
lo podría hacer a mano

674
00:39:35,410 --> 00:39:35,790
No sé.

675
00:39:36,330 --> 00:39:39,650
Con una herramienta por ahí, pero
a mano uno por uno como sería muy difícil.

676
00:39:40,050 --> 00:39:41,130
Esto yo lo hice con GraphViz.

677
00:39:42,630 --> 00:39:46,070
Básicamente escribo texto, que
después GraphViz lo lee y lo interpreta.

678
00:39:46,150 --> 00:39:47,390
Después decido más o menos.

679
00:39:47,390 --> 00:39:52,350
No puedes elegir la posición, pero sí los
colores y los atributos y más o menos como

680
00:39:52,350 --> 00:39:56,130
cierta relación de las
distancia de los objetos.

681
00:39:56,790 --> 00:40:02,230
Y también puedes hacer otro
tipo de gráficos, como este.

682
00:40:03,470 --> 00:40:09,290
Esto es un deploy
automatizado también con AWX y Ansible.

683
00:40:09,370 --> 00:40:11,830
Este hecho entre varios equipos.

684
00:40:12,070 --> 00:40:16,150
Y también como el gráfico lo hizo
GraphViz, solo que en lugar de un nodo

685
00:40:16,150 --> 00:40:19,010
redondo con texto, digo
acá poneme un PNG transparente.

686
00:40:19,230 --> 00:40:19,990
Es más bonito.

687
00:40:20,710 --> 00:40:23,790
Inclusive lo que está ahí corriendo
abajo, que es una línea de tiempo.

688
00:40:24,310 --> 00:40:27,010
Yo quería algo así y no
encontré en ningún lado.

689
00:40:27,150 --> 00:40:28,910
Entonces la hice yo con GraphViz.

690
00:40:29,050 --> 00:40:30,830
Que es un script
(timeline2dot), que también está Libre.

691
00:40:31,790 --> 00:40:37,510
Y básicamente lo que está mostrando ahí
los números de versión de cada repo Libre

692
00:40:37,510 --> 00:40:42,010
que fue necesario para hacer
esta migración y durante el tiempo.

693
00:40:42,630 --> 00:40:49,230
También como hice un generador de
líneas de tiempo solamente por este...

694
00:40:49,230 --> 00:40:52,190
Primero porque no soy tan bueno dibujando.

695
00:40:52,690 --> 00:40:55,070
Y segundo porque lo
podía hacer con código.

696
00:40:55,670 --> 00:40:57,810
Eso me parece lo importante.

697
00:40:58,510 --> 00:40:59,900
Volviendo acá al esquema.

698
00:41:01,390 --> 00:41:02,690
Algo que quería mostrar.

699
00:41:06,050 --> 00:41:06,750
Es...

700
00:41:06,750 --> 00:41:07,710
Si vemos...

701
00:41:07,710 --> 00:41:11,430
Acá no tengo ninguna Journal list de hoy.

702
00:41:12,270 --> 00:41:14,030
Pero podemos ver los del mes.

703
00:41:14,970 --> 00:41:15,350
No.

704
00:41:15,530 --> 00:41:17,550
Tengo que estar en otro directorio.

705
00:41:18,450 --> 00:41:18,890
Acá.

706
00:41:20,450 --> 00:41:23,250
Esto es lo que voy
haciendo durante el mes.

707
00:41:25,250 --> 00:41:26,130
Y tengo...

708
00:41:26,130 --> 00:41:29,730
Básicamente son archivos de texto
que después se interpretan y se ven

709
00:41:29,730 --> 00:41:29,990
más bonitos.

710
00:41:30,070 --> 00:41:33,990
Bueno, si hay un issue me lo colorea.

711
00:41:34,170 --> 00:41:35,510
Pero desde Journal...

712
00:41:35,510 --> 00:41:36,370
Ah, lo que me faltó acá.

713
00:41:36,550 --> 00:41:37,110
Ahora voy a ver.

714
00:41:37,890 --> 00:41:38,890
Eso es lo que me faltó.

715
00:41:39,110 --> 00:41:41,110
No sé por qué.

716
00:41:41,770 --> 00:41:42,410
Espera un momento.

717
00:41:43,090 --> 00:41:44,850
Esto está acá.

718
00:41:46,490 --> 00:41:47,350
Y no acá.

719
00:41:50,310 --> 00:41:50,510
Ahí.

720
00:41:51,270 --> 00:41:56,270
Desde jrnl lo que hice, bueno, primero
era solo un comando que hablaba con otros

721
00:41:56,270 --> 00:42:01,070
comandos y procesaba texto,
pero después a medida que fue escalando...

722
00:42:03,150 --> 00:42:04,030
A ver en qué.

723
00:42:04,430 --> 00:42:04,990
Ahí.

724
00:42:05,730 --> 00:42:07,070
Esto se resiste.

725
00:42:08,510 --> 00:42:08,690
Ahí.

726
00:42:09,410 --> 00:42:14,190
Lo primero que hice fue integrarlo...

727
00:42:17,930 --> 00:42:19,630
integrarlo con RedMine.

728
00:42:20,090 --> 00:42:24,970
Entonces como Journal habla con
RedMine por un script y ese script

729
00:42:24,970 --> 00:42:26,070
lo envía a RedMine.

730
00:42:26,350 --> 00:42:27,790
Entonces tengo un texto y listo.

731
00:42:27,910 --> 00:42:28,770
Se cierra un issue.

732
00:42:29,270 --> 00:42:30,290
Se actualiza el issue.

733
00:42:30,450 --> 00:42:31,550
Se envía el tiempo.

734
00:42:32,050 --> 00:42:34,950
Después cambié de
proyecto y necesitaba usar GitLab.

735
00:42:35,650 --> 00:42:39,810
Y para llegar al GitLab primero voy a
un... Alguien hizo algo en Python que se

736
00:42:39,810 --> 00:42:40,530
llama "glab".

737
00:42:40,870 --> 00:42:42,630
Que es que habla con GitLab.

738
00:42:42,890 --> 00:42:49,310
Y yo para usar ese hice un wrapper que se
llama "gl" porque yo necesitaba llegar a un

739
00:42:49,310 --> 00:42:55,370
GitLab que está detrás de una VPN,
detrás de un proxy y "glab" no lo soportaba.

740
00:42:55,510 --> 00:42:57,210
Entonces hice un script, bash.

741
00:42:57,410 --> 00:43:02,350
Lo que hace es exporta variables y
modifica cosas en función de archivos dentro

742
00:43:02,350 --> 00:43:05,270
de cada proyecto y llega a
GitLab y le envía los datos.

743
00:43:05,270 --> 00:43:07,270
Todos los datos los envía desde el jrnl.

744
00:43:07,370 --> 00:43:11,270
Entonces yo del Journal
mando RedMine mando GitLab.

745
00:43:12,130 --> 00:43:17,230
Ahora lo estoy integrando con "jk" que es
un script que hice yo, que habla de nuevo

746
00:43:17,230 --> 00:43:21,310
con un Python que se llama jenkins-cli
para llegar a Jenkins finalmente.

747
00:43:22,810 --> 00:43:27,170
Y también con Jira es más cabeza ahora
solamente lo que hace es formatear texto.

748
00:43:27,370 --> 00:43:30,010
Se agarra el formato de
Markdown, lo convierte en Jira.

749
00:43:30,470 --> 00:43:35,530
Entonces yo escribo siempre en Journal
que es mi base de conocimiento y de ahí lo

750
00:43:35,530 --> 00:43:36,970
envío a cualquier otra plataforma.

751
00:43:37,050 --> 00:43:41,110
Entonces yo ahorro un montón de tiempo
queda en un formato bonito que todo el

752
00:43:41,110 --> 00:43:45,310
mundo entiende y me permite "tracear" el
seguimiento porque a veces estoy haciendo

753
00:43:45,310 --> 00:43:49,470
cosas que son complejas y que están...

754
00:43:49,470 --> 00:43:52,310
o sea yo tengo acceso a
muchos GitLabs diferentes.

755
00:43:53,150 --> 00:44:00,430
Está el propio gcoop, de un cliente en
particular el otro que está público o otro

756
00:44:00,430 --> 00:44:05,290
que está detrás de una VPN está,
además, gitlab.com y todos tienen

757
00:44:05,290 --> 00:44:07,430
usuarios distintos, nombres distintos.

758
00:44:07,750 --> 00:44:10,890
Entonces bueno, de esta manera yo me
abstraigo y puedo llevar adelante un

759
00:44:10,890 --> 00:44:15,710
proyecto en alguna parte dicen, bueno,
pero acá creamos un Jira, pero esto acá lo

760
00:44:15,710 --> 00:44:20,370
relacionamos a un mail de una lista y
acá esto en realidad está relacionado a un

761
00:44:20,370 --> 00:44:21,730
Build de Jenkins.

762
00:44:22,210 --> 00:44:26,090
Pero después esto en
nuestro GitLab hicimos tal cosa.

763
00:44:26,830 --> 00:44:28,970
Llevar todo eso de
manera ordenada es muy difícil.

764
00:44:28,970 --> 00:44:31,090
Hice esto para que lo simplifique.

765
00:44:31,630 --> 00:44:34,770
Y de hecho, bueno, los mails como se
imaginarán, yo los uso con una herramienta

766
00:44:34,770 --> 00:44:35,670
de consola que se llama mutt.

767
00:44:36,610 --> 00:44:41,290
Y entonces yo a veces escribo en mutt y
hago que se convierta dentro de Journal

768
00:44:41,290 --> 00:44:44,250
y viceversa para que
sea más bonito y simple.

769
00:44:46,410 --> 00:44:51,210
Y lo mismo con el tema de tengo un repo
Git vamos a verlo, el ejemplo va a ser más

770
00:44:51,210 --> 00:44:51,770
fácil.

771
00:44:54,930 --> 00:44:59,010
Yo acá tengo un repo Git de
esto, de utilidad de GitLab.

772
00:44:59,590 --> 00:45:07,850
Y resulta que, bueno, quiero no sé, quiero
agarrar el último el último commit y este

773
00:45:07,850 --> 00:45:11,790
commit, quiero mencionarlo es decir,
che, en este commit hice tal cosa de

774
00:45:11,790 --> 00:45:13,190
transmitirlo en un issue.

775
00:45:13,470 --> 00:45:22,410
Entonces creo que le puse gcu y eso lo que
hace es lo convierte busca dentro del repo

776
00:45:22,410 --> 00:45:29,410
que está la URL y la construye
para llevarte al commit exacto y esto

777
00:45:29,410 --> 00:45:32,990
normalmente lo que termino haciendo es
como a veces es como simplemente copiarlo

778
00:45:32,990 --> 00:45:38,930
al portapapeles y lo pego acá
y debería debería salir andando.

779
00:45:38,930 --> 00:45:41,190
Le falta el formato.

780
00:45:44,030 --> 00:45:44,150
Ahí.

781
00:45:45,050 --> 00:45:45,710
Al final.

782
00:45:47,030 --> 00:45:50,850
Acá le mandé más más data por eso.

783
00:45:57,540 --> 00:45:58,920
Ahí le mandé texto de más.

784
00:45:58,920 --> 00:46:07,260
Si yo tengo issues pasaría lo mismo
por ejemplo estoy en un proyecto y digo,

785
00:46:07,500 --> 00:46:13,400
bueno, en este proyecto quiero saber
la URL, tiré un comando ahí quiero ahora

786
00:46:13,400 --> 00:46:23,400
este, che dame la URL, no sé de un issue
hacémela como link, che, quiero trabajar

787
00:46:28,120 --> 00:46:34,500
en esta tarea bueno, entonces tengo
que trabajar en una tarea que es la 260.

788
00:46:34,600 --> 00:46:38,280
Entonces escribo jngi 260
(jrnl new gitlab issue 260)

789
00:46:39,020 --> 00:46:42,540
Y lo que se va a hacer es se va a
construir un archivo de texto que cuando

790
00:46:42,540 --> 00:46:50,100
lo edito lo que hace es tener hora, fecha
el contexto del proyecto con el que estoy,

791
00:46:50,300 --> 00:46:53,160
el número issue y el subject del issue.

792
00:46:53,460 --> 00:46:56,600
Entonces eso me permite a mí rápidamente
decir, bueno, estoy trabajando en esto

793
00:46:56,600 --> 00:47:06,600
está relacionado a tal cosa entonces puedo
decir, bueno revisando el server sarm2001lx

794
00:47:11,000 --> 00:47:21,000
encontré tal cosa en /etc/fstab, presiono
F5 y se vuelve un poco más monono eso menos

795
00:47:26,480 --> 00:47:36,480
y esto es lo que decía decir y resulta
que el job 123 hago F5 y se me debería

796
00:47:37,360 --> 00:47:47,360
construir ahí la URL y ya está y eso
como o el no sé Jira SGTTEC-123 ponele

797
00:47:55,560 --> 00:47:58,280
magia ahí está y se creó solo.

798
00:47:58,700 --> 00:48:05,340
Entonces esto a mí me ayuda a trabajar
más rápido y lo único que estoy haciendo

799
00:48:05,340 --> 00:48:09,440
es usando un editor de texto que digo
que cuando presiona esta tecla ejecuta tal

800
00:48:09,440 --> 00:48:15,880
comando ahí yo le presioné F4 y me
devolvió un PDF de lo que estoy escribiendo

801
00:48:15,880 --> 00:48:20,780
que lo abre con otra aplicación es
mupdf y entonces ven ahí que bueno se ve

802
00:48:20,780 --> 00:48:27,980
más bonito y además de verse más bonito
que lo que era en mi consola si yo me paro

803
00:48:27,980 --> 00:48:34,000
sobre esto es un link entonces ahí está
intentando ir, no va a llegar bueno tengo

804
00:48:34,000 --> 00:48:43,600
levantado la VPN pero llegó directo.
Entonces como resumen de la charla es

805
00:48:43,600 --> 00:48:46,320
tienen que saco esto cuando se va a como

806
00:48:49,850 --> 00:48:56,770
no es difícil concatenar aplicaciones
si todas parten de una consola, hay muchas

807
00:48:56,770 --> 00:49:01,270
aplicaciones gráficas que leen de consola en
GNU/Linux en general está separado lo que es

808
00:49:01,270 --> 00:49:05,730
la consola de lo que es la interfaz gráfica
solo que hay que investigar un poquito a

809
00:49:05,730 --> 00:49:10,270
veces hay una API para hablar a veces un
JSON, a veces simplemente texto que sale

810
00:49:10,270 --> 00:49:18,070
de un lado lo lees, lo procesas y generas
otra cosa. Y de hecho para esto que veíamos

811
00:49:18,070 --> 00:49:28,070
acá mis falsos slides no son más que
archivos de texto que yo hice un script

812
00:49:30,640 --> 00:49:36,640
que los lee y los presenta porque buscaba
una aplicación que haga Slides de consola

813
00:49:36,640 --> 00:49:42,280
y las que había no me gustaron ninguna,
entonces hice una! Anda, tiene cosas que le

814
00:49:42,280 --> 00:49:48,480
fallan, pero bueno pero si básicamente
la quisiéramos ver fíjense que mi Slide es

815
00:49:48,480 --> 00:49:52,940
este como básicamente son dos columnas a
la izquierda le digo un comando que puede

816
00:49:52,940 --> 00:49:56,740
ser un comando real de GNU/Linux cualquier
comando que se le ocurra que haya en su sistema

817
00:49:57,320 --> 00:50:03,660
o una función del script que yo hice,
se llama shellrun y después es texto y si

818
00:50:03,660 --> 00:50:12,100
quiero cosas locas por ejemplo esto que
sale acá si lo vemos más en llano es como

819
00:50:12,100 --> 00:50:21,100
dice un comando que le decimos el título
y hace eso y agarró el toilet que genera el

820
00:50:21,100 --> 00:50:30,460
future y le puse esas rayitas pero si
además yo esto quiero que tenga la URL

821
00:50:30,460 --> 00:50:38,720
caba.flisol.org.ar por ejemplo, listo, me
lo puso eso ahí entonces de esa manera uno

822
00:50:38,720 --> 00:50:44,900
va construyendo con la consola lo que se
te ocurra, es cuestión de hacer un comando

823
00:50:45,600 --> 00:50:55,600
y por ejemplo si yo quisiera
tengo por ejemplo algo otra cosa

824
00:51:04,510 --> 00:51:13,630
corta este texto. Si uno tiene TOCs
yo hice un comandito Yo creo que me

825
00:51:13,690 --> 00:51:15,590
los alinea, porque son dos columnas.

826
00:51:15,850 --> 00:51:20,490
Pero bueno, hice un
comandito que es para...

827
00:51:21,530 --> 00:51:23,110
para más columnas.

828
00:51:23,490 --> 00:51:26,310
Y después, cuando tenía todos
cada uno de esos, que son para...

829
00:51:26,310 --> 00:51:29,630
Este le pifió porque es
UTF-8, entonces no sabe el largo.

830
00:51:31,130 --> 00:51:33,810
Pero ya no es un problema mío, es un
problema de las herramientas que todavía

831
00:51:33,810 --> 00:51:35,370
están luchando con UTF-8.

832
00:51:37,190 --> 00:51:40,050
Y además le puse dos...

833
00:51:41,870 --> 00:51:42,970
Eran tres columnas.

834
00:51:43,030 --> 00:51:45,530
Después le hice un comandito que
averigua la cantidad de columnas.

835
00:51:45,670 --> 00:51:46,810
Y esto ya no tengo que pensar.

836
00:51:47,610 --> 00:51:54,610
Entonces, si esto que parece pavote,
bueno, a veces ayuda para decir, bueno,

837
00:51:54,850 --> 00:51:59,290
quiero hacer en realidad una tabla...

838
00:52:02,510 --> 00:52:04,950
Y quiero que esto sea un título.

839
00:52:07,250 --> 00:52:14,550
Y entonces esto dice un comandito que
me lo convierte y ahí me das el separador.

840
00:52:19,170 --> 00:52:22,230
Entonces esto, que es
bastante rudimentario,

841
00:52:25,390 --> 00:52:26,470
después si...

842
00:52:26,830 --> 00:52:30,630
Empecé como texto plano, en
realidad haría un Markdown.

843
00:52:31,610 --> 00:52:38,790
Si hago F4 en un PDF, o sea, se
debería ver un poco más bonito de ordenado.

844
00:52:38,790 --> 00:52:41,830
Ahí tiene más onda.

845
00:52:43,350 --> 00:52:44,430
Y esto, ¿para qué lo uso?

846
00:52:44,490 --> 00:52:53,350
Bueno, a veces yo necesito
escribit un SELECT id, name FROM ...

847
00:52:54,290 --> 00:52:55,830
Un Query justo.

848
00:52:58,310 --> 00:53:00,530
Y yo quiero que este esté de otra manera.

849
00:53:00,710 --> 00:53:05,550
Bueno, es un comando que me
lo alinea para que sea más entendible.

850
00:53:05,550 --> 00:53:11,570
Y si esto yo lo mando a un comando
que se llama sql, que hice yo, listo.

851
00:53:11,870 --> 00:53:18,670
Bueno, lo va a dar más formato de Query
y además lo va a mandar a la DB y me va a

852
00:53:18,670 --> 00:53:19,170
devolver resultados.

853
00:53:19,190 --> 00:53:22,910
En este caso la DB está caída, pero si no
básicamente me va a devolver una tabla muy

854
00:53:22,910 --> 00:53:25,110
parecida al abajo, pero
con los resultados de la DB.

855
00:53:25,350 --> 00:53:30,970
Entonces, si estoy haciendo un
Query de algo, no lo hago en el motor.

856
00:53:31,230 --> 00:53:34,710
Lo hago desde mi jrnl, porque me
queda el registro de lo que hice, me

857
00:53:34,710 --> 00:53:36,850
autocompleta los campos y todo eso.

858
00:53:37,570 --> 00:53:40,770
Y después cuando tenga el valor voy a
decir, ah, pero tenía este valor acá y

859
00:53:40,770 --> 00:53:43,550
después tengo
este otro y lo voy relacionando.

860
00:53:43,590 --> 00:53:48,290
Pero no estoy haciendo más que
interconectando aplicaciones existentes de

861
00:53:48,290 --> 00:53:51,150
la manera que a mí
me resultó fácil y cómoda.

862
00:53:51,350 --> 00:53:55,910
Esto pueden hacerlo con
otro lenguaje, con otras aplicaciones.

863
00:53:56,250 --> 00:54:00,650
Mi recomendación va a ser que usen alguna
de consola, que por lo menos una parte por

864
00:54:00,650 --> 00:54:01,610
debajo hable de consola.

865
00:54:02,410 --> 00:54:06,550
Porque en el tiempo, digamos, hoy parece
un esfuerzo muy grande hacer todo esto.

866
00:54:07,410 --> 00:54:10,570
Yo hace 24 años que uso GNU/Linux.

867
00:54:11,450 --> 00:54:18,710
Bueno, algunos scripts que hice hace
24 años, bueno, hace 5 los pude mejorar

868
00:54:18,710 --> 00:54:20,250
porque aprendí un poco más.

869
00:54:20,910 --> 00:54:24,590
Pero eran medio cabeza y seguían
funcionando estos últimos 20 años.

870
00:54:25,090 --> 00:54:26,130
Entonces, eso es lo que tiene.

871
00:54:26,170 --> 00:54:31,330
Como lo aprendes una vez y después no
necesitas tanto tiempo en actualizarte.

872
00:54:31,630 --> 00:54:34,350
Para mejorar hay toda una
vida, lo puedes hacer siempre.

873
00:54:34,830 --> 00:54:39,910
Y hoy en día cualquier cosa que
hagas bueno, la podés buscar siempre en

874
00:54:39,910 --> 00:54:43,070
Internet una mejor manera
de hacerlo simplificarlo.

875
00:54:43,350 --> 00:54:49,050
Lo interesante por ahí es simplemente
si, bueno, empiezo a intentar resolver

876
00:54:49,050 --> 00:54:51,530
un problema de la manera
que yo lo necesito ahora.

877
00:54:52,110 --> 00:54:56,950
Medio cabeza al principio, pero
como así me gusta el resultado, listo.

878
00:54:56,970 --> 00:54:58,350
Uso esto a partir de ahora.

879
00:54:59,190 --> 00:55:01,190
Y después es hablar
con el resto del mundo.

880
00:55:01,290 --> 00:55:05,350
Hoy por suerte la mayoría de las
aplicaciones tienen una API, hablan REST,

881
00:55:05,530 --> 00:55:07,790
hablan JSON, alguna otra cosa.

882
00:55:08,070 --> 00:55:14,690
Entonces, simple enviarle datos,
procesar esos datos y mantener tu esquema.

883
00:55:15,470 --> 00:55:20,590
Si no quieren hacer nada de todo esto por
su cuenta, bueno, Org-mode en Emacs hace todo

884
00:55:20,590 --> 00:55:21,970
esto y muchas cosas más.

885
00:55:23,830 --> 00:55:28,790
Yo en este caso lo hice para Vim porque
me resultaba mucho más fácil y más rápido,

886
00:55:28,790 --> 00:55:29,270
sobre todo.

887
00:55:29,330 --> 00:55:31,050
Y no tenía que estar
casado con una herramienta.

888
00:55:31,130 --> 00:55:38,410
Es decir, Vim abre tan rápido que
yo todo el tiempo estoy abriendo ventanas,

889
00:55:38,450 --> 00:55:40,130
ventanas, ventanas.

890
00:55:40,890 --> 00:55:41,910
Y trabajo y edito.

891
00:55:42,050 --> 00:55:43,490
Después se cierran solas.

892
00:55:44,230 --> 00:55:47,630
No es que estoy en un lugar con
una cosa abierta en una ventana.

893
00:55:48,270 --> 00:55:49,910
Abro trabajo, resuelvo y me voy.

894
00:55:50,050 --> 00:55:51,010
Algo trabajo resuelvo y me voy.

895
00:55:51,490 --> 00:55:54,670
Puedo hacer la salida de un comando que
se cree de un journal, de un journal se

896
00:55:54,670 --> 00:55:55,510
genere otro.

897
00:55:55,970 --> 00:56:03,090
Puedo iterar sobre el resultado y de
hecho, por ejemplo, para los grafiquitos

898
00:56:03,090 --> 00:56:06,550
que ven, que no serán
muy bonitos, pero lo es.

899
00:56:06,670 --> 00:56:11,250
Los cronogramas de los horarios, los
Flyers y todo lo que se hizo del FLISoL

900
00:56:11,250 --> 00:56:14,510
lo hice yo con scripts en Bash, que lo que
hacen es van y buscan la información en

901
00:56:14,510 --> 00:56:21,010
Eventol, me devuelven texto por ejemplo,
lo único que necesitas saber es el id de

902
00:56:21,010 --> 00:56:21,430
la charla.

903
00:56:21,430 --> 00:56:22,870
La mía es la 499.

904
00:56:23,370 --> 00:56:24,990
Entonces listo, obtuve el título.

905
00:56:26,170 --> 00:56:28,270
Quiero saber en qué sala está.

906
00:56:29,630 --> 00:56:30,190
room.

907
00:56:31,470 --> 00:56:32,610
En la 1-0.

908
00:56:35,170 --> 00:56:36,730
¿Quién es el autor?

909
00:56:38,970 --> 00:56:46,650
Bueno, y con eso
puedo decir, che, bueno...

910
00:56:46,650 --> 00:56:47,250
...

911
00:56:51,790 --> 00:56:56,130
básicamente en un archivito de texto ...

912
00:57:01,090 --> 00:57:01,570
...

913
00:57:01,570 --> 00:57:07,650
básicamente lo que puse es el horario, la
sala, un color, el ID, un tamaño para el

914
00:57:07,650 --> 00:57:13,550
texto y si el texto lo achica o lo agranda
y de esa manera, este script talks, lo que

915
00:57:13,550 --> 00:57:19,250
hace va a llamar eventol2hs, que lo que
va a hacer es generar un gráfico con esa

916
00:57:19,250 --> 00:57:27,490
información, que va a traer el gráfico que
puso el speaker en Eventol o la speaker y

917
00:57:27,490 --> 00:57:30,970
lo va a concatenar y lo va a formar dentro
de una imagen para que se construya el

918
00:57:30,970 --> 00:57:31,230
flyer.

919
00:57:31,370 --> 00:57:34,390
Como entonces, lo que sucede es que
tenemos una base de datos que es Eventol

920
00:57:34,390 --> 00:57:37,250
necesitamos hacer flyer por un lado,
necesitamos hacer cronogramas de

921
00:57:37,250 --> 00:57:41,070
diferentes y en todos lados tiene que
estar, coincidir esto, como pieza suelta

922
00:57:42,490 --> 00:57:49,670
quién da la charla, el título de la charla
el horario, me faltó el piso no tenía esa

923
00:57:49,670 --> 00:57:54,250
información de qué piso estaba acá,
la sala y mantener esa coherencia de

924
00:57:54,250 --> 00:57:58,190
información en todas las es muy difícil
si no es un proceso automatizado, finalmente,

925
00:57:58,710 --> 00:58:08,310
este script lo que genera es en un
directorio hs, cada piecita de imagen y

926
00:58:08,310 --> 00:58:18,310
después con otro script lo que va a hacer
es juntar todo eso en una gran imagen o

927
00:58:19,310 --> 00:58:24,370
varias por ejemplo, el momento que no hay
charla pero en ese horario tiene que haber

928
00:58:24,370 --> 00:58:26,390
un blanco, está el blanco.

929
00:58:26,430 --> 00:58:36,430
Y ahí están como todos los pedacitos y por
ahí en algún lado ahí ya agarró cada uno,

930
00:58:37,270 --> 00:58:42,270
los ordenó por horario entonces los
concatena por un lado o por el otro y

931
00:58:42,270 --> 00:58:44,110
después te da el general.

932
00:58:44,410 --> 00:58:48,770
Y no es más que está haciendo la misma
lógica como estoy leyendo una lista de un

933
00:58:48,770 --> 00:58:54,670
archivo, busco o reemplazo cosas, la
concateno, bueno yo soy solo texto esto es

934
00:58:54,670 --> 00:58:59,490
lo que quiero gráfico, bueno, para generar
gráfico a partir de texto uso ImageMagick,

935
00:58:59,530 --> 00:59:05,550
se llama, entonces si querés una imagen le
decís convert, tamaño de imagen, color de

936
00:59:05,550 --> 00:59:10,310
fondo, listo, ya está querés texto, le
decís texto, posición X e Y, tamaño de

937
00:59:10,310 --> 00:59:12,830
fuente, tipografía y la construye.

938
00:59:13,050 --> 00:59:16,430
Entonces de esta manera vos podés
automatizar cosas más importantes, pero un

939
00:59:16,430 --> 00:59:23,670
ejemplo de para resolver algo simple, yo
lo hice en Bash, se puede hacer en Python

940
00:59:23,670 --> 00:59:28,550
ImageMagick, así que la idea de vuelta, es
como volver al código, el código no tiene

941
00:59:28,550 --> 00:59:33,630
que ser muy complejo, tiene que ser simple,
básicamente leo texto, lo proceso de

942
00:59:33,630 --> 00:59:40,410
alguna manera, itero, no hay vueltitas,
programación más simple que existe, se

943
00:59:40,410 --> 00:59:44,190
puede hacer todo desde consola sin usar un
mouse y tienen algo, obviamente si usan un

944
00:59:44,190 --> 00:59:48,170
mouse y saben de diseño van a hacer algo
más bonito pero está armado el script que

945
00:59:48,170 --> 00:59:51,610
de manera que si hay alguien que sabe
diseñar me puede proveer de fondos más

946
00:59:51,610 --> 00:59:56,570
bonitos y listo, como yo lo pongo en
transparente y va a quedar mejor, desde el

947
00:59:56,570 --> 01:00:02,590
año que viene va a salir mejor! La idea
inclusive ahora en unos meses se viene el PyCamp

948
01:00:03,630 --> 01:00:07,730
que es un campamento de programación en Python,
yo no se Python pero me gusta el campamento,

949
01:00:07,970 --> 01:00:12,570
voy todas las veces que puedo, y bueno
este año ya me comprometí que a Eventol le

950
01:00:12,570 --> 01:00:16,150
vamos a poner algo de esto y otras cosas
y bueno, las tengo en Bash, vamos a ver si

951
01:00:16,150 --> 01:00:21,510
las portamos a Python o qué, pero es como
de vuelta, alguien hizo Eventol, yo hice

952
01:00:21,510 --> 01:00:25,050
un scriptcito que hace los flyers, bueno,
unámoslo y que eso quede disponible, para

953
01:00:25,050 --> 01:00:29,310
que el año que viene si alguien quiere use
esto ya sin hacerlo a mano, o si alguien

954
01:00:29,310 --> 01:00:33,170
quiere y puede, lo pueda mejorar y
construye a partir de eso. Esa es la

955
01:00:33,170 --> 01:00:40,510
esencia del Software Libre en general,
cada persona resuelve un problemita para

956
01:00:40,510 --> 01:00:45,710
su necesidad puntual, la publica, la
libera, la deja disponible y el resto

957
01:00:45,710 --> 01:00:51,330
construimos a través de eso es
conocimiento que se difunde y que va

958
01:00:51,330 --> 01:00:56,590
mejorando con el tiempo. Y yo los invito a
que lo hagan por más que les parezca feo

959
01:00:56,590 --> 01:01:03,030
lo que estén haciendo, como háganlo
publiquenlo, aunque sea en ultima instancia

960
01:01:03,030 --> 01:01:06,330
le va a servir para ustedes 10 años
después que perdieron la computadora, no

961
01:01:06,330 --> 01:01:10,510
tienen ningún backup y por lo menos
quedó el repo público ahí, pueden retomar

962
01:01:10,510 --> 01:01:16,310
y construir a partir de eso. Y tampoco
esperen que vuelva, porque nunca vuelve

963
01:01:16,310 --> 01:01:20,750
directamente, o sea, piensen ustedes
cuantas cosas, cuantas herramientas,

964
01:01:20,950 --> 01:01:24,750
cuánto lenguaje, cuánto programa, cuántas
veces ustedes le escribieron a la persona

965
01:01:24,750 --> 01:01:29,750
que hizo eso para decirle gracias, para
reclamarle, para decirle por qué no anda,

966
01:01:30,230 --> 01:01:34,430
pocas veces, pero finalmente eso se va
transformando como una pequeña bola de

967
01:01:34,430 --> 01:01:38,590
nieve que va creciendo y vuelve finalmente
si vuelve a la comunidad a alguien que lo

968
01:01:38,590 --> 01:01:42,270
necesita. Para mí siempre hay que pensar
de trabajar de manera indirecta, es decir

969
01:01:42,270 --> 01:01:48,870
como ustedes se van a ir de acá y mañana
van a hablar con alguien y le van a decir,

970
01:01:49,130 --> 01:01:52,810
había un loco que me quemó la cabeza
con unas cosas que no entendí nada, pero

971
01:01:52,810 --> 01:01:54,410
cuando les empiezan a
contar, va a decir, ¡ah!

972
01:01:54,410 --> 01:01:55,490
qué interesante eso.

973
01:01:55,710 --> 01:01:56,950
¿Y dónde hay más información?

974
01:01:57,010 --> 01:01:57,690
¿Dónde puedo ver eso?

975
01:01:57,730 --> 01:02:00,650
No sé, acá me dieron 1 folleto, fíjate acá

976
01:02:01,090 --> 01:02:03,210
Bueno, a esa persona sí le va
a interesar y le va a servir.

977
01:02:03,510 --> 01:02:08,870
A partir de eso, sirven este espacio
de eventos para ir, uno se lleva algo,

978
01:02:08,970 --> 01:02:10,170
siempre aprende algo nuevo.

979
01:02:10,310 --> 01:02:15,610
No es que acá, creo que era Juan, no sé
que me decía profe, pero yo no soy profe

980
01:02:15,610 --> 01:02:16,010
de nada.

981
01:02:16,990 --> 01:02:22,170
O sea, todo lo que sé de GNU/Linux lo aprendí
haciendo, aprendiendo, leyendo tutoriales,

982
01:02:22,250 --> 01:02:22,810
prueba y error.

983
01:02:22,810 --> 01:02:26,490
Después, obviamente, yendo a un montón de
eventos como este, compartiendo lo que sé

984
01:02:26,490 --> 01:02:29,350
y aprendiendo un
montón de las demás personas.

985
01:02:30,230 --> 01:02:31,150
Es un poco eso.

986
01:02:31,710 --> 01:02:38,030
No esperen la solución completa vayan
por lo que le interese y los movilice y a

987
01:02:38,030 --> 01:02:38,870
partir de ahí construyan.

988
01:02:38,950 --> 01:02:44,210
Después, yo como la remera, uso Debian,
uso Bash, pero ustedes pueden usar lo que

989
01:02:44,210 --> 01:02:45,690
quieran. Gracias.

