<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-5309403273623549307</atom:id><lastBuildDate>Wed, 29 Apr 2026 22:43:54 +0000</lastBuildDate><category>escritos</category><category>programacion</category><category>python</category><category>gcoop</category><category>linux</category><category>buenos aires</category><category>diy</category><category>javascript</category><category>joac</category><category>laptop</category><category>tryton</category><category>xml</category><category>OPC</category><category>arte electronico</category><category>bariloche</category><category>blogger</category><category>cafelug</category><category>colores</category><category>conferencias</category><category>cooling</category><category>creatividad</category><category>dell</category><category>gmail</category><category>guitarra</category><category>micros</category><category>modbus</category><category>pixels</category><category>proyectos</category><category>pyconar2009</category><category>router</category><category>windows</category><title>El Blog de Joac</title><description>A place for random ideas</description><link>http://blog.joac.com.ar/</link><managingEditor>noreply@blogger.com (Joac)</managingEditor><generator>Blogger</generator><openSearch:totalResults>57</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-6363463435361805930</guid><pubDate>Fri, 22 Aug 2025 17:25:00 +0000</pubDate><atom:updated>2025-08-22T14:25:42.157-03:00</atom:updated><title></title><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h1 data-end=&quot;233&quot; data-start=&quot;206&quot;&gt;Debugging the Human Layer&lt;/h1&gt;
&lt;p data-end=&quot;340&quot; data-start=&quot;235&quot;&gt;&lt;em data-end=&quot;340&quot; data-start=&quot;235&quot;&gt;How philosophy, radical ideas, and a few humbling books reshaped how I understand software engineering.&lt;/em&gt;&lt;/p&gt;
&lt;hr data-end=&quot;345&quot; data-start=&quot;342&quot; /&gt;
&lt;h2 data-end=&quot;391&quot; data-start=&quot;347&quot;&gt;I. The Most Dangerous Idea I Ever Learned&lt;/h2&gt;
&lt;p data-end=&quot;648&quot; data-start=&quot;393&quot;&gt;I still remember the moment I first read the story of Socrates, as told by Plato. There he was: a man wandering Athens, annoying the powerful, relentlessly questioning everything. But what struck me most was his conclusion: &lt;em data-end=&quot;648&quot; data-start=&quot;617&quot;&gt;“I know that I know nothing.”&lt;/em&gt;&lt;/p&gt;
&lt;p data-end=&quot;713&quot; data-start=&quot;650&quot;&gt;At the time, I didn’t realize it would become a survival skill.&lt;/p&gt;
&lt;p data-end=&quot;1104&quot; data-start=&quot;715&quot;&gt;I learned to code on my own, as a kid, without formal instruction or community. For years, I thought being good at programming meant knowing things. Now I know better: it means knowing how little you know, and how fast everything can change. That epistemic humility—that awareness of your own ignorance—is what truly stuck with me. And it’s the thread that ties together my entire journey.&lt;/p&gt;
&lt;hr data-end=&quot;1109&quot; data-start=&quot;1106&quot; /&gt;
&lt;h2 data-end=&quot;1167&quot; data-start=&quot;1111&quot;&gt;II. Dijkstra, and the First Shock of Radical Thinking&lt;/h2&gt;
&lt;p data-end=&quot;1428&quot; data-start=&quot;1169&quot;&gt;My first encounter with Edsger Dijkstra was jarring. Here was someone who didn&#39;t just love correctness—he demanded it. To him, programming was mathematics in disguise. The sloppiness we tolerated was unacceptable. His writing felt like a slap across the face.&lt;/p&gt;
&lt;p data-end=&quot;1453&quot; data-start=&quot;1430&quot;&gt;But it was also a gift.&lt;/p&gt;
&lt;p data-end=&quot;1713&quot; data-start=&quot;1455&quot;&gt;Dijkstra taught me to take programming seriously. He showed me that under the hood of our “move fast and break things” culture, there’s a deeper discipline—one that demands clarity, precision, and restraint. He didn’t make me a purist. But he made me humble.&lt;/p&gt;
&lt;hr data-end=&quot;1718&quot; data-start=&quot;1715&quot; /&gt;
&lt;h2 data-end=&quot;1769&quot; data-start=&quot;1720&quot;&gt;III. From Code to Product: My Second Awakening&lt;/h2&gt;
&lt;p data-end=&quot;1903&quot; data-start=&quot;1771&quot;&gt;My early years were all about code. I loved it, and I thought that was the job. Then I entered the workforce—and everything changed.&lt;/p&gt;
&lt;p data-end=&quot;2091&quot; data-start=&quot;1905&quot;&gt;Suddenly, my brilliant code wasn’t enough. Features didn’t ship because requirements changed. Deadlines slipped because of unclear priorities. Merge conflicts became emotional conflicts.&lt;/p&gt;
&lt;p data-end=&quot;2358&quot; data-start=&quot;2093&quot;&gt;That’s when I realized something: building software is not about writing code. It’s about delivering value to real people, within real organizations, with real constraints. And that means dealing with complexity—not just technical complexity, but social complexity.&lt;/p&gt;
&lt;hr data-end=&quot;2363&quot; data-start=&quot;2360&quot; /&gt;
&lt;h2 data-end=&quot;2424&quot; data-start=&quot;2365&quot;&gt;IV. The Mythical Man-Month: A Book Everyone Quotes Wrong&lt;/h2&gt;
&lt;p data-end=&quot;2629&quot; data-start=&quot;2426&quot;&gt;Reading &lt;em data-end=&quot;2458&quot; data-start=&quot;2434&quot;&gt;The Mythical Man-Month&lt;/em&gt; by Fred Brooks was like finding the missing manual to software teams. The famous line—&lt;em data-end=&quot;2606&quot; data-start=&quot;2545&quot;&gt;“Adding manpower to a late software project makes it later”&lt;/em&gt;—is just the beginning.&lt;/p&gt;
&lt;p data-end=&quot;2912&quot; data-start=&quot;2631&quot;&gt;Brooks was trying to show that software development isn’t like manufacturing. It’s about communication, shared mental models, and the cost of coordination. And yet, the book is constantly misquoted to shut down hiring or collaboration efforts, instead of sparking deeper questions.&lt;/p&gt;
&lt;hr data-end=&quot;2917&quot; data-start=&quot;2914&quot; /&gt;
&lt;h2 data-end=&quot;2973&quot; data-start=&quot;2919&quot;&gt;V. Conway’s Law: Your Org Chart Is in Your Codebase&lt;/h2&gt;
&lt;p data-end=&quot;3132&quot; data-start=&quot;2975&quot;&gt;Next came Melvin Conway’s 1968 paper, &lt;em data-end=&quot;3042&quot; data-start=&quot;3013&quot;&gt;“How Do Committees Invent?”&lt;/em&gt;—a short, strange little document that continues to explain why so much software is weird.&lt;/p&gt;
&lt;p data-end=&quot;3430&quot; data-start=&quot;3134&quot;&gt;Conway’s Law says that systems reflect the communication structure of the organizations that build them. And once you see it, you can’t unsee it. The front end talks to the back end like two rival departments. The database mirrors the ops team’s paranoia. Microservices become miniature fiefdoms.&lt;/p&gt;
&lt;p data-end=&quot;3512&quot; data-start=&quot;3432&quot;&gt;Understanding this changed how I looked at software architecture—and org design.&lt;/p&gt;
&lt;hr data-end=&quot;3517&quot; data-start=&quot;3514&quot; /&gt;
&lt;h2 data-end=&quot;3573&quot; data-start=&quot;3519&quot;&gt;VI. Peopleware: Where Everything Finally Made Sense&lt;/h2&gt;
&lt;p data-end=&quot;3719&quot; data-start=&quot;3575&quot;&gt;&lt;em data-end=&quot;3587&quot; data-start=&quot;3575&quot;&gt;Peopleware&lt;/em&gt;, by DeMarco and Lister, broke me open. It said, plainly: &lt;em data-end=&quot;3719&quot; data-start=&quot;3645&quot;&gt;the biggest problems in software are not technical—they’re sociological.&lt;/em&gt;&lt;/p&gt;
&lt;p data-end=&quot;4010&quot; data-start=&quot;3721&quot;&gt;It talked about flow, distractions, toxic management, and the importance of safety and trust. It felt like someone was finally saying out loud the things we all sensed but couldn’t articulate. And for someone with ADHD like me, it gave language to the invisible frictions I felt every day.&lt;/p&gt;
&lt;hr data-end=&quot;4015&quot; data-start=&quot;4012&quot; /&gt;
&lt;h2 data-end=&quot;4082&quot; data-start=&quot;4017&quot;&gt;VII. Thinking in Systems: Donella Meadows and the Hidden Loops&lt;/h2&gt;
&lt;p data-end=&quot;4162&quot; data-start=&quot;4084&quot;&gt;Donella Meadows’ &lt;em data-end=&quot;4122&quot; data-start=&quot;4101&quot;&gt;Thinking in Systems&lt;/em&gt; was the last major piece of the puzzle.&lt;/p&gt;
&lt;p data-end=&quot;4420&quot; data-start=&quot;4164&quot;&gt;Her book introduced me to feedback loops, delays, leverage points, and the subtlety of change. It showed me why naive interventions often backfire. Why “more engineers” doesn’t always mean “faster delivery.” Why teams plateau, burn out, or spin in circles.&lt;/p&gt;
&lt;p data-end=&quot;4513&quot; data-start=&quot;4422&quot;&gt;This was the moment I realized I wasn’t working on a product—I was working inside a system.&lt;/p&gt;
&lt;hr data-end=&quot;4518&quot; data-start=&quot;4515&quot; /&gt;
&lt;h2 data-end=&quot;4585&quot; data-start=&quot;4520&quot;&gt;VIII. Modern Software Engineering: Science, Feedback, and Flow&lt;/h2&gt;
&lt;p data-end=&quot;4812&quot; data-start=&quot;4587&quot;&gt;David Farley’s &lt;em data-end=&quot;4631&quot; data-start=&quot;4602&quot;&gt;Modern Software Engineering&lt;/em&gt; helped me reconcile rigor with iteration. He showed that engineering is not about certainty—it’s about learning. It’s the scientific method under constraints. Test, observe, adapt.&lt;/p&gt;
&lt;p data-end=&quot;4987&quot; data-start=&quot;4814&quot;&gt;This clicked with my experience. It gave a name to the intuitive loop I’d been building: act, reflect, refactor. And it gave me permission to be curious instead of dogmatic.&lt;/p&gt;
&lt;hr data-end=&quot;4992&quot; data-start=&quot;4989&quot; /&gt;
&lt;h2 data-end=&quot;5026&quot; data-start=&quot;4994&quot;&gt;IX. Debugging the Human Layer&lt;/h2&gt;
&lt;p data-end=&quot;5083&quot; data-start=&quot;5028&quot;&gt;All of this led me to a simple, hard-earned conclusion:&lt;/p&gt;
&lt;blockquote data-end=&quot;5119&quot; data-start=&quot;5085&quot;&gt;
&lt;p data-end=&quot;5119&quot; data-start=&quot;5087&quot;&gt;&lt;strong data-end=&quot;5119&quot; data-start=&quot;5087&quot;&gt;The hardest bugs are social.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;5276&quot; data-start=&quot;5121&quot;&gt;It’s not your code that will sink the project—it’s the trust that was never built, the message that was never sent, the expectation that was never aligned.&lt;/p&gt;
&lt;p data-end=&quot;5409&quot; data-start=&quot;5278&quot;&gt;Good engineers aren’t the best coders. They’re the ones who can listen, co-create, and build systems—of people, of habits, of care.&lt;/p&gt;
&lt;hr data-end=&quot;5414&quot; data-start=&quot;5411&quot; /&gt;
&lt;h2 data-end=&quot;5432&quot; data-start=&quot;5416&quot;&gt;Final Thought&lt;/h2&gt;
&lt;p data-end=&quot;5509&quot; data-start=&quot;5434&quot;&gt;We’ve spent decades trying to make software better by writing smarter code.&lt;/p&gt;
&lt;p data-end=&quot;5563&quot; data-start=&quot;5511&quot;&gt;Maybe it’s time we wrote &lt;strong data-end=&quot;5554&quot; data-start=&quot;5536&quot;&gt;kinder systems&lt;/strong&gt; instead.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2025/08/debugging-human-layer-how-philosophy.html</link><author>noreply@blogger.com (Joac)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-404830565175865803</guid><pubDate>Fri, 28 Aug 2015 22:46:00 +0000</pubDate><atom:updated>2015-08-28T20:54:25.721-03:00</atom:updated><title>Algo mas de 140 caracteres.</title><description>Desde hace un tiempo, lo único que cuento lo hago por twitter. Cientos de mensajes cortos que intentan comunicar lo que pasa con la causa.&lt;br /&gt;
&lt;br /&gt;
Hay días que también hablo sutilmente, de como me siento yo.&lt;br /&gt;
&lt;br /&gt;
Pero, releyéndolos, me encuentro con que en el fondo, no logro expresar del todo las cosas. Esos 140 caracteres obligan a reducir, recortar, y de alguna manera auto censurarnos.&lt;br /&gt;
&lt;br /&gt;
Es que los últimos 64 días que pasaron desde el reporte de la vulnerabilidad y el ataque informático que estaba sufriendo MSA, fueron muy intensos.&lt;br /&gt;
&lt;br /&gt;
Antes del allanamiento, miedo a que las personas responsables del ataque informático me hicieran daño a mi o a mi familia.&lt;br /&gt;
&lt;br /&gt;
Después, miedo a que la justicia no opere de forma correcta, que me condenen sin pruebas, que la causa sea solo para meter miedo.&lt;br /&gt;
&lt;br /&gt;
Alrededor de esas cosas quedan otras: el desgaste sobre los afectos, el estrés, y la enorme impotencia de ser considerado culpable por amistades.&lt;br /&gt;
&lt;br /&gt;
Si, adentro de MSA, hay varias personas que, mas allá de las diferencias políticas e ideológicas que podamos tener, consideraba amigas.&lt;br /&gt;
&lt;br /&gt;
¿Será acaso que, por estar en contra de los sistemas de votación electrónica que ellos proponen, piensen que no tengo ética profesional?&lt;br /&gt;
&lt;br /&gt;
¿O que consideren que soy capaz de hacer daño en sus servidores solo para demostrar los riesgos?&lt;br /&gt;
&lt;br /&gt;
Están equivocados.&lt;br /&gt;
&lt;br /&gt;
Porque en el momento en que les avisé, pude separar mis propias convicciones, de lo estrictamente ético y profesional.&lt;br /&gt;
&lt;br /&gt;
Les pido, a aquellos que trabajan en MSA con los que compartimos cosas en espacios de las comunidades de software libre, que traten de hacer lo mismo. &lt;br /&gt;
&lt;br /&gt;
Porque con lo que está pasando, perdemos todos. &lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2015/08/algo-mas-de-140-caracteres.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-7409323877610784313</guid><pubDate>Fri, 03 Oct 2014 16:08:00 +0000</pubDate><atom:updated>2014-10-03T13:10:22.008-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">colores</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">pixels</category><title>Pixels de colores.</title><description>Desde que tengo memoria, pintar cosas con colores me costó muchísimo.&lt;br /&gt;
&lt;br /&gt;
En la escuela primaria, por ejemplo, mis cuadernos tenian dibujos en lápiz negro, y grisados. Mi abuelo dibujaba así y lograba efectos buenísimos.&lt;br /&gt;
&lt;br /&gt;
Para mi los lápices de colores se transformaban en bestias indomables que desparramaban color sin llegar a gustarme.&lt;br /&gt;
&lt;br /&gt;
Cuando empecé a programar, siempre me escudé en &quot;Yo hago la lógica, que otro le ponga colores&quot;. En fin, años de traumas por no poder combinar dos colores o mas.&lt;br /&gt;
&lt;br /&gt;
Hace un par de años, en una de las visitas a mi genial sobrina Catalina, mis tios le mandaron conmigo una caja de acuarelas, y yo le llevaba libros de Oliver Jeffers. &lt;br /&gt;
&lt;br /&gt;
Fue asombroso.&lt;br /&gt;
&lt;br /&gt;
Probablemente tendría que escribir un post entero sobre como &amp;nbsp;el hacer actividades en las que nos sentimos inseguros, junto con niños, puede cambiar nuestras perspectivas.&lt;br /&gt;
&lt;br /&gt;
El resultado, montones de dibujos &quot;en colaboración&quot; con mi sobrina, &amp;nbsp;analizamos juntos los dibujos de Jeffers y tratamos de darnos cuenta como lograba los efectos.&lt;br /&gt;
&lt;br /&gt;
En ese momento, me di cuenta que necesitaba volver a dibujar y mejorar mi tema con los colores.&lt;br /&gt;
&lt;br /&gt;
Miré videos, lei tutoriales sobre teoria del color y nada parecia mejorar.&lt;br /&gt;
&lt;br /&gt;
Entonces mi primo Nahuel, me recomendó una charla, que me hizo cambiar mucho mi forma de ver las cosas:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;400&quot; mozallowfullscreen=&quot;&quot; src=&quot;//player.vimeo.com/video/27285817&quot; webkitallowfullscreen=&quot;&quot; width=&quot;500&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
En resumen, si no van a ver el video completo:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Dibujar todos los días, analizar que nos gusta de las cosas que nos gustan, copiar y transformar.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Una de esas cosas que hice fue mi portada para twitter usando pixeles grandotes. Para eso usé inkscape, y fue bastante engorroso.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://pbs.twimg.com/profile_banners/187604730/1411142579/1500x500&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;131&quot; src=&quot;https://pbs.twimg.com/profile_banners/187604730/1411142579/1500x500&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Terminada la portada, me animé a hacer un patron para usar de fondo, el resultado... triste...&lt;br /&gt;
&lt;br /&gt;
Es difícil hacer patrones repetitivos, sin que &quot;el atomo&quot; que se repite sea demasiado obvio.&lt;br /&gt;
&lt;br /&gt;
Por eso, luego de escribir toneladas de javascript para el proyecto en el que estoy laburando, decidí tomarme un rato de programación lúdica, y armé&lt;a href=&quot;http://joac.github.io/pixium&quot;&gt; pixium&lt;/a&gt;, una herramienta muy sencilla, para crear patrones.&lt;br /&gt;
&lt;br /&gt;
El resultado, adictivo.&lt;br /&gt;
&lt;br /&gt;
Como conclusión: dibujar y programar son cosas parecidas, ambas implican creatividad, y la mejor manera de estimularla es haciendo y analizando. Eso, creo, es fundamental para aprender.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2014/10/pixels-de-colores.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-9165046723264116722</guid><pubDate>Mon, 16 Sep 2013 13:38:00 +0000</pubDate><atom:updated>2013-09-16T10:43:57.490-03:00</atom:updated><title>Chau Carlitos</title><description>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;La semana pasada falleció mi querido abuelo Carlos, un inmenso filosofo y guia en el trajín de la existencia.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Sentí la necesidad de escribir unas palabras para leerle a la familia, antes de que su cuerpo sea cenizas. Lo comparto aquí:&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnf88rXgv6AREW3LO3iPnWvnT3ivycjxKMCvLrr6Ank7DurJ8NcRT7q1L6BAc8SIJumLyDkL_Q_eykFzjWeTp1Ja9IhmN04r-AcAF7UxzxJdm7H-UAQAvtuGyNZ5VOib4sJQ1VJXqmUDc/s1600/1175514_435558836555259_1569656206_n.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnf88rXgv6AREW3LO3iPnWvnT3ivycjxKMCvLrr6Ank7DurJ8NcRT7q1L6BAc8SIJumLyDkL_Q_eykFzjWeTp1Ja9IhmN04r-AcAF7UxzxJdm7H-UAQAvtuGyNZ5VOib4sJQ1VJXqmUDc/s1600/1175514_435558836555259_1569656206_n.jpg&quot; height=&quot;252&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;Pensé que sabía como era la tristeza.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;Pero no sabia.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;


&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;En este ultimo tiempo, empece sin darme cuenta a vivir como vivías: mas despacio, mas en el presente; saboreando el tiempo sin apuro, disfrutando toda la belleza sutil que los hombres pudieron ver en un tiempo. Y es tan bello.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;Que suerte tuvimos de tenerte cerca, paisano del medioevo. Nos dejaste las herramientas y la sabiduría para transformarte en leyenda.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;Nos dejaste el amor por la simpleza, por lo bello, por los culos de rebosantes gorditas porteñas.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;Nos querias. Lo demostrabas con formas acordes a tu personalidad.&lt;/i&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;Nunca regalaste un libro. Regalaste invitaciones a leerlos, y cumpliste tu objetivo de despertar miradas y enseñar a ver.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;Ahora la digestora del tiempo nos hará recordarte. Nos la dejaste fácil. Basta con repetir tus frases, escuchar tus canciones favoritas. Mirar con ojos atentos, o sentarse en el banquito (del museo de Bellas Artes) a planear un robo romantico e imposible. Como vos.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;Vas a ser el héroe de tataranietos curiosos por saber de ese pequeño cúmulo de sabiduría, amor y sensibilidad. Gracias. Por escuchar y por ser. Por dejarnos un &amp;nbsp;cacho tuyo aun por descubrir.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;i&gt;Ha muerto un gran hombre. Lloro por los irreversible.&lt;/i&gt;&lt;/span&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2013/09/chau-carlitos.html</link><author>noreply@blogger.com (Anonymous)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnf88rXgv6AREW3LO3iPnWvnT3ivycjxKMCvLrr6Ank7DurJ8NcRT7q1L6BAc8SIJumLyDkL_Q_eykFzjWeTp1Ja9IhmN04r-AcAF7UxzxJdm7H-UAQAvtuGyNZ5VOib4sJQ1VJXqmUDc/s72-c/1175514_435558836555259_1569656206_n.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-8553974125459574289</guid><pubDate>Thu, 06 Jun 2013 18:05:00 +0000</pubDate><atom:updated>2013-06-06T15:06:15.451-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><title>El pequeño imcomprendido</title><description>Este post podría hablar de mi mismo, de los problemas que creo que tengo para lograr que otras personas me entiendan, pero no, eso lo dejo para otro día, o mejor para el&amp;nbsp;diván.&lt;br /&gt;
&lt;br /&gt;
Hoy revisar un poco sobre otro pequeño&amp;nbsp;incomprendido, que comparte mis iniciales: JavaScript&lt;br /&gt;
&lt;h2&gt;
Un poquito de historia&lt;/h2&gt;
JavaScript fué creado en Netscape por &lt;a href=&quot;http://es.wikipedia.org/wiki/Brendan_Eich&quot; target=&quot;_blank&quot;&gt;Brendan Eich&lt;/a&gt;.&amp;nbsp;Querían&amp;nbsp;un &amp;nbsp;lenguaje interpretado&amp;nbsp;fácil&amp;nbsp;de aprender, en cierta forma, como Visual Basic. El nombre en clave era &quot;Moca&quot;, pero como en ese momento estába de moda Java, le pusieron JavaScript. Esa fué, en mi&amp;nbsp;opinión&amp;nbsp; uno de los principales vectores de la confusión e&amp;nbsp;incomprensión&amp;nbsp;que sufre el lenguaje. Si querés aprender y no sabes la diferencia, podes llegar a seguir un tutorial complejo de Java por error, y los lenguajes, en si, solo comparten cierta sintaxis heredada de C.&lt;br /&gt;
&lt;br /&gt;
Según&amp;nbsp;cuenta la leyenda, a javascript lo crearon entre gallos y madrugada, y como estaba aparentemente listo y completo, lo metieron en Netscape,&amp;nbsp;así&amp;nbsp;como estaba. No es que JavaScript no sea un lenguaje de&amp;nbsp;programación&amp;nbsp;&lt;a href=&quot;http://es.wikipedia.org/wiki/Turing_completo&quot; target=&quot;_blank&quot;&gt;&quot;turing completo&quot;&lt;/a&gt;, es que hay algunos comportamientos que son distintos de lo que un programador con cierta experiencia podría esperar.&lt;br /&gt;
&lt;h2&gt;
Como lo viví yo.&lt;/h2&gt;
&lt;div&gt;
Si bien mi primer lenguaje fue Logo, allá por 1994, y tuve pasos fugaces por Visual Basic y C++, mi romance mas fuerte fue con python. Python es un lenguaje lindo, es &amp;nbsp;como una chica linda, inteligente y comprensiva, que te ayuda a que programar, te avisa cuando estas haciendo burradas, y por lo general es sincera con vos. Esas &quot;bondades&quot; hacen que uno analice muchos aspectos de otros lenguajes de programación. Desde ese punto de vista, JavaScript es horrible,&amp;nbsp;criptico, e impredecible.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Pero siempre en la vida de un programador, por necesidad, o eventualidad tenes que escribir código PHP&lt;/div&gt;
&lt;div&gt;
(que tire la primera piedra quien esté libre de PHP...) y&amp;nbsp;ahí&amp;nbsp;la&amp;nbsp;visión&amp;nbsp;cambia. PHP es como el estereotipo de minita, es lo que quiere el mercado, cuando las cosas no andan&amp;nbsp;bien&amp;nbsp;no te dice nada, cuanto mas lo conoces mas de mentira te das cuenta que es, y termina siendo una&amp;nbsp;relación&amp;nbsp;dolorosa (Por&amp;nbsp;ahí&amp;nbsp;para PHP no porque es bien minita). Desde esa comparación, JavaScript queda bien parado.&amp;nbsp;Vendría&amp;nbsp;a ser el lenguaje mas humano posible, con sus idas y vueltas, pero real, sin mentiras. Los lenguajes de programación, son en cierta forma como las personas, si te dejas llevar por la primera&amp;nbsp;impresión, te podes equivocar, y tienen imperfecciones, como todos, si, hasta Python tiene sus grises.&lt;/div&gt;
&lt;h2&gt;
Por donde arrancar&lt;/h2&gt;
&lt;div&gt;
Al menos para mi, es importante estar motivado para hacer algo, las cosas que &amp;nbsp;mas me motivan de JavaScript, es que esta cada vez en mas lugares, o mejor dicho, hay cada vez en mas dispositivos que tienen browsers. Por otra parte, existe &lt;a href=&quot;http://nodejs.org/&quot;&gt;node.js&lt;/a&gt;, que nos permite escribir servidores asincronos usando el lenguaje, e incluso hay&lt;a href=&quot;http://baalexander.github.io/rosnodejs/&quot;&gt; robots que usan JavaScript.&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Lo que considero clave para aprender y querer al lenguaje, es aceptar que es distinto. No tiene clases &quot;per se&quot;, y los ciudadanos de primer nivel son las funciones. Es un lenguaje funcional.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Muchas veces me paso de encontrarme con&amp;nbsp;código&amp;nbsp;en el lenguaje &quot;X&quot; como si fuese el lenguaje &quot;Y&quot;. (Python como si fuese java, ultimamente). Es algo muy normal cuando trabajamos con una mezcla de&amp;nbsp;tecnologías&amp;nbsp;(en el caso de que desarrollemos web), pero lentamente, es importante profundizar en las diferencias, para escribir mejor JavaScript.&lt;/div&gt;
&lt;h2&gt;
Los materiales que mas me sirvieron&lt;/h2&gt;
&lt;div&gt;
Mi heroe personal en materia de Javascript es Douglas Crockford, autor de el ya&amp;nbsp;mítico&amp;nbsp;&quot;&lt;a href=&quot;http://www.crockford.com/javascript/javascript.html&quot; target=&quot;_blank&quot;&gt;The World&#39;s Most Misunderstood Programming Language&quot;&lt;/a&gt;, lamentablemente, no puedo recomendar traducciones, porque... no me gustan las traducciones.&lt;/div&gt;
&lt;div&gt;
Para seguir avanzando, y entendiendo el lenguaje, el&amp;nbsp;elegido&amp;nbsp;es &lt;a href=&quot;http://shop.oreilly.com/product/9780596517748.do&quot;&gt;&quot;JavaScript the good parts&quot;&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
Paul Irish,&amp;nbsp;también&amp;nbsp;es un crack, el screencast de &lt;a href=&quot;http://www.paulirish.com/2010/10-things-i-learned-from-the-jquery-source/&quot;&gt;&quot;10 cosas que aprendí mirando el código fuente de JQuery&quot;&lt;/a&gt;, es un material tremendo.&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2013/06/el-pequeno-imcomprendido.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-7860028040453419332</guid><pubDate>Wed, 05 Jun 2013 17:23:00 +0000</pubDate><atom:updated>2013-06-05T14:23:22.379-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gcoop</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tryton</category><category domain="http://www.blogger.com/atom/ns#">xml</category><title>Zafá del xml con Tryton Builder!</title><description>Hay cosas que no me gustan, y hay cosas que detesto. En esa escala de valores, en el primer lugar está PHP y en el segundo los XMLs. Como &lt;a href=&quot;http://www.joaclandia.com.ar/2013/06/monkey-patcheando-element-tree-para.html&quot; target=&quot;_blank&quot;&gt;conté en el post anterior&lt;/a&gt;, estoy desarrollando algunos&amp;nbsp;módulos&amp;nbsp;para&amp;nbsp;&lt;a href=&quot;http://www.tryton.org/&quot; target=&quot;_blank&quot;&gt;Tryton&lt;/a&gt;, que define sus vistas, y elementos de&amp;nbsp;interacción&amp;nbsp;usando ese lenguaje de markup.&lt;br /&gt;
&lt;br /&gt;
Hay varios&amp;nbsp;artículos&amp;nbsp;que hablan que uno tiene que&lt;a href=&quot;http://blogoscoped.com/archive/2005-08-24-n14.html&quot; target=&quot;_blank&quot;&gt; ser un programador vago&lt;/a&gt;, yo estoy totalmente de acuerdo con que hay que ser un programador que automatiza al&amp;nbsp;máximo&amp;nbsp;el trabajo que no le gusta hacer, para poder dedicar el tiempo a problemas mas complicados o atractivos, o a mirar por la ventana.&lt;br /&gt;
&lt;br /&gt;
En mi intento por zafar de escribir varios cientos de &amp;nbsp;&#39;&amp;lt;&#39;,&#39; /&#39;, y &#39;&amp;gt;&#39; a mano nació &lt;a href=&quot;https://github.com/joac/tryton_builder&quot; target=&quot;_blank&quot;&gt;Tryton Builder &lt;/a&gt;(Que tiene logo y todo!)&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://raw.github.com/joac/tryton_builder/master/data/logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://raw.github.com/joac/tryton_builder/master/data/logo.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Por el momento, para generar un módulo, hay que escribir un pequeño archivo de&amp;nbsp;código&amp;nbsp;(Si, es código python, porque me gusta programar, no parametrizar, yamls, csv, y ese tipo de cosas) de este estilo:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;script src=&quot;https://gist.github.com/joac/5715573.js&quot;&gt;&lt;/script&gt;


En el ejemplo, estoy realizando todos los pasos para generar el modulo de ejemplo del &lt;a href=&quot;http://code.google.com/p/tryton/wiki/HelloWorld&quot; target=&quot;_blank&quot;&gt;wiki de tryton&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Solo para comparar la diferencia de caracteres escritos versus generados:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;script src=&quot;https://gist.github.com/joac/5715603.js&quot;&gt;&lt;/script&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
El proximo paso, es armar una interfaz de consola como la de los scaffolders de Ruby On Rails&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://raw.github.com/joac/tryton_builder/master/data/logo.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href=&quot;https://raw.github.com/joac/tryton_builder/master/data/logo.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2013/06/zafa-del-xml-con-tryton-builder.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-9164636317193787622</guid><pubDate>Tue, 04 Jun 2013 17:04:00 +0000</pubDate><atom:updated>2013-06-04T14:04:06.557-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gcoop</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">tryton</category><category domain="http://www.blogger.com/atom/ns#">xml</category><title>Monkey Patcheando Element tree para soportar cdata</title><description>Hace un tiempo que estoy trabajando con Tryton, el ERP libre, escrito en python, y como me gustan los scaffolders de Rails,&amp;nbsp;decidí&amp;nbsp;escribir uno para armar los esqueletos de los&amp;nbsp;módulos.

Tryton, no se bien por que motivo, utiliza mucho xml, para definir vistas, y fixtures de datos. Como me gusta programar en python, me empezé a escribir una especie de DSL para definirlos de una manera mas amigable:&lt;br /&gt;
&lt;a href=&quot;https://github.com/joac/tryton_builder&quot; target=&quot;_blank&quot;&gt;https://github.com/joac/tryton_builder&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Python permite trabajar con xml con un&amp;nbsp;montón&amp;nbsp;de bibliotecas distintas, pero las mas amigable de usar, para mi es ElementTree&lt;br /&gt;
&lt;br /&gt;
Cuando empece a escribir el codigo, y hacer pruebas, me&amp;nbsp;encontré&amp;nbsp;con varios problemas, el primero, ElementTree no tiene &quot;Pritty Print&quot;&lt;br /&gt;
para que el xml generado sea mas&amp;nbsp;cómodo&amp;nbsp;de leer, por suerte&amp;nbsp;encontré&amp;nbsp;esta receta:
&lt;br /&gt;&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/joac/5707530.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;
en&amp;nbsp;&lt;a href=&quot;http://effbot.org/zone/element-lib.htm#prettyprint&quot;&gt;http://effbot.org/zone/element-lib.htm#prettyprint&lt;/a&gt;&amp;nbsp;que resolvió correctamente el problema&lt;br /&gt;
&lt;br /&gt;
Avanzando en el diseño de los scaffolders me encontré con otra&amp;nbsp;limitación&amp;nbsp; ElementTree no soporta el tag CDATA. Usted podria preguntarse &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/CDATA&quot; target=&quot;_blank&quot;&gt;¿Que es el tag CDATA?&lt;/a&gt;&quot;,&amp;nbsp;Básicamente&amp;nbsp;un tag que le dice al parser &quot;Lo que esta aca adentro es un conjunto de caracteres, no lo parsees&quot;&lt;br /&gt;
Si bien se puede evitar el uso del tag, ingresando el texto escapado (por ejemplo, en lugar de &#39;&amp;gt;&#39; escribir &#39;&amp;amp;gt&#39; ) el objetivo es que el XML no deje de ser legible,&amp;nbsp;encontré&amp;nbsp;otras recetas en StackOverflow:&lt;br /&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/174890/how-to-output-cdata-using-elementtree&quot;&gt;http://stackoverflow.com/questions/174890/how-to-output-cdata-using-elementtree&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Pero finalmente,&amp;nbsp;decidí&amp;nbsp;escribir mi propia&amp;nbsp;versión&amp;nbsp;basada en algunos de los comentarios (la receta con mas votos no funciona en python 2.7+)
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/joac/5707442.js&quot;&gt;&lt;/script&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2013/06/monkey-patcheando-element-tree-para.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-7776192109728369738</guid><pubDate>Tue, 26 Feb 2013 00:03:00 +0000</pubDate><atom:updated>2013-02-25T21:03:38.537-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">escritos</category><title>Finos Dardos</title><description>Noche cerrada,&lt;div&gt;
el momento de atacar&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
No es la victima dormida su presa,&lt;/div&gt;
&lt;div&gt;
es el noctambulo despierto&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Carecen de veneno,&lt;/div&gt;
&lt;div&gt;
elijen preciso donde impactar.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Volando entre nubes neuronales,&lt;/div&gt;
&lt;div&gt;
minúsculos&amp;nbsp;misiles dirigidos a las&amp;nbsp;raíces.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Fibras que lo atraviesan todo,&lt;/div&gt;
&lt;div&gt;
hasta el descanso.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Luego la pausa,&lt;/div&gt;
&lt;div&gt;
la tormenta que no llega.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Las nubes que prometieron lluvia,&lt;/div&gt;
&lt;div&gt;
se van secas.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
El viento que decide no soplar mas,&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
y disfrazarnos de silencio.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Y la lluvia empieza.&lt;/div&gt;
&lt;div&gt;
Salada.&lt;/div&gt;
&lt;div&gt;
Tibia.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
De pronto sin aviso,&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
es río bravo.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Al momento amaina,&lt;/div&gt;
&lt;div&gt;
dejando ese sabor amargo.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Algunos lo taparan con vino.&lt;/div&gt;
&lt;div&gt;
Otros con distancia.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Y los terceros,&amp;nbsp;engranajes pensantes,&lt;/div&gt;
&lt;div&gt;
tratarán de separar los gustos.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Así, algún día puedan,&lt;/div&gt;
&lt;div&gt;
hallar esa neurona amarga.&lt;/div&gt;
&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2013/02/finos-dardos.html</link><author>noreply@blogger.com (Anonymous)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-1856922689571061669</guid><pubDate>Mon, 17 Dec 2012 21:32:00 +0000</pubDate><atom:updated>2012-12-17T18:32:11.626-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">creatividad</category><category domain="http://www.blogger.com/atom/ns#">escritos</category><title>Dolor de espalda. </title><description>Desde ayer estoy con un dolor de espalda importante, incomodo. Decidí reposar un poco, y evitar mayoritariamente estar con la computadora, que claramente, no me ayuda a mejorar mi postura.&lt;br /&gt;
&lt;br /&gt;
En este rato largo, de unas 20 horas para pensar desenfrenadamente, me dediqué a revisar las cosas que me hacen sentirme raro cuando estoy con otra gente y las que me dan miedo.&lt;br /&gt;
&lt;br /&gt;
La conclusion es bastante clara: soy una máquina de pensar, y en ciertos casos, de pensar de mas.&lt;br /&gt;
&lt;br /&gt;
Me sorprende pensar, que muchas veces las cosas que quiero, son mas simples que el modelo mental que fabrico de ellas y mas espontaneas. Usted, querido lector, comprenderá que me gusta hacer música y otro tipo de cosas llamemos creativas, movilizadas, principalmente por la espontaneidad.&lt;br /&gt;
&lt;br /&gt;
Hace un tiempo leí un libro llamado &quot;Free Play&quot; que habla un poco de lo procesos creativos y la improvisación musical. El autor diferencia claramente el &quot;Juego Libre&quot; que acompaña la creación de cosas (no nos importa si nuevas o no) y el proceso posterior de edición que completa, o refina la creación.&lt;br /&gt;
&lt;br /&gt;
Me di cuenta, que en mi cabeza los dos procesos ocurren simultáneamente, por algún designio de un gen adicto a la concurrencia y la paralelización de procesos. Y como me gusta generarme paradigmas validos para seguir pensando mas y mas, a raiz de eso puedo explicarme, de alguna forma lógica, rebuscada e inhumana, varios comportamientos o cosas que nunca puedo lograr. O que al menos no puedo observar que logro.&lt;br /&gt;
&lt;br /&gt;
Es ese proceso de autocensura constante, que no logra llevarme a intentar. Y ahi, es donde está la trampa. Porque, de las experiencias podemos aprender, y sacar conclusiones que nos ayuden a abordar otros intentos con mayor exito.&lt;br /&gt;
&lt;br /&gt;
Y la pregunta de como medimos el éxito, lo dejo como tarea para el hogar. Quizás una respuesta esta justo al costado, y como sigo mirando para adelante, solamente, cual caballo con anteojeras, siga un largo trecho sin notarla.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2012/12/dolor-de-espalda.html</link><author>noreply@blogger.com (Joac)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-8429031136416393492</guid><pubDate>Wed, 12 Dec 2012 03:40:00 +0000</pubDate><atom:updated>2012-12-12T00:40:22.758-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">escritos</category><title>Las Cosas Cambian</title><description>Hace bastante, pero bastante en serio, que no escribo en &amp;nbsp;este blog. Pero hoy, robándole un rato al sueño, me compro el desafio, y despunto al vicio de contar.&lt;br /&gt;
&lt;br /&gt;
Es que las cosas cambian, y lo que uno vió ayer, y consideró una referencia válida, absoluta e inamovible, no es ni valida, ni absoluta, ni inamovible hoy. Es que la vida es mas compleja, es mucho mas compleja.&lt;br /&gt;
&lt;br /&gt;
Porque tengo la certeza de que todos vamos a morir sin entenderla. Pero quizas, si logramos ser sabios, y aprender del vasto conflicto, lleguemos a ese punto de inflexión, al menos con la certeza de que buscamos todas las formas posibles de disfrutarla al máximo.&lt;br /&gt;
&lt;br /&gt;
Es que existe mas que la búsqueda &quot;estrella&quot;, &quot;primero en profundidad&quot; y otras que pregonan los textos de inteligencia artificial. Es la búsqueda, que ya de nacimiento sabe de la infinitud del universo y la certeza de que nunca se llegará a la respuesta esperada. Pero igual decide ser. Y transcurrir, despacio, muy despacio, llevandonos.&lt;br /&gt;
&lt;br /&gt;
Y en el camino nos acerca a cosas, a gente, a proyectos, a historias, que valen la pena. Y la búsqueda en pleno ejercicio de sus derechos, se redefine y vuelve a llevarnos.&lt;br /&gt;
&lt;br /&gt;
Y los seguira haciendo.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2012/12/las-cosas-cambian.html</link><author>noreply@blogger.com (Joac)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-8474170140040505967</guid><pubDate>Fri, 21 Oct 2011 04:10:00 +0000</pubDate><atom:updated>2011-10-21T01:10:44.473-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">escritos</category><title>Decaer como cesio 137</title><description>(leer escuchando &lt;a href=&quot;http://www.youtube.com/watch?v=MuF76YmzNhs&amp;amp;feature=share&quot;&gt;esto&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decaer.&lt;br /&gt;
&lt;br /&gt;
Dejar que la vida lleve hacia abajo.&lt;br /&gt;
&lt;br /&gt;
Mojar la medialuna en el café.&lt;br /&gt;
&lt;br /&gt;
Prometerse a uno mismo que no llegará tan abajo.&lt;br /&gt;
&lt;br /&gt;
Mirar el mar.&lt;br /&gt;
&lt;br /&gt;
Esconderse en la bruma de la mañana.&lt;br /&gt;
&lt;br /&gt;
Llorar por lo que paso.&lt;br /&gt;
&lt;br /&gt;
Reirse de uno mismo.&lt;br /&gt;
&lt;br /&gt;
Lo mas que se pueda.&lt;br /&gt;
&lt;br /&gt;
Sonreir como si no importara el vuelo de los mirlos.&lt;br /&gt;
&lt;br /&gt;
Prometerle a la mañana.&lt;br /&gt;
&lt;br /&gt;
Que ella.&lt;br /&gt;
&lt;br /&gt;
Será, por adelantado,&lt;br /&gt;
&lt;br /&gt;
la dueña de la mañana.&lt;br /&gt;
&lt;br /&gt;
Recordar los cuatro años.&lt;br /&gt;
&lt;br /&gt;
Por que allí,&lt;br /&gt;
&lt;br /&gt;
Y solo allí.&lt;br /&gt;
&lt;br /&gt;
Aprenderas a decaer,&lt;br /&gt;
&lt;br /&gt;
lentamente,&lt;br /&gt;
&lt;br /&gt;
como el cesio 137.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2011/10/decaer-como-cesio-137.html</link><author>noreply@blogger.com (Joac)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-455014781117265359</guid><pubDate>Fri, 30 Sep 2011 19:09:00 +0000</pubDate><atom:updated>2011-09-30T16:09:03.455-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arte electronico</category><category domain="http://www.blogger.com/atom/ns#">gcoop</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>Up things</title><description>Después de la charla de&lt;a href=&quot;http://www.canonical.org/%7Ekragen/&quot;&gt; Kragen Javier Sitaker&lt;/a&gt; en &lt;a href=&quot;http://ar.pycon.org/2011&quot;&gt;Pyconar 2011&lt;/a&gt; me puse a trabajar en algunas obras de arte electrónico. &lt;br /&gt;
&lt;br /&gt;
Así nació &lt;a href=&quot;https://github.com/joac/Up_Things&quot;&gt;Up things&lt;/a&gt; (no pregunten el porque del nombre ), un repositorio en github&amp;nbsp; donde voy poniendo las cosas que se me ocurren.&lt;br /&gt;
&lt;br /&gt;
El primer proyecto es el lanzador de partículas. Les dejo unos screenshots:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNrtG87aT6D0ndH2ID-Kv8iaLw3YiFlTWQ4StyqWcZMNaA4Goawl7sewK_ncrffvZNeYFmsODEieUxf_xYqzciLzXKTUcQInUFNjpR1QqB6SflrEASctt9pxaCThyThWRzwIIYQjUTHgBk/s1600/2011-09-30-160732_1600x900_scrot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNrtG87aT6D0ndH2ID-Kv8iaLw3YiFlTWQ4StyqWcZMNaA4Goawl7sewK_ncrffvZNeYFmsODEieUxf_xYqzciLzXKTUcQInUFNjpR1QqB6SflrEASctt9pxaCThyThWRzwIIYQjUTHgBk/s640/2011-09-30-160732_1600x900_scrot.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAh15oMlBUrPAcFyoUWON4r61_uJ244GI95bi1ZwgMWxIRFgw286PtWhzf-5ZnP9f-NLMX1oJD_DVYge3w3u3WU9gwNPA9QOJqkocT3kbSIvKAreW4tgoQMRrpcqQn-OoqrgHr-I1wIdbl/s1600/2011-09-30-160750_1600x900_scrot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAh15oMlBUrPAcFyoUWON4r61_uJ244GI95bi1ZwgMWxIRFgw286PtWhzf-5ZnP9f-NLMX1oJD_DVYge3w3u3WU9gwNPA9QOJqkocT3kbSIvKAreW4tgoQMRrpcqQn-OoqrgHr-I1wIdbl/s640/2011-09-30-160750_1600x900_scrot.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfcr8oqMtmJ1NOITcm88IH_mjlD2KzJNzZ4eiql0VGxUK5m4d8Sk3-W80cLoCDMgiNG4LYkTuxcurQGLIGYtwACtFFd_UoIwT4PKghPeao9nDzJlZTlpKU5c-7f9qmuRP_To8qybchWb7N/s1600/2011-09-30-160815_1600x900_scrot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfcr8oqMtmJ1NOITcm88IH_mjlD2KzJNzZ4eiql0VGxUK5m4d8Sk3-W80cLoCDMgiNG4LYkTuxcurQGLIGYtwACtFFd_UoIwT4PKghPeao9nDzJlZTlpKU5c-7f9qmuRP_To8qybchWb7N/s640/2011-09-30-160815_1600x900_scrot.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2011/09/up-things.html</link><author>noreply@blogger.com (Joac)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNrtG87aT6D0ndH2ID-Kv8iaLw3YiFlTWQ4StyqWcZMNaA4Goawl7sewK_ncrffvZNeYFmsODEieUxf_xYqzciLzXKTUcQInUFNjpR1QqB6SflrEASctt9pxaCThyThWRzwIIYQjUTHgBk/s72-c/2011-09-30-160732_1600x900_scrot.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-6968847848873322256</guid><pubDate>Wed, 15 Jun 2011 10:57:00 +0000</pubDate><atom:updated>2011-06-15T07:57:15.358-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">escritos</category><title>Wish-list (Distancia)</title><description>Quisiera que todo fuese mas fácil.&lt;br /&gt;
&lt;br /&gt;
Quisiera despertarme con el sol pegándome en la cara. &lt;br /&gt;
&lt;br /&gt;
Quisiera poder encontrarme conmigo. Invitarme a tomar un café.  Preguntarme que es lo que me pasa. Contarme porque a veces tengo miedo. Y  que el miedo paraliza. Pedirme disculpas. Perdonarme.&lt;br /&gt;
&lt;br /&gt;
Quisiera estar parado en el filo de un cerro. Y sentir. La lejanía del valle. El viento desempolvando mis sueños. El aire rozando las alas de los cóndores.&lt;br /&gt;
&lt;br /&gt;
Quisiera tener menos lastre.&lt;br /&gt;
&lt;br /&gt;
Quisiera caminar sobre un suelo mas blando.&lt;br /&gt;
&lt;br /&gt;
Quisiera mostrar mi debilidad y creer en la fortaleza.&lt;br /&gt;
Quisiera que los dos aprendamos de la distancia.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2011/06/wish-list-distancia.html</link><author>noreply@blogger.com (Joac)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-2212297622820322190</guid><pubDate>Wed, 18 May 2011 11:54:00 +0000</pubDate><atom:updated>2011-05-18T08:54:36.609-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">escritos</category><title>Atrapado en /dev/null</title><description>Me estoy dando cuenta, soy un terrible procastinador. No se si sera porque pretendo abarcar todo, que mi ambición de conocimientos es intensa, pero no se prolonga demasiado en el tiempo.&lt;br /&gt;
&lt;br /&gt;
Ya busque en Google...&lt;br /&gt;
&lt;br /&gt;
Ya leí (como cruel motivo de dispersión) cientos de articulos de como Internet cambia nuestras vidas, nos roba la capacidad de conectración. Probé de usar pomodoros, GTD y cuanta metodologia de &quot;reducción de las distracciones&quot; encontré por ahi. Pero, como tantas otras cosas en mi vida, duraron solo un ratito.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pero lo mas grave es que...&lt;br /&gt;
&lt;br /&gt;
No puedo con la facultad.&lt;br /&gt;
&lt;br /&gt;
Mi historial universitario no diverge mucho de lo que me sucede en otros ambitos de mi vida.&lt;br /&gt;
&lt;br /&gt;
Cuando me vine para Capital en 2007, mi objetivo era estudiar, tratando de bancarme por mi cuenta(unica opción), pero la vida me llevó por otros caminos:&lt;br /&gt;
mudanzas, cambios de trabajo, vida en pareja, cambios de carrera ....&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aquí estoy ahora, des(orientado, motivado, animado). Me gusta la carrera que estoy estudiando (Ciencias de la Computación en la UBA). Pero no puedo avanzar. No es que sea un retardado, es que no puedo conectar con mi parte que&lt;br /&gt;
quiere estudiar y recibirse.&lt;br /&gt;
&lt;br /&gt;
Ni comentar que el cuatrimestre pasado curse algebra y le puse todas las pilas a la teorica, me lei cuanto libro del tema encontre... pero hice menos del 10% de las practicas. Hoy la estoy recursando totalmente frustrado&lt;br /&gt;
&lt;br /&gt;
¿Como salgo de este ciclo vicioso?&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2011/05/atrapado-en-devnull.html</link><author>noreply@blogger.com (Joac)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-5902858627866451275</guid><pubDate>Sun, 03 Oct 2010 23:12:00 +0000</pubDate><atom:updated>2010-10-03T20:12:41.729-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gcoop</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>Puertos Serie Virtuales en Gnu/Linux</title><description>Hoy estaba preparando mi charla para la PyCon2010 y me vi con la  necesidad de crear puertos serie virtuales, para unos ejemplos que  quiero dar...&lt;br /&gt;
&lt;br /&gt;
La solución fue utilizar socat:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&quot;Socat&amp;nbsp; is a command line based utility that establishes two bidirectional byte streams and transfers data between them. Because the streams can be constructed from&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a large set of different types of data sinks and sources (see address types), and because lots of address options may be applied to the streams, socat can be&amp;nbsp; used&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for many different purposes.&quot;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
La linea en cuestión:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;joac@pepino ~ $ socat PTY,link=vserial1 PTY,link=vserial2&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Despues, desde pyserial, por ejemplo nos conectamos con:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;import serial&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;ser = serial.Serial(&quot;/home/joac/vserial1&quot;)&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2010/10/puertos-serie-virtuales-en-gnulinux.html</link><author>noreply@blogger.com (Joac)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-1424850715206580691</guid><pubDate>Thu, 23 Sep 2010 11:45:00 +0000</pubDate><atom:updated>2010-09-23T08:45:19.419-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gcoop</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><title>Grupos vs Individuos</title><description>&lt;!-- -*- mode: rst -*- --&gt;&lt;br /&gt;
&lt;p&gt;Ahora que empezó la primavera, y el sol pega directo en la ventana de mi pieza, ayudándome notablemente a despertar, voy a tratar de resucitar mi blog.&lt;/p&gt;&lt;div class=&quot;section&quot; id=&quot;salvando-proyectos&quot;&gt;&lt;h1&gt;Grupos vs Individuos&lt;/h1&gt;&lt;p&gt;Me gusta programar, me gustan los desafíos, y me gusta aprender cosas nuevas. Tengo una especie de lema que dice &lt;em&gt;&amp;quot;Si lo hizo un ser humano entonces puedo entender como esta  echo&amp;quot;&lt;/em&gt;, quizás demasiado abarcativo (notar que dije &lt;em&gt;puedo entender&lt;/em&gt;). Esto es un arma de doble filo, por un lado, porque aprendo cosas nuevas, pero por el otro, desvaloriza los conocimientos de los demás.&lt;/p&gt;&lt;p&gt;Desde que trabajo en gcoop (&lt;em&gt;ver posts anteriores&lt;/em&gt;) no trabajo mas solo, trabajo con un grupo. Este es un fuerte cambio en el paradigma que traigo desde (el autor no logra recordar, quizás se remonte a estados fetales pre-parto), y me hizo reflexionar bastante sobre esta forma de encarar los problemas.&lt;/p&gt;&lt;p&gt;Cuando uno trabaja solo, la comunicación sobre las tareas es básicamente con uno mismo. Pero cuando uno trabaja en grupo, la comunicación es distinta (Pensaba hacer una analogía con una Red pero es muy &lt;em&gt;de ñoño&lt;/em&gt;), la toma de decisiones tiene mas posturas, y es ahí donde esta la verdadera riqueza.&lt;/p&gt;&lt;p&gt;Creo, que no existen dos personas que piensen parecido, todos tenemos nuestras propias estructuras mentales, y reaccionamos de distintas formas, a veces muy sutiles, frente a los estímulos externos. Es común que se encuentren diferentes formas de resolver un mismo problema.&lt;/p&gt;&lt;p&gt;Pero no todo es color de rosa...&lt;/p&gt;&lt;p&gt;Creo que uno de los principales problemas mundiales, después de los realmente importantes (como que miles de niños muren de hambre día a día), es la falta de comunicación.&lt;/p&gt;&lt;p&gt;Y en los grupos pequeños también pasa.&lt;/p&gt;&lt;p&gt;Quizás la cuestión importante es que desarrollar software no es solamente uno con las manos sobre el teclado, sino, que requiere de comunicación en su mayor parte.&lt;/p&gt;&lt;p&gt;(Este post va a ser editado, es un boceto)&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2010/09/grupos-vs-individuos.html</link><author>noreply@blogger.com (Joac)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-7172692726855469100</guid><pubDate>Sat, 17 Jul 2010 16:01:00 +0000</pubDate><atom:updated>2010-07-17T15:27:00.032-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gcoop</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>Jueguito v2</title><description>Ayer empecé el proyecto de un minijuego, clón de uno de blackberry.&lt;br /&gt;
Me di cuenta que sin colores era injugable, así que me puse a investigar como agregar colores a los prints de python, y me encontré con [1] en Stack Overflow, que explica como hacerlo.&lt;br /&gt;
&lt;br /&gt;
Es muy fácil, con la salvedad que yo aproveche y cambié el color de fondo, en lugar del color del texto.&lt;br /&gt;
&lt;br /&gt;
Ahora es mas cómodo de jugar. &lt;br /&gt;
&lt;br /&gt;
La ultima versión (Provisoria) la encuentran en [2] &lt;br /&gt;
&lt;br /&gt;
[1] &lt;a href=&quot;http://stackoverflow.com/questions/287871/print-in-terminal-with-colors-using-python&quot;&gt;http://stackoverflow.com/questions/287871/print-in-terminal-with-colors-using-python&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
[2]&lt;a href=&quot;http://github.com/joac/joac-python/blob/master/minigame/minigame.py&quot;&gt; http://github.com/joac/joac-python/blob/master/minigame/minigame.py&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
Dejo unas capturas que hice:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOCLQ2TcdYRgtmmWGFCLZRLXjjQXWgc-0lnEG6_35mbDclgitQIstrfM9UyQkast-SLpk37kV3aMyeE0Em3C2RaGEOUBqldpLWu6sWJiUIJ_aCKVPojeii0MDkpSdqToxHxfqpXp0LpvV4/s1600/captura1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;317&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOCLQ2TcdYRgtmmWGFCLZRLXjjQXWgc-0lnEG6_35mbDclgitQIstrfM9UyQkast-SLpk37kV3aMyeE0Em3C2RaGEOUBqldpLWu6sWJiUIJ_aCKVPojeii0MDkpSdqToxHxfqpXp0LpvV4/s320/captura1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;i&gt;El inicio del juego&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrgKmPE7PbCREqvF9i4OilNMr51ata2r-9YwX57_1gssbfOBfELSRb9KwaVfl8AKW2WCl0USlspxWVLn25YMg9QhACjmDWKchcAKWdl8ELSCa9eNQS1VX9MEpMA7kzuz8c7VihDZpmfeby/s1600/captura2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrgKmPE7PbCREqvF9i4OilNMr51ata2r-9YwX57_1gssbfOBfELSRb9KwaVfl8AKW2WCl0USlspxWVLn25YMg9QhACjmDWKchcAKWdl8ELSCa9eNQS1VX9MEpMA7kzuz8c7VihDZpmfeby/s320/captura2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;Un par de jugadas despues&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEc0Yd_1Wbb6m0yuMCQXpYqMre3GXCnNYXK31I3_5NQ0VyTO7sPB-nypzguTQiXR11btE4Q9vraR72KAFm6qvfLFmUDC7L9XIhJBq2-kl8jJwGLU_UIsDndds8_RDc1s9SE6CbTaOynvMe/s1600/captura3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEc0Yd_1Wbb6m0yuMCQXpYqMre3GXCnNYXK31I3_5NQ0VyTO7sPB-nypzguTQiXR11btE4Q9vraR72KAFm6qvfLFmUDC7L9XIhJBq2-kl8jJwGLU_UIsDndds8_RDc1s9SE6CbTaOynvMe/s320/captura3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;Ganamos!&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Zk3HJ7w40FEOgZJfU1akKSy1dq8LMKv3X2Csvt4cCizvbB6TuYebt-6LMiKJbh_9u3cyaZ5PPRQjz6SJk0lrMeqEzzs0K-W7lCWlG6ayxmDEwjHXzQjqdLYqqCHGHhzNo7Zo33N07VC8/s1600/captura4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Zk3HJ7w40FEOgZJfU1akKSy1dq8LMKv3X2Csvt4cCizvbB6TuYebt-6LMiKJbh_9u3cyaZ5PPRQjz6SJk0lrMeqEzzs0K-W7lCWlG6ayxmDEwjHXzQjqdLYqqCHGHhzNo7Zo33N07VC8/s320/captura4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;Si no alcanzan los movimientos... Nos espera la derrota&lt;/i&gt;&lt;/div&gt;&lt;a href=&quot;http://github.com/joac/joac-python/blob/master/minigame.py&quot;&gt; &lt;/a&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2010/07/jueguito-v2.html</link><author>noreply@blogger.com (Joac)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOCLQ2TcdYRgtmmWGFCLZRLXjjQXWgc-0lnEG6_35mbDclgitQIstrfM9UyQkast-SLpk37kV3aMyeE0Em3C2RaGEOUBqldpLWu6sWJiUIJ_aCKVPojeii0MDkpSdqToxHxfqpXp0LpvV4/s72-c/captura1.png" height="72" width="72"/><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-78659823185813234</guid><pubDate>Sat, 17 Jul 2010 01:12:00 +0000</pubDate><atom:updated>2010-07-17T13:04:41.162-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gcoop</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>Jueguito</title><description>El otro día, me prestaron un blackberry que tenia un jueguito que me gusto, asi que hice una versión, para la consola, del juego, he aquí el código:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;random&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;os&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Square&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot;This is the abstraction of one Square&quot;&quot;&quot;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;root&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rep&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Screen&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot;The Screen Array of the game&quot;&quot;&quot;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tokens&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x_size&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x_size&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y_size&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y_size&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tokens&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tokens&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;childs&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;squares&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;populate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;childs&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;squares&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;childs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rep&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;#&#39;&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;get_near_to&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;vecinos&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;vecinos&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get_square&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;vecinos&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get_square&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;vecinos&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get_square&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;vecinos&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get_square&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
        
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vecino&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;vecino&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;vecinos&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ow&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;vecino&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;childs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)]&lt;/span&gt;


    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;get_square&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;squares&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;populate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;xrange&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
            &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;squares&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;random_square&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;xrange&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)])&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;random_square&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        
        &lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;random&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;choice&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tokens&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;square&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Square&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;square&lt;/span&gt;
    
    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;check_arround&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot;We check the attrib of the near squares&quot;&quot;&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;vecinos&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get_near_to&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;vecinos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;vecino&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;vecinos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vecino&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
                    &lt;span class=&quot;n&quot;&gt;vecino&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rep&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;#&#39;&lt;/span&gt;
                    &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;childs&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vecino&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;__repr__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;&#39;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;row&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;squares&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; &#39;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rep&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;row&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;
    
    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;childs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
            &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;check_arround&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;child&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
            

&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;__name__&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;__main__&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;screen&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Screen&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;1&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;2&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;3&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;4&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&#39;5&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;screen&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;screen&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;screen&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;childs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;attrib&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;#dirty Hack&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;limit&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;18&lt;/span&gt; 
    &lt;span class=&quot;n&quot;&gt;win&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;xrange&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;limit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;_ &#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;screen&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;system&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;clear&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;screen&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%4d&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; moves of &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%4d&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;limit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;screen&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;childs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;screen&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x_size&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;screen&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;win&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;win&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;You Win&quot;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;You loose&quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2010/07/jueguito.html</link><author>noreply@blogger.com (Joac)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-6320926367644507806</guid><pubDate>Sat, 17 Apr 2010 13:35:00 +0000</pubDate><atom:updated>2012-01-24T17:28:44.342-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">escritos</category><title>Volando por la Mañana...</title><description>Mi vuelo sale a las 7:55, estoy en aeroparque en este momento. La verdad que el año pasado me diverti mucho riendome de mi pobre cuñada que perdió el micro en retiro, pero a mi, esta vez me paso algo mucho peor, pero por suerte sali bien parado (aunque un poco despeinado)...&lt;br /&gt;
&lt;br /&gt;
¡¡¡¡Me quede dormido!!!!!!!!!&lt;br /&gt;
&lt;br /&gt;
Si señor, si señora, a las 5:50 me pasaba a buscar un taxi, que reserve ayer a las 12 de la noche.&lt;br /&gt;
Mientras estaba tranquilo, soñando un sueño hiperrealista, breeeeeep, la chicharra del portero tuneado de casa me quito el sueño. En dos segundos, pense que era algun borracho confundido, que venia a buscar a algun amigo y le habia pifiado al departamento.....&lt;br /&gt;
&lt;br /&gt;
Pero no.&lt;br /&gt;
&lt;br /&gt;
Era el taxi.&lt;br /&gt;
Así, que en un tris, guarde la laptop, y las cosas que faltaban en la mochila y salí.&lt;br /&gt;
Llegué bien (excesivamente temprano, como a mi me gusta) y ahora estoy todo despeinado en el aeropuerto.&lt;br /&gt;
De esta experiencia aprendi dos cosas:&lt;br /&gt;
&lt;br /&gt;
- Si vas a salir en un vuelo matutino y vas a ir en taxi, reservalo de antemano en una empresa seria (En mi caso, Radiotaxi Del Plata), ya que esta precaución me salvo el vuelo.&lt;br /&gt;
- Dejar seteado mas de un reloj. En mi caso la falla fue que me olvide de&amp;nbsp;eliminar&amp;nbsp;la opcion de que no suene los&amp;nbsp;sábados.&lt;br /&gt;
- Por las dudas.... Bañate la noche anterior.... mas vale estar&amp;nbsp;excesivamente&amp;nbsp;limpio que tener que bancarte un dia entero todo mugroso.&lt;br /&gt;
&lt;br /&gt;
Como frutilla de la torta, justo anteayer estaba realizando un plan de reorganización de los metodos de&amp;nbsp;auto-encendido&amp;nbsp;(Lease, &quot;La forma en que uno se despierta&quot;). Me quede hasta las 2 de la mañana armando un crontab (Que no tenia idea de como se usaba) para que a la mañana me despierte arrancando el totem con una playlist. Si lo hubiese seteado para hoy, esto no pasaba....&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&amp;nbsp;Ahora estoy embolado en el aeropuerto, jugando con nmap contra la wifi paga... en 1 hora despego :P&lt;br /&gt;
--&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiy5lHRzQUfYVnxxRDgVzb5eq9lw9MfO5yCqfzcXscCd6Ica1XBNEFKUfWR45w9mRphDuvAlGm5Fx9Mb0uxnwFWYiHksVTzxw_HJ_VxAiwvtbc4zld_-M_2V3tg0jzchKHva8vpjXBTFFD/s1600/100_4419.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;475&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiy5lHRzQUfYVnxxRDgVzb5eq9lw9MfO5yCqfzcXscCd6Ica1XBNEFKUfWR45w9mRphDuvAlGm5Fx9Mb0uxnwFWYiHksVTzxw_HJ_VxAiwvtbc4zld_-M_2V3tg0jzchKHva8vpjXBTFFD/s640/100_4419.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;i&gt;El amanecer en el&amp;nbsp;Río&amp;nbsp;de la Plata&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;UPDATE: Estoy sano y salvo en Córdoba&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2010/04/volando-por-la-manana.html</link><author>noreply@blogger.com (Joac)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiy5lHRzQUfYVnxxRDgVzb5eq9lw9MfO5yCqfzcXscCd6Ica1XBNEFKUfWR45w9mRphDuvAlGm5Fx9Mb0uxnwFWYiHksVTzxw_HJ_VxAiwvtbc4zld_-M_2V3tg0jzchKHva8vpjXBTFFD/s72-c/100_4419.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-5738430747845384170</guid><pubDate>Wed, 31 Mar 2010 16:50:00 +0000</pubDate><atom:updated>2010-04-03T13:10:38.674-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">escritos</category><category domain="http://www.blogger.com/atom/ns#">joac</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><title>Buenas Nuevas</title><description>Hace rato que no posteo algo por acá, pero tengo buenas noticias, y las buenas noticias son para compartirlas.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Cambio de Trabajo!&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Un poco de background:&lt;br /&gt;
Hace 3 años (y un poco mas) que me viene a estudiar&amp;nbsp; (aunque no solo a estudiar) a Buenos Aires, desde ese momento vengo laburando en la &lt;a href=&quot;http://www.flowtec.com.ar/&quot;&gt;empresa de mi tío&lt;/a&gt;. Donde comenzé siendo un tablerista, y termine siendo proyectista eléctrico, programador de PLC, SysAdmin, Tablerista, Encargado de Postventa, Desarrollador de Scadas.... (y la lista sigue). Todo esto, amparado en la confianza de ser familia.&lt;br /&gt;
&lt;br /&gt;
Pero.... siempre hay un pero: No está tan bueno. Ser un empleado multifuncional, con muchas cosas diferentes que abarcar logró que mi estrés y mi panza crezca, que mi capacidad de resolver problemas específicos disminuya y algo muy importante:&lt;br /&gt;
La sensación de soledad, de no tener un par con el que discutir como encarar un proyecto, alguien con quien repartir las responsabilidades cuando la cosa no funciona y finalmente, alguien con quien aprender en conjunto.&lt;br /&gt;
&lt;br /&gt;
Ademas.... quería programar, Python de ser posible...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Empecé a mirar un poco la oferta laboral, pero el panorama era mas que deprimente (desde mi punto de vista): Muchas búsquedas de desarrolladores junior, con sueldos malos.&lt;br /&gt;
Yo, siendo un (proto)programador autodidacta, no tenia ningún papel, ninguna experiencia laboral en el desarrollo de sistemas, no tenia la cara para presentarme a un laburo mejor. &lt;br /&gt;
Mi forma de vida (la autosuficiencia en pareja) y el nivel de gastos (depto, gastos de facultad, alimentos, transporte) me hacia imposible pensar en entrar a una empresa donde me paguen 2,50$ la hora.&lt;br /&gt;
&lt;br /&gt;
Pero las cosas fueron cambiando: &lt;br /&gt;
&lt;br /&gt;
En marzo participe en el pycamp, un campamento en el que programadores de python de argentina, desde newbies como yo, hasta tipos con trayectoria internacional. Fue increíble: muchos geeks, mucha buena onda, mucha humildad.&lt;br /&gt;
Aprendí mucho, muchísimo, mas que en mucho tiempo. &lt;br /&gt;
Ahí mismo me di cuenta (nuevamente) que estaba cansado de trabajar tan solo y que realmente quería trabajar con gente así y que realmente mi codigo no apestaba (tanto...). &lt;br /&gt;
&lt;br /&gt;
En la reunión de &lt;a href=&quot;http://www.python.org.ar/&quot;&gt;PyAR&lt;/a&gt; (en el marco del PyCamp), Alecu planteo que existen un montón de programadores de Python, que no trabajan en Python, y que estaría bueno, revertir esa situación. &lt;br /&gt;
&lt;br /&gt;
De vuelta en casa decidá tirarme a la pileta: Mande un curriculum a &lt;a href=&quot;http://www.gcoop.com.ar/&quot;&gt;GCoop&lt;/a&gt;, una cooperativa de desarrollo de software libre, y... me eligieron!!!!, así que, fines de abril, estaré estrenando nuevo trabajo. &lt;br /&gt;
&lt;br /&gt;
La verdad que agradezco a la gente de la comunidad de Python Argentina, que confiaron en mi, como colaborador en los eventos que se organizaron y me ayudaron (sin darse cuenta) a dar este paso.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2010/03/buenas-nuevas.html</link><author>noreply@blogger.com (Joac)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-1638934717515144083</guid><pubDate>Thu, 11 Feb 2010 12:52:00 +0000</pubDate><atom:updated>2010-02-11T09:52:26.409-03:00</atom:updated><title>Recalculando</title><description>Haciendole un apt-get dist-upgrade a mi cerebro.&lt;br /&gt;
&lt;br /&gt;
Ultimamente estoy consumiendo demasiada información y produciendo poca. Ni bien logre cambiar la tendencia, escribo algo interesante.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2010/02/recalculando.html</link><author>noreply@blogger.com (Joac)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-9171317932342209412</guid><pubDate>Wed, 16 Dec 2009 17:51:00 +0000</pubDate><atom:updated>2009-12-16T18:17:06.047-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">diy</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">modbus</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><title>TSXCUSB485 en GNU/Linux!</title><description>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Arranque esta semana testeando un dispositivo &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;MODBUS&lt;/span&gt;, sobre un enlace &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;RS&lt;/span&gt;485. Para ello &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;decidi&lt;/span&gt; utilizar un lindo conversor &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;usb&lt;/span&gt; a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;RS&lt;/span&gt;485, de la firma &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;Schneider&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;Electrics&lt;/span&gt;: el &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;TSXCUSB&lt;/span&gt; 485.&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFHK3TGzMXdjR1f9Njjib-l3AeuHbv4jmcp_JR-gLAvI8L3o_yGQ1_TOdLiWoE-q2FfHpjJOtUmZ7XmvC579ln99i3IR9V-2Ax6uK9u98qeeJz2u9BYj8Lm3Lost-axRKhK0KV0Ez2a6KI/s1600-h/DSCN1880.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFHK3TGzMXdjR1f9Njjib-l3AeuHbv4jmcp_JR-gLAvI8L3o_yGQ1_TOdLiWoE-q2FfHpjJOtUmZ7XmvC579ln99i3IR9V-2Ax6uK9u98qeeJz2u9BYj8Lm3Lost-axRKhK0KV0Ez2a6KI/s320/DSCN1880.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5415894341265202050&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;El &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;aparatito&lt;/span&gt; en Cuestión&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;Probe&lt;/span&gt; en &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;Win&lt;/span&gt;, lo detecto como un puerto &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;com&lt;/span&gt;, usando un driver privativo. &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;Probe&lt;/span&gt; en GNU/Linux y.... nada... me mostraba el &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_13&quot;&gt;vendor&lt;/span&gt; id y el &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_14&quot;&gt;product&lt;/span&gt; id del dispositivo pero no me lo montaba como un &quot;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_15&quot;&gt;ttyUSBx&lt;/span&gt;&quot;.&lt;br /&gt;&lt;br /&gt;Las opciones: resignarse y usarlo bajo &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_16&quot;&gt;windows&lt;/span&gt;, o buscar, escribir, &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_17&quot;&gt;parchar&lt;/span&gt; lo que fuera necesario.&lt;br /&gt;&lt;br /&gt;Obviamente, &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_18&quot;&gt;elejí&lt;/span&gt; la opción 2, ya que si lo sacaba funcionando tenia resuelto un punto importante en materia de &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_19&quot;&gt;comunicaciones&lt;/span&gt; industriales, rubro al que me dedico.&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_20&quot;&gt;Empeze&lt;/span&gt; leyendo un poco de guias sobre como son los drivers &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_21&quot;&gt;usb&lt;/span&gt; en &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_22&quot;&gt;linux&lt;/span&gt;,  y &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_23&quot;&gt;googleando&lt;/span&gt; si alguien lo &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_24&quot;&gt;habia&lt;/span&gt; hecho andar, pero, se ve que a los que trabajan de esto usan solo &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_25&quot;&gt;windows&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;El primer paso para hacer ingeniería inversa, era ver el hardware que &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_26&quot;&gt;componia&lt;/span&gt; la placa:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSc7JHi-uz6dO7eZ4LkJXfBaQkFdPQbk30TsgJzMMob087iuoJ6UWQwTh-Dd5zQ4rzhyXZGwy_cl3id1UkTeNP2QJhByZ4leZ0MgY6M012Rwa6vasKZSjtqqC2RG0KDw8UHeZUm1AynohG/s1600-h/DSCN1878.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSc7JHi-uz6dO7eZ4LkJXfBaQkFdPQbk30TsgJzMMob087iuoJ6UWQwTh-Dd5zQ4rzhyXZGwy_cl3id1UkTeNP2QJhByZ4leZ0MgY6M012Rwa6vasKZSjtqqC2RG0KDw8UHeZUm1AynohG/s320/DSCN1878.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5415897097788552946&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Detalle de la Plaqueta&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;Ya, de un golpe de vista nos encontramos con el corazón de la conversión &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_27&quot;&gt;usb&lt;/span&gt;-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_28&quot;&gt;rs&lt;/span&gt;232, el &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_29&quot;&gt;ft&lt;/span&gt;232&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_30&quot;&gt;bl&lt;/span&gt;, un chip bastante &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_31&quot;&gt;estandar&lt;/span&gt;.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHJotTRbAsACmV6We0Ny1M6-F916c2sqlljzf_HP6tbP7P-v9NyD7qpzo7pc48dNpqHFW7oT0D9Gpimo9-rHDP9jVBGkx9kI7XmvYBehbVh7zeZNw9VDNja17UoAIvbhOxFlvs3YYbPi-G/s1600-h/DSCN1879.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHJotTRbAsACmV6We0Ny1M6-F916c2sqlljzf_HP6tbP7P-v9NyD7qpzo7pc48dNpqHFW7oT0D9Gpimo9-rHDP9jVBGkx9kI7XmvYBehbVh7zeZNw9VDNja17UoAIvbhOxFlvs3YYbPi-G/s320/DSCN1879.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5415898158052423826&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;El lugar mas &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_32&quot;&gt;ovio&lt;/span&gt; para encontrar información era la pagina del fabricante, y ¡Oh Sorpresa! estaba el driver para nuestro querido &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_33&quot;&gt;pinguÑu&lt;/span&gt;, incluso una guia para agregar &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_34&quot;&gt;vendor&lt;/span&gt; y &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_35&quot;&gt;product&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_36&quot;&gt;ids&lt;/span&gt; pero:&lt;br /&gt;La edición del driver, para que reconozca el dispositivo, en si, es bastante trivial, pero el problema es compilarlo: hay muchas versiones del driver y muy pocas de ellas son &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_37&quot;&gt;compilables&lt;/span&gt;, porque, según entiendo, el soporte de &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_38&quot;&gt;usb&lt;/span&gt; del kernel se fue modificando con cada versión.&lt;br /&gt;&lt;br /&gt;Finalmente, termine buceando en el &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_39&quot;&gt;git&lt;/span&gt; de www.kernel.org y encontré uno que compilo de maravillas.&lt;br /&gt;&lt;br /&gt;La verdad que me sorprende cuan poderoso es el software libre: en el sistema de la ventana, ante un problema así ¡estas fregado!&lt;br /&gt;En balance de tiempo tarde unas 3 horas en resolverlo, pero ya esta!!! cuando consiga &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_40&quot;&gt;comittear&lt;/span&gt; mi &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_41&quot;&gt;pach&lt;/span&gt; para el driver, en futuros &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_42&quot;&gt;kernels&lt;/span&gt;, el dispositivo va a tener soporte, ¡para mucha gente!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2009/12/tsxcusb485-en-gnulinux.html</link><author>noreply@blogger.com (Joac)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFHK3TGzMXdjR1f9Njjib-l3AeuHbv4jmcp_JR-gLAvI8L3o_yGQ1_TOdLiWoE-q2FfHpjJOtUmZ7XmvC579ln99i3IR9V-2Ax6uK9u98qeeJz2u9BYj8Lm3Lost-axRKhK0KV0Ez2a6KI/s72-c/DSCN1880.JPG" height="72" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-7401691819613153586</guid><pubDate>Tue, 01 Dec 2009 20:03:00 +0000</pubDate><atom:updated>2010-06-04T13:13:49.893-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gcoop</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>Mandando el contenido de un directorio como archivos adjuntos</title><description>Hoy necesitaba mandar un archivo dividido en 18 partes de 400kB, debido a las limitaciones del proveedor de correo de un colega cubano. La opción de hacerlo a mano es realmente engorrosa, asi que con la ayuda de la documentación de python me mande este script:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:python&quot;&gt;import smtplib
import os
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email import encoders
import getpass
directorio = &#39;Directorio de donde Sacamos los Archivos&#39;
asunto = &#39;Aca va el asunto&#39;
destinatarios = [&#39;complete aqui con sus destinatarios&#39;,]
sender = &#39;Aca va Nuestra Direccion&#39;
contenido = &#39;Texto que queremos que se lea en los mensajes&#39;
host = &#39;servidor SMTP que vamos a usar&#39;
login = &#39;nuestro usuario&#39;
#creamos el contenedor
listademails = []
numeroParte = 1
listadoArchivos = os.listdir(directorio)
listadoArchivos.sort()
for archivo in listadoArchivos:
    path = os.path.join(directorio, archivo)
    msg = MIMEMultipart()
    msg[&#39;Subject&#39;] = asunto + &#39; %d de %d&#39; % (numeroParte, len(listadoArchivos)))
    numeroParte += 1
    msg[&#39;From&#39;]= sender
    msg[&#39;To&#39;]=&#39;, &#39;.join(destinatarios)
    #msg.preamble = &#39;&#39;
    texto = MIMEText(contenido, &#39;plain&#39;)
    msg.attach(texto)
    #Adjuntamos el Archivo
    fp = open(path, &#39;rb&#39;)
    adjunto = MIMEBase(&#39;application&#39;, &#39;octet-stream&#39;)
    adjunto.set_payload(fp.read())
    fp.close()
    encoders.encode_base64(adjunto)
    adjunto.add_header(&#39;Content-Disposition&#39;, &#39;attachment&#39;, filename = archivo)
    msg.attach(adjunto)
    listademails.append(msg.as_string())

server = smtplib.SMTP(host)
server.login(login, getpass.getpass())
for mail in listademails:
    server.sendmail(sender, destinatarios, mail)
server.quit()
&lt;/pre&gt;Dejo en el lector las criticas pertinentes a esta &#39;Belleza&#39;(ironicmode =True) que sorprende por su extrema pythonicidad :P&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2009/12/mandando-el-contenido-de-un-directorio.html</link><author>noreply@blogger.com (Joac)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-1277548817320308482</guid><pubDate>Sat, 28 Nov 2009 20:54:00 +0000</pubDate><atom:updated>2010-01-25T15:13:14.549-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cafelug</category><category domain="http://www.blogger.com/atom/ns#">conferencias</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><title>Segundas Charlas Tecnicas Trimestrales - CafeLug</title><description>Hoy me levante temprano, decidí postergar los estudios de química (esto me saldrá caro a futuro) , y me fui al &lt;a href=&quot;http://www.ccgsm.gov.ar/areas/cultura/ccgsm/?menu_id=22400&quot;&gt;Centro Cultural San Martín&lt;/a&gt;, en Sarmiento y Paraná, a las segundas charlas técnicas trimestrales organizadas por&lt;a href=&quot;http://drupal.cafelug.org.ar/&quot;&gt; Cafelug&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Las charlas estaban divididas en dos grandes grupos: Desarrollo y Administración.&lt;br /&gt;
Elejí arrancar con las charlas de administración:&lt;br /&gt;
&lt;span style=&quot;font-size: 100%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 100%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;La evolución del shell. Por Nubis G Bruno&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;Nos presento a la herramienta con la que él esta laburando ahora, llamada &lt;a href=&quot;http://rush.heroku.com/&quot;&gt;RUSH&lt;/a&gt; (RUby SHell??). Segun lo que yo entendí, es un shell interactivo de ruby que permite modelizar un host remoto en un objeto de ruby,  con métodos ( como todo objeto...bueno, o casi todos) para realizar las tareas necesarias: copiar archivos, buscar usando expresiones regulares, levantar aplicaciones y daemons, y muchas cosas mas.&lt;br /&gt;
La aplicación se conecta, usando ssh, a un http server en la máquina remota, desde se ejecutan nativamente los comandos.&lt;br /&gt;
Esto permite tener scripts de administración bastante sencillos de comprender, y de escalar, para ejecutar tareas en múltiples hosts. Esto es muy piola para aplicaciones que estén en la nube, donde los hosts suelen ser dedicados y tenés que estar moviéndote de uno a otro todo el tiempo.&lt;br /&gt;
Hasta acá todo muy lindo, pero soy un tipo que en este momento no tiene ganas de aprender Ruby, de lo que surge una pregunta básica: ¿existe algo así para Python?. La respuesta es afirmativa y se llama &lt;a href=&quot;http://docs.fabfile.org/0.9.0/&quot;&gt;Fabric&lt;/a&gt;, pero no es exactamente lo mismo.&lt;br /&gt;
Como propuesta a futuro, esta una implementación de objetos Host para python, integrada en IPython (Interesados en organizar un sprint bienvenidos!!).&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Balance de la Charla:&lt;/span&gt; Muy Buena&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Lo Mejor: &lt;/span&gt;Nubis la tiene muy clara, y es,  en mi opinión todo un code-rockstar!&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Lo Malo:&lt;/span&gt; La laptop en un momento no quiso saber mas nada con el proyector y nos quedamos sin ver todos los slides y ejemplos.&lt;br /&gt;
&lt;br /&gt;
La siguiente charla fue:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Como Implementar Cloud Computing con Open Source, sobre&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt; Open Solaris.&lt;br /&gt;
Por Gabriel Benselum y Pablo Oddera.&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;En esta charla presentaron un poco a Open Solaris (Instale uno en una VM con VirtualBox mientras daban las  charlas) y a todas las herramientas y aplicaciónes que trae para implementar soluciones de cloud computing. Se armo un pequeño debate sobre discos SSD y sus ventajas y estado actual de desarrollo.&lt;br /&gt;
Comentaron todas las formas de implementar VM y sus ventajas entre las que destaco: flexibilidad, sea tanto para moverlas y replicarlas &quot;on the fly&quot;,  ahorro de espacio y ahorro energetico.&lt;br /&gt;
&lt;br /&gt;
La segunda mitad de la charla fue sobre ZFS, el file system que implementa nativamente open solaris, que tiene varias ventajas: Journaling, snapshots, diferentes tipos de raids &quot;Virtualizados&quot; y muchas cosas piolas (Piolas para ambientes en los que no trabajo, con volumenes de datos bastante altos).&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Balance de la Charla:&lt;/span&gt; Muy Buena.&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Lo Bueno:&lt;/span&gt; Conoci un poco mas de open solaris y de su comunidad. El Tema de ZFS me parecio muy interesante&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Lo Malo&lt;/span&gt;: En algunos momentos la charla se fue por las ramas, y terminaron medio ajustados de tiempo.&lt;br /&gt;
-------------------------------------------------------&lt;br /&gt;
Despues vino el break y me fui a Guerrin ingerir una pizza al paso&lt;br /&gt;
&lt;br /&gt;
Despues del Almuerzo:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;font-weight: bold; text-align: center;&quot;&gt;Video Streaming en grandes cantidades por Leito Monk&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Esta charla fue muy motivadora, y me dejo bastante &quot;caliente&quot; por asi decirlo.&lt;br /&gt;
Leito junto con otro chico (averiguar nombre) contaron como resolvieron la infraestructura para proveer streaming de las charlas para wikimania 2009.&lt;br /&gt;
Utilizaron aplicaciones libres, contenedores y codecs libres, para proveer de un streaming http.&lt;br /&gt;
Fue muy ingeniosa la infraestructura y desmuestra como el software libre permite, gracias a la buena documentacion y el KISS crear cosas muy grossas con componentes sencillos.&lt;br /&gt;
Gastaron algo asi como 40u$s para contratar Amazon Elastic Cloud, que se encargo de balancear la carga, 500u$s para las computadoras de cada sala y las horas de los camarografos.&lt;br /&gt;
&lt;br /&gt;
Fue una lastima que la PyCon 2009 fue casi pegada a Wikimania, y no se pudo adoptar lo mismo para nuestras charlas.&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Balance de la Charla: &lt;/span&gt;exelente&lt;/span&gt;&lt;br /&gt;
Lo Bueno:&lt;span style=&quot;font-weight: normal;&quot;&gt; Con el software libre se pueden hacer cosas muy buenas!&lt;/span&gt;&lt;br /&gt;
Lo Malo&lt;span style=&quot;font-weight: normal;&quot;&gt;: Realmente nada&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;A pedido del publico: la documentación esta en&lt;a href=&quot;http://trac.usla.org.ar/proyectos/wikimania-video&quot;&gt; http://trac.usla.org.ar/proyectos/wikimania-video&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;
El Cierre fue con:&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;/span&gt; Introducción a Selenium (Un enanito que trabaja por vos) por Leito Monk&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Esta charla fue del track de desarrollo y fue una somera introduccion a Selenium, una herramienta para crear test funcionales para aplicaciones web usando java script.&lt;br /&gt;
Yo no me dedico directamente al rubro web pero estub buena para conocer un poco por si las moscas.&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Balance de la Charla&lt;/span&gt;: Buena&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Lo Bueno&lt;/span&gt;: Me di un pantallazo de lo que es el testeo web.&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Lo Malo&lt;/span&gt;: La VM que corria la app de Leito no levantaba la conexión de red y se perdio un buen rato hasta que la cosa salio andando.&lt;/span&gt;&lt;br /&gt;
---------------------------------------------&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Balance General:&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Las Charlas estuvieron buenas, esperaba ver mas caras conocidas, pero a esta altura del Año todos estamos un poco hasta las manos :P.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: normal;&quot;&gt;Cada día aprecio mas el esfuerzo de toda la comunidad del SL para que estemos todos mas y mejor informados&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2009/11/segundas-charlas-tecnicas-trimestrales.html</link><author>noreply@blogger.com (Joac)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5309403273623549307.post-4075829478244971009</guid><pubDate>Wed, 07 Oct 2009 16:39:00 +0000</pubDate><atom:updated>2009-10-07T14:20:28.517-03:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cooling</category><category domain="http://www.blogger.com/atom/ns#">diy</category><category domain="http://www.blogger.com/atom/ns#">laptop</category><title>Enfriando el Infierno (o Cooler DIY)</title><description>En el trabajo tengo una laptop &lt;a href=&quot;http://www.notebookreview.com/price/product.asp?brandID=15&amp;amp;productFamilyID=681&quot;&gt;Toshiba L20-SP119&lt;/a&gt;, con un Celeron de 1.5GHz, medio viejita, que uso para laburar en plantas, programar plc y correr el Autocad (y alguna que otra aplicación para windows).&lt;br /&gt;Funciona bastante bien, pero tiene un problema:&lt;br /&gt;¡¡Se calienta como el mismísimo &lt;a href=&quot;http://www.tiraecol.net/modules/comic/comic.php?content_id=177&amp;amp;mode=flat&amp;amp;order=0&quot;&gt;infierno&lt;/a&gt;!!&lt;br /&gt;&lt;br /&gt;Si bien no te quemas al tocarla, es bastante incomodo, sobre todo cuando tengo que tipear.&lt;br /&gt;&lt;br /&gt;Así que decidí poner manos a la obra y construir el &quot;Definitive Cooling System&quot;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;¡Charaaan!&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEB_xXJOXiGCeH8e0YtbQMoV5Ng-1v-ogzKZrOik11I4XBiX-yDLGjjo_NKSDdXFJBtmeiEhdH3HuqEsQqS-Ko1gQLecsktCRLnirqNU8s9xSd0-34HbabxC0NgHHj_b6kPzMYZKRyozHR/s1600-h/2009-10-07-133538.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 256px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEB_xXJOXiGCeH8e0YtbQMoV5Ng-1v-ogzKZrOik11I4XBiX-yDLGjjo_NKSDdXFJBtmeiEhdH3HuqEsQqS-Ko1gQLecsktCRLnirqNU8s9xSd0-34HbabxC0NgHHj_b6kPzMYZKRyozHR/s320/2009-10-07-133538.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5389902256711198594&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;El monstruo sin la protección mecánica&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Materiales Utilizados:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ventilador de 80mm de una fuente ATX quemada&lt;/li&gt;&lt;li&gt;Caja de &lt;a href=&quot;http://www.blocky.com.ar/&quot;&gt;Ladrillitos Blocky&lt;/a&gt; que me regalaron para navidad de &lt;a href=&quot;http://www.officenet.com.ar/&quot;&gt;Officenet&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Cinta para tapar los agujeros&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Un Transformador de 12 voltios de corriente continua (tecnicamente: un transformador con rectificador...)&lt;/li&gt;&lt;li&gt;Un jefe permisivo que nos deje poner tamaña obra de arte en nuestro Box&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLyxjvnjqsud029cpQfL2MpV1AuEc4jEAa4vaYwnPFq6MaMmirw3VTBab4tOObNIgSIWHRwa4zqdDY9Dokh3CtFtMuGqmZuKaukLDP2omg5uhv06-F7ITQosmbQOABMb7kLbkCdiSocN7F/s1600-h/2009-10-07-133508.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 256px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLyxjvnjqsud029cpQfL2MpV1AuEc4jEAa4vaYwnPFq6MaMmirw3VTBab4tOObNIgSIWHRwa4zqdDY9Dokh3CtFtMuGqmZuKaukLDP2omg5uhv06-F7ITQosmbQOABMb7kLbkCdiSocN7F/s320/2009-10-07-133508.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5389902252049982082&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;El Monstruo con la proteción &quot;Anti Dedos Curiosos&quot;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7bOnPiVb4R5w2kgdamPJs_8LYg5x4DCDdgyiw-cRRGIUsz6MU5YZpriEBOVYp1XXXc5XK_4ZgQy1_SRRlYxxocWNTYbmDpMJbV3z8Tcxo-jaCzizBtvyr5_YS6IpM9gaaESUZgv-pKxZe/s1600-h/2009-10-07-133443.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 256px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7bOnPiVb4R5w2kgdamPJs_8LYg5x4DCDdgyiw-cRRGIUsz6MU5YZpriEBOVYp1XXXc5XK_4ZgQy1_SRRlYxxocWNTYbmDpMJbV3z8Tcxo-jaCzizBtvyr5_YS6IpM9gaaESUZgv-pKxZe/s320/2009-10-07-133443.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5389902243880614914&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;El conjunto en toda su magnitud&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvJUwV5Fo1ups8ydsvwfGXTJD5CWzqlfZBC63xBnJmmDvGTwbHNuFwOfY7RM1YhSZ4OClsscQkZLXfZwvZRNvYMjQM1W3kXhBHRRuSuj8and1QUJZziED71bz3P7ZQ6mY57enQJ521zggS/s1600-h/2009-10-07-140318.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 256px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvJUwV5Fo1ups8ydsvwfGXTJD5CWzqlfZBC63xBnJmmDvGTwbHNuFwOfY7RM1YhSZ4OClsscQkZLXfZwvZRNvYMjQM1W3kXhBHRRuSuj8and1QUJZziED71bz3P7ZQ6mY57enQJ521zggS/s320/2009-10-07-140318.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5389905178774249730&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Detalle del montaje del  Ventilador, y la cinta (en este caso de papel) que tapa los agujeros&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Gracias al nuevo ventilador, la máquina redujo su temperatura en un 40%  (aproximado se queda corto)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/ar/&quot;&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</description><link>http://blog.joac.com.ar/2009/10/enfriando-el-infierno-o-cooler-diy.html</link><author>noreply@blogger.com (Joac)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEB_xXJOXiGCeH8e0YtbQMoV5Ng-1v-ogzKZrOik11I4XBiX-yDLGjjo_NKSDdXFJBtmeiEhdH3HuqEsQqS-Ko1gQLecsktCRLnirqNU8s9xSd0-34HbabxC0NgHHj_b6kPzMYZKRyozHR/s72-c/2009-10-07-133538.jpg" height="72" width="72"/><thr:total>0</thr:total></item></channel></rss>