Spritesheets con inkscape mediante layers

Cómo extrañaba programar!!! y cómo extrañaba usar linux!!!!! y ahora que tengo linux y quiero acelarar mi proceso de producción de spritesheets, encuentro la escusa perfecta para programar y usar linux XD

Este pequeño script genera un spritesheet a partir de un archivo svg que tenga los sprites tirados por todas partes en capas!

demo.png

#!/bin/bash

filename="$(echo "$1" | awk -F. '{print $1}')"
h="+"

# ¯\_(ツ)_/¯
if [[ $* == *-v* ]]
then
  h="-"
fi

# readibility counts -python zen
layerList="$(inkscape --query-all $1 | grep layer | awk -F, '{print $1}')"

echo "$layerList" |
  awk -v file="$filename" -v h="$h" '
    {system("inkscape " file ".svg -i " $1 " -j -C --export-png /tmp/" file "-" $1 ".png")} 

    END{system("convert " h "append /tmp/" file "-*.png " file ".png")}

    END{system("rm /tmp/" file "-*.png")}'

Primero, consigue el id de los layers de inkscape,  y los pone en una lista. Itera sobre esta lista, para generar imágenes temporales de cada una de las capas, y luego, usando imagemagick, las concatena, horizontal o verticalmente.

Hice un repo donde voy a ir colando scripts de bash para game development… tal vez lo abandone igual que el resto de mis proyectos lol XD pero… tal vez no o__O igual, si alguien quiere descargar el código, pueden clonarlo desde aquí: https://github.com/VengadoraVG/bash-for-gamedevs

me lo lees?

El español tiene muchas variantes. Considerando que, tal y como descubrió Chomsky, el idioma es el primer puzzle que resolvemos, la forma en la que hablamos el español da muchas pistas sobre la forma en la que pensamos.

El español boliviano es muy diferente al español que hablamos allá en Guatemala, y no solo es por el acento, existen muchas diferencias sintácticas! Consideremos, por ejemplo, la palabra “pero”: en Guatemala, se usa sólamente como conector y al principio de la oración que está conectando:

– Levántate! es hora de ir al colegio
-> pero no quiero ir :'(

En cambio, un boliviano hablaría este diálogo así:

– Levántate! es hora de ir al colegio
-> pero! :'(
o también: no quiero ir, pero :'(

En bolivia la palabra “pero” es como una queja, como una palabra que puede ser usada de manera aislada de la escusa.

Encuentro estas diferencias muy interesantes, porque el español boliviano está fuertemente influenciado por sus ancestros nativos. Entendiendo estas diferencias, podemos darnos cuenta de cosas que nuestros ancestros consideraban tan importantes, usuales y naturales, como para necesitar crear un sonido para expresarlas con frecuencia.

Nosotros heredamos estos modos de hablar, tal y como se hereda una herramienta, y estas ideas ancestrales persisten en nosotros y nos permiten transmitir sentimientos complejos que, de no ser por la “corrupción” del lenguaje original, se habrían perdido para siempre.

Pero mi “corrupción del lenguaje” favorita, es la anteposición de “me” a ciertas oraciones imperativas. Por ejemplo: “me lo vas a cuidar”, “me lo vas a llevar”, “me lo vas a dar comida”.

En las oraciones imperativas, observamos a tres actores principales: el que recibe la orden “el oyente”, el que da la orden “el autor” y la acción que se comanda, le llamaremos “la orden”.

Yo veo a esta corrupción del lenguaje, sintácticamente hablando, como si la orden fuera propiedad del autor, y da a conocer un lazo afectivo entre el autor y la orden, que hacen que el oyente transfiera un poco del aprecio que siente por el autor hacia la orden.

Es como decirle, de una forma corta: “es mío, así que cuídalo”, o “hazlo por mi”, o “ya sea que decidas obedecer o desobedecer mi orden, también me va a afectar a mi, de una forma personal.”.

Podría nombrar otra gran cantidad de diferencias sintácticas entre el español que yo hablaba en Guatemala, y el español que hablamos aquí, pero sólamente quería compartir mis experiencias con esta última corrupción del lenguaje, así que… es todo… Chau, se me van a cuidar!

Sobre la censura gubernamental

colegial.png

Un gobierno que censura información con la escusa de proteger a sus ciudadanos de información falsa es, por definición, un gobierno deficiente.

Por un lado, si la información censurada fuera verdadera, quiere decir que el gobierno miente. Por lo tanto, el gobierno es corrupto y descarado, dispuesto a atropellar las libertades individuales de sus ciudadanos con fines egoístas.

Por otro lado, si la información censurada es realmente falsa, quiere decir que el gobierno no confía en que sus ciudadanos tengan la madurez intelectual como para discernir entre lo verdadero y lo falso.

Este último escenario es también aterrador, ya que da indicios de que el gobierno no se preocupa por que sus ciudadanos tengan acceso a educación de calidad, ya sea por descuido, o porque es más fácil gobernar a ciudadanos iletrados.

Cuando el internet no era real

Yo soy de esa generación en la que el internet era un club secreto, protegido por un aura friki y escondido por el temor al rechazo, alimentado por la soledad y fortificado por el anonimato.

En aquellos tiempos, si amenazabas a alguien con matarlo argumentando que sabías en dónde vive por algún artilugio informático, él se reiría en tu cara con un estruendoso LOL seguido de “se nota que estamos en verano”, y si alguien decía que cometería un atentado terrorista, su comentario se perdería entre otros tantos comentarios incentivando actos de odio, mismos que nunca serían materializados, pero aliviarían la ira de sus autores.

Yo pertenezco a un lugar en el que todos hablábamos tonterías, y nos reiríamos de las tonterías que los demás decían. Pertenezco a una familia intangible, inestable, virtual. Pertenezco a una comunidad de inadaptados, marginados por su timidez. Pertenezco a una hermandad que, pese a su aparente intolerancia, recibía con calidez a los newbies, una calidez que solo personas de nuestra calaña podría comprender.

Vengo de un internet en el que lo que decíamos nunca se materializaría en acciones, solamente en pensamientos, un internet en el que lo que decíamos era un reflejo real de nuestros pensamientos más profundos, y hablábamos sin miedo, porque entre frikis nos entendíamos, y nadie perdería su tiempo leyendo nuestras conversaciones. A quién le importaba por entonces lo que pensaran un montón de inadaptados?

En el mundo real, nos entristecíamos de que nadie nos entendiera, pero cuando nos juntabamos, nos enorgullecíamos de que así fuera. Entre nosotros, no existía el miedo a ser tachado de machista, racista o psicópata, porque, en el fondo, sabíamos que solo bromeábamos, pero a veces hablábamos en serio, cuestionando todos nuestros dogmas. Si alguna vez metías la pata, solamente te creabas otra identidad y comenzabas de nuevo, re-integrarse nunca era difícil.

Yo soy de esos tiempos… esos tiempos en los que el internet no era real. Pero ahora, en dónde está ese lugar? en dónde está esa gente y sus retorcidos pensamientos? en dónde quedó nuestro búnker secreto?

Sobre los hackatones…

Es difícil organizar un hackatón, hay que administrar bien el dinero, buscar jurados justos, ser imparciales, administrar bien el tiempo, y muchas otras cosas más!

Hace tiempo ya quería escribir una entrada de blog sobre este tema, pero por todo lo que ha pasado, creo que esta vez sí me animo…

Yo nunca he organizado un hackatón XD pero he participado en algunos (tal vez muy pocos)… en calidad de hackatonera, me gustaría compartir mi experiencia, dar algunos consejos a los organizadores y dar a conocer mi teoría sobre las principales causas del descontento en este tipo de eventos.

Acceso a comida, café y té (de manzanilla) de forma gratuita.

Esto es algo que abundó infinitamente durante el primer GGJ que participé (allá por el 2014, en mi opinión, este fue el mejor de los mejores hackatones en los que participé, y más adelante explico por qué).

Es importante que haya comida (al menos galletitas de agua), y café y té de forma ilimitada y gratuita, porque los hackatoneros no podemos amanecernos sin el “líquido vital”, y difícilmente nos fluye la creatividad con el estómago vacío. Tener acceso a estas cosas, nos hace sentir queridos (de esto también hablaré más adelante)

Es importante también que todos estos recursos estén centralizados en un lugar lejano. Salir de nuestra área de trabajo para ir a farmear café y galletitas, nos hace hablar con el resto de hackatoneros: se nos contagia la emoción, y se crea cierto lazo afectivo… aumenta la espectativa en el día final.

En este sentido, el hackatón del BNB (y el GGJ2014) lo hicieron muy bien.

Host y staff amigable

Esto es algo muy importante, el hackatonero debe sentirse apreciado, esto hace que se identifique con la causa, también crea un ambiente de comunidad.

Sé que hackatonear a veces es estresante por los estrechos deadlines, y por dormir en el piso, pero cuando te atienden bien, todo este estrés puede convertirse en emoción, sirviendo de combustible para el proyecto… un hackatonero malhumorado usará todo este estrés en contra de los miembros de su equipo (y quizás, también en contra del resto de equipos).

Si no confías en que tu staff puede trabajar bajo presión, o tratar bien a tus hackatoneros, es mejor que falte staff a que sobren jetas ;), sólamente, mantenlos alejados de los hackatoneros, podrían arruinar el ambiente.

A veces los organizadores se olvidan que los hackatoneros también hacen una enorme inversión al participar en los hackatones, y esperan ser tratados de forma especial, ya que están brindando su ayuda de forma gratuita.

En este sentido, el GGJ2014 también lo hizo muy bien, porque en todo momento sus organizadores se acercaban a los equipos a ver el progreso, nos sacaban fotos, se reían de nuestras bromas.

En el día final: Escúchalos y provee feedback

No hay nada más feo que matarte trabajando en un proyecto durante mucho tiempo, para que después nadie te tire bola. Te deja vacío por dentro, y enojado por fuera, sin ganas de volver a hacerlo.

Yo sé que no todos los proyectos pueden ser premiados, y que algunas de las ideas que proponemos apestan n.n’ pero, se trata de darle más énfasis a las personas y no a los productos: el perdedor de hoy, podría crear el startupazo de mañana.

Es por eso que es sumamente importante darles a todos los hackatoneros el tiempo que requieran para mostrar lo que han hecho, y no destruirlos con preguntas, sino incentivar su progreso, proveer feedback positivo y negativo en proporciones iguales.

La exposición y la jornada de preguntas no debe estar enfocada a demostrarles a todos quién va a ser el ganador, debe ser orientada a darles a todos y cada uno de los equipos, un espacio para que compartan lo que han hecho, y se sientan apreciados por el trabajo que han desempeñado.

“es que es aburrido escuchar a todos los equipos”, esa es la escusa más ofensiva que un organizador puede plantear para no escuchar a sus hackatoneros… se han esforzado, se han desvelado, podrían haberse quedado en su casa, con una taza de café caliente, en su camita, viendo Star Trek… pero han decidido venir a tu evento y donarte un trozo de su tiempo libre, y ahora, como mínimo, merecen tu atención.

A veces las ideas también son muy buenas, pero el jurado no es lo suficientemente imparcial, o no conoce la tecnología expuesta, por eso…

Jurados de calidad

Los jurados deben ser imparciales… debes asegurarte de que sus juicios no estén sesgados de acuerdo a sus amistades, o hacia sus ideales (por ejemplo, es muy mala idea dejar que una feminista militante descalifique un proyecto sólamente porque no está de acuerdo con el color usado).

Deben ser conocedores, no solo del tema del hackaton, sino que también de las tecnologías que se usarán, y de los géneros que se desarrollarán

Deben ser personas pacientes y con disponibilidad de tiempo, ya que estarán presentes en la exposición final, y le debes dar tiempo a cada equipo para hablar. En ningún momento el juez debe mostrar aburrimiento, ni tratar mal a los expositores, porque recuerda: aunque es importante que surja un proyecto significativo, también es importante que los hackatoneros queden con ganas de volver a participar.

Condiciones puntuales de victoria

Aunque muchos hackatoneros participamos sólamente por amor al deporte XD conozco a varios amigos que participan porque quieren ganar… esto está bien! la competitividad sube la calidad de los proyectos presentados.

Es tremendamente descepcionante cuando te esfuerzas por ganar, y no ganas! es muy difícil eliminar por completo esta descepción, pero sí la aminora el dar condiciones puntuales sobre quién ganará el concurso.

Asegúrate de proveer categorías y delimitarlas muy claramente, y de detallar las condiciones de victoria antes del momento de inscripción, asegúrate de que los jurados conozcan y califiquen de acuerdo a estas condiciones.

Y bueno, para finalizar, siento que el GGJ 2014 fue el mejor hackatón de todos los tiempos, porque durante todo el hackatón me la pasé super feliz, los organizadores parecían un montón de geeks amantes de los videojuegos… Los expositores también parecían aficionados de los videojuegos.

No sé cómo explicarlo, tal vez estoy siendo muy subjetiva (o muy exigente con el resto de hackatones), pero me sentí en comunidad: parte de algo. Al año siguiente quería volver, quería volver a ser parte de eso.

Nomenclatura de la tabla simplex para análisis de sensibilidad según ope 1 (umsa)

Pasé una noche intentando descifrar esta tabla de cierto libro, su notación era un espagueti :v bueno… al menos el libro existe, así que no debería quejarme , supongo :’v

busqué en otros lugares, pero en ninguno encontré el método de la forma en la que enseñan en clases, si supiera el significado matemático de la tabla, podría adaptarlo… pero probablemente me falté a la clase en la que explicaban cuál era el sentido matemático de la tabla, porque no creo que siendo de ciencias puras tengamos que memorizárnosla sin saber lo que implica, o de dónde sale, así que probablemente lo han debido explicar en alguna clase a la que no fui :v

como sea… aquí está lo que pude descifrar!

nomenclatura-simplex

Para encontrar C_B, es algo así: es un vector fila. El vector de costos (c), contiene cuánto se gana (o pierde) por cada unidad X_i producida. R es un vector columna de variables, rescoldos (s_?) o básicas (x_?), e implica que la variable en R[i] es igual al número que está en X_B[i].

Entonces, C_B[i] = cero, si x_i no se encuentra en R.

C_B[i] = A[i], si x_i se encuentra en R.

2da declaración

Antes que nada, muchas gracias Jhery, muchas gracias Bismark, muchas gracias Mabel, me han ayudado mucho para seguir adelante con este caso.

Era el 30 de agosto, y me llamaron de la comisión de procesos para tomar mi declaración, la citación estaba programada para el 8 de septiembre.

Luego de que la comisión de admisiones admitiera mi caso argumentando que soy una persona problemática (lo soy), y que tengo malas notas (las tengo), lo siguiente es esperar a que la comisión de procesos determine si soy o no culpable.

Debo admitir que pasé gran parte de este año preocupada por la siguiente toma de declaración, ya que la primera fue muy estresante. Me trataron como criminal, sentí que me desprestigiaron por mis bajas notas, asumiendo que mi voz no tiene peso.

Me deprimió mucho la idea de que la justicia no existiera: yo no hice nada malo, el docente no cumplió con sus obligaciones, y compañeros a los que vi haciendo trampa en los exámenes, se levantaron a declarar en mi contra en este caso. Fue el docente el que rompió las reglas, y aún así, soy yo quien está siendo procesada… yo que denuncié públicamente los hechos!

Durante todo el año estuve leyendo artículos sobre cómo dar una buena declaración, pero llegué a la conclusión de que lo que ocurrió ese día no fue una toma de declaración, ni una entrevista: fue un interrogatorio. La diferencia, es que en una toma de declaración, se procura encontrar la verdad, en cambio en un interrogatorio, se busca que el interrogado diga lo que los interrogadores quieren escuchar.

Como sea, la toma de la declaración en esta ocasión no fue tan estresante como la primera vez. En esta ocasión, Jhery, que es abogado, ofreció amablemente ayudarme en este caso. Debido a que tiene credencial de abogado, le dejaron entrar a la sala mientras yo declaraba, eso me dio fuerzas, y pude responder a todas las preguntas del jurado, pude permanecer fuerte durante casi toda la declaración… odio admitir que aún no soy lo suficientemente fuerte, y en los últimos minutos, no pude más, pero en comparación con la anterior vez, esta no fue tan mala, creo que estoy comenzando a aprender a ser fuerte.

Al finalizar el interrogatorio, me dijeron que el docente aún está dispuesto a conciliar, pero no acepté. Aceptar una conciliación en la que yo tenga que disculparme debilitaría el ejercicio de la libertad de expresión de todos los estudiantes, ya que usarían este caso como precedente para censurarnos y asustarnos, estos puntos los explico con detalle en esta entrada de blog “No puedo disculparme”.

Aceptar una conciliación sería lo más sencillo, pero no es lo correcto; si usaran este caso como herramienta para reprimir la opinión de cualquier amigo o compañero universitario, jamás podría perdonármelo. Es por eso que voy a seguir luchando para que se haga justicia.

Voy a aprender a ser fuerte, y voy a luchar hasta el final, las consecuencias pueden ser malas, y las probabilidades de que yo salga perdiendo son bastante altas, pero aún hay una pequeña probabilidad de que triunfemos, y que esto quede como precedente de que los estudiantes podemos ejercer nuestra libertad de expresión, de que nadie tiene derecho a censurar ni reprimir la verdad, en especial, cuando esta es de orden público.

“¿Cual es vuestro deber? Mirar al universo a la cara y luego escupirle en ella. Morir con una maldición en los labios y el dedo en el gatillo. Saber que estáis condenados y aun así intentarlo de todos modos.”

– Inquisidor Soldevan, Ordo Hereticus
(Extraído de Dark Heresy: juego de rol de Wh40K);