<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title><![CDATA[MathiasSM]]></title>
    <subtitle><![CDATA[Software Development Engineer]]></subtitle>
    <link href="https://mathiassm.dev/atom.xml" rel="self" />
    <link href="https://mathiassm.dev" />
    <id>https://mathiassm.dev/atom.xml</id>
    <author>
        <name><![CDATA[Mathias San Miguel]]></name>
    </author>
    <updated>2020-08-17T00:00:00Z</updated>
<entry>
    <title><![CDATA[Una Puerta]]></title>
    <link href="https://mathiassm.dev/escritos/una-puerta" />
    <id>https://mathiassm.dev/escritos/una-puerta</id>
    <published>2020-08-09T00:00:00Z</published>
    <updated>2020-08-17T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>Gira y gira de vuelta. Unos cinco, diez o treinta grados y cinco, diez y cinco otra vez. Los números me los invento mientras intento olvidar que la puerta sigue inmóvil y el picaporte liso.</p>
<p>De vez en cuando subo la mirada, pero no alcanzo a ver la cima del muro, y a los lados no alcanzo a ver extremo alguno. Un paso atrás, otro adelante, siempre indeciso, siempre confundido. Una misma sombra sin forma cubre el pie de la puerta.</p>
<p>A veces veo un muro de piedra, una sobre otra, macizo, frío. Otras, veo madera finamente cortada, o ladrillos suburbanos. Al tocar solo siento y vuelvo a ver concreto, sin grietas ni escapes de luz. Luz que no me hace falta, pues no tengo techo sobre mí, solo un muro en frente, con mi sombra a sus pies. ¿Debería dar media vuelta y echar a andar?</p>
<p>Meses sentado o recorriendo el muro como si lo vigilara y protegiera, de nadie, pero solo esperando, soñando, queriendo que por magia o deseo la puerta se abra desde adentro. Yo no puedo abrirla. Y aún así… Lo intento de nuevo, persisto pero me quemo. Por un segundo el picaporte quema mis manos y entiendo.</p>
<p>Me disculpo fuerte, como intentando que un mensaje llegue a ningún lugar. Sin romper el silencio me vuelvo y corro lejos, hasta que ni la puerta ni el muro puedo ver. Me detengo. Escucho el viento, espero.</p>
<p>De vez en cuando, escucho murmullos, risas, sollozos, ¿lluvia?, vida, de algún lugar. De otro lugar. Sé perfectamente hacia dónde está la puerta. La he perdido de vista pero sigo ahí. Y escucho un chirrido y algo pesado moverse. Y lo tengo en frente. El muro de concreto sin pintar, y empiezo a andar.</p>
<p>La puerta no está.</p>
<p>Me echo al suelo a pensar. Y pensar. Y no entiendo, pero me levanto y pinto un arco, algo más ancho que yo, algo más alto que yo, con un marco y muchos detalles.</p>
<p>Sonrío ante la puerta de siempre, ante el muro de siempre, ante el picaporte que no me ayuda. Y lo intento otra vez. Sonrío. El picaporte no quema, no ruge. No está. Me derrumbo de rodillas, llorando, mientras veo por fin las sombras de la gente que pasa detrás, riendo, llorando, viviendo. Y lloro mientras entiendo mi sonrisa.</p>
<p>Lloro porque nunca sabré lo que esconde el muro. Lloro porque eso sencillamente no importa y porque sigo llorando. Lloro por las veces que dejé de mirar para volver a ver, para volver a pintar otra puerta donde no hay…</p>
<p>(Y me levanto y me seco la cara.)</p>
<p>(Y con un cepillo, poco a poco hago desaparecer a la puerta.)</p>
<p>(Y poco a poco me alejo del muro.)</p>
<p>(Y sonrío y sin voltear me alejo.)</p>
<p>Y aún sentado lloro… y me levanto.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[A Little Girl]]></title>
    <link href="https://mathiassm.dev/escritos/a-little-girl" />
    <id>https://mathiassm.dev/escritos/a-little-girl</id>
    <published>2019-05-07T00:00:00Z</published>
    <updated>2019-05-07T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>Say you meet a little girl with her eyes closed. You ask why she never opens them. She tries to explain that there’s no reason for her to do so.</p>
<p>“Why not? Are you blind?”, you ask her. She doesn’t know. “Don’t you wanna know?”.</p>
<p>“What for?”, she asks you back.</p>
<p>“To see, if you can.”</p>
<p>“What if I can’t?”</p>
<p>“Then you would’ve lost nothing.”</p>
<p>“I would then know that I cannot see,” she worries. “I don’t want that.”</p>
<p>“Do you prefer to never see, than to know if you can?”</p>
<p>“…than to know that I can’t”, she corrects you.</p>
<p>“You don’t know that”, you remind her.</p>
<p>“I’d like to keep it that way”, she’s decided.</p>
<p>“I understand I won’t be able to talk you into opening your eyes”, you wonder, as she agrees. “Even if I tell you there are beautiful things out here?”</p>
<p>“But I’m ‘out here’, too”</p>
<p>“You’re not”, you declare. “You don’t want to be.”</p>
<p>“I want to be.”</p>
<p>“Saying that is not enough, but now you know what to do.”</p>
<p>“… I won’t.”</p>
<p>“Then good bye; we won’t be able to speak again”, you say, turning your back.</p>
<p>“Why not?”</p>
<p>“Because you won’t.”</p>
<p>And you leave. And she stays. You won’t know if she decides to see one day. And if she does, she won’t know where you went, nor will she care, with the things she’ll see. You don’t know each other. You won’t, either.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[SIGPAE: Syllabus Management System]]></title>
    <link href="https://mathiassm.dev/blog/sigpae" />
    <id>https://mathiassm.dev/blog/sigpae</id>
    <published>2017-03-01T00:00:00Z</published>
    <updated>2018-10-14T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>As part of our <strong>Software Engineering</strong> course in the <em>Universidad Simón Bolívar</em>, eight (8) of us, as Team “Zenpy” (notice me), developed, during five (5) weeks, a nice tool for the university’s Academic Records Office.</p>
<h2 id="the-product-as-the-client-asked">The Product, as the client asked</h2>
<p>The tool allows the user to communicate with the Academic Records Office database, to check if <em>Syllabus</em> records are digitized for any given course, and check if it follows the newly standardized format. Since this format was new, and no other standardized format existed before, the tool is intended to allow an easy upload of a <em>Syllabus</em> document for a course; the program will then parse it as well as it can, to automatically fill in the needed course information. It then allows the user to check if the parsing was correct and edit it to fill in missing or unparsed text.</p>
<p>Technologies used were <strong>Django</strong> as backend framework, <strong>Bootstrap</strong> as frontend framework and <strong><a href="https://github.com/tesseract-ocr/">Tesseract OCR</a></strong> to be able to parse PDFs and scanned documents.</p>
<p>The tool has no name other than “SIGPAE” (Spanish: <em>Sistema de Gestión de Programas Analíticos de Estudios</em>) and we signed a confidentiality contract; sadly, I can’t show the source code here.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[Retyna: A Ruby interpreter for Retina]]></title>
    <link href="https://mathiassm.dev/blog/retyna" />
    <id>https://mathiassm.dev/blog/retyna</id>
    <published>2017-03-01T00:00:00Z</published>
    <updated>2018-10-14T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>Together with Carlos Serrada, a friend in the same Language Theory class (Official name: <em>Traductores e Interpretadores</em>), we made a Ruby interpreter for the “Retina” language, created by Prof. David Lilue. With it, you can programmatically draw simple bitmaps with a simple syntax.</p>
<p>We called the Ruby interpreter for Retina language <em><a href="https://retyna.github.io/">Retyna</a></em>, and made that website for its code and documentation.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[Apolo: Firefighters Support System]]></title>
    <link href="https://mathiassm.dev/blog/apolo-firefighters" />
    <id>https://mathiassm.dev/blog/apolo-firefighters</id>
    <published>2017-01-01T00:00:00Z</published>
    <updated>2018-10-14T00:00:00Z</updated>
    <content type="html"><![CDATA[<p><strong>Apolo</strong>, as we called it, is a software system made as part of our <strong>Information Systems</strong> course in the <em>Universidad Simón Bolívar</em>. I led a team of eight (8) in charge of the “Operations” module for the CBVUSB (Volunteer Fire Corps of the USB) Support System.</p>
<p>Our team had to communicate with the Client (part of the CBVUSB) and keep in sync with the “Human Resources” team, as both modules would be the initial pillars for the system. Both teams as one followed the RUP methodology, with all its formal documents, diagrams and the like, to provide a solid ground for long-term maintainability. At each third of the way, a small demo presentation was made to show invited people the development process.</p>
<h2 id="the-operations-module">The Operations Module</h2>
<p>It provides a simple interface for keeping a record of every activity regarding the main station. The corps follow strict schedules and protocols regarding the services they provide. The module is to keep a digital record of such procedures and be able to check, among other things, that they have been followed to the letter.</p>
<p>The whole module was to be planned (following RUP methodology), and a single submodule developed. The rest would be developed by other teams in the next courses’ iterations (Information Systems II, and III, for those who take it).</p>
<h3 id="records-book-shifts-and-services">Records Book, Shifts and Services</h3>
<p><strong>The Records Book submodule</strong> keeps a digitalized version of a real book the fire corps keep of everything that happens at the station: Who enters, who leaves, the inventory, the commissions formed and gone to serve. It follows a strict set of rules the system must take into account, besides regular consistency checks.</p>
<p><strong>The Shifts submodule</strong> provides an interface for managing service hours of each volunteer, the fixed shifts, the owed hours and the special shifts. Everything follows the corps protocols, as required.</p>
<p><strong>The Services submodule</strong> keeps records of every service the corps have attended: From wood fires to missing pets and injured people. They register the involved volunteers and their vehicles, the victims if any and their medical examination. They need all this information validated by the chief Firefighter at the service, and in paper, for legal purposes.</p>
<hr />
<p>The Firefighters Corps at USB are an incredibly prepared team of people (students, professors and everything in between). They follow strict rules and protocols to the letter, spend a long time preparing to be a volunteer there, and they keep on training and preparing in different skills, like first-aid and hazardous goods.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[IOI - Russia]]></title>
    <link href="https://mathiassm.dev/blog/ioi-russia" />
    <id>https://mathiassm.dev/blog/ioi-russia</id>
    <published>2016-07-01T00:00:00Z</published>
    <updated>2019-07-26T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>Out of lots of luck and training, I got to compete in the International Olympiad in Informatics. Now my goal is to train younger students to represent Venezuela in this great event!</p>
<h2 id="the-international-olympiad-in-informatics">The International Olympiad in Informatics</h2>
<p>The IOI is an old competition like the ACM-ICPC, but targeted at younger students, just as the IMO, IChO, and other famous science olympiads. Each country is allowed to send 4 students to compete; in our case, only two of us (Satoru and I) got to go, due to Venezuela’s economic problems.</p>
<h3 id="a-week-to-meet-the-world">A week to meet the world</h3>
<p>A great thing about the IOI is that we get to know other people from all around the world. The organizers also work hard so that we get to experience the local culture while sharing interesting conversations with people from other countries.</p>
<h3 id="two-weeks-of-fighting">Two weeks of fighting</h3>
<p>Unlike many other styles in Coding Competitions, the IOI divides its main event into two days, separated by a break day so that we don’t burn out. I think it might be to put more problems in there, to let participants know how they’re doing (and maybe plan the next day’s strategy), or just so that we can enjoy the trip to the fullest, not rushing all the time.</p>
<p>The format is the following: Two days, each with its own set of 3 problems, 5 hours each day to solve them. 3 problems for 5 hours seems like so little, but the IOI-style makes it so that each problem often requires 2 or more implementations to get all points (100 total), as multiple sets or requirements are presented.</p>
<p>Training for IOI-style competitions requires a deep understanding of algorithm complexity and lots of practice on different approaches for the same problems.</p>
<h3 id="the-results">The results</h3>
<p>They can be summed up in the following:</p>
<blockquote>
<p>I want to train on this, even if I can’t compete anymore, because it’s a really powerful skill. If I can train younger guys so that they become better at it and can win some medals for Venezuela, then I’d be extra-accomplished.</p>
</blockquote>
<h2 id="that-big-country-on-the-map-thats-not-china">That Big Country on the Map (That’s not China)</h2>
<h3 id="cold-weather-cold-people-neither">Cold weather, cold people? Neither</h3>
<p>It was so hot I thought it was the wrong country. Russia may be cold in winter, but all Hollywood movies make us think it’s a cold country, all year long. It’s not. Summer was hot. Really hot. It never rained while we were there, but it wasn’t dry weather, which wasn’t nice.</p>
<p>On the <em>cold</em> subject, about people, they all seemed the opposite of the cold bastards we are made to think of. They don’t speak with a rough accent, either; in fact, I was shocked to see how soft the Russian I heard was and how much I now like the language (I want to learn it someday).</p>
<h3 id="politics-and-the-state">Politics and the state</h3>
<p>Truth is, at least among young Russians, Putin is made fun of like any other regular president in the world. That doesn’t mean they hate him, nor that they love him; it just means they’re critical, and that no one is truly censored at a “just chatting” scale on political issues, like all movies seem to agree on.</p>
<p>As a fun fact, we were detained by the police while on an Uber taxi. The guy did not stop at a stop sign, and patrols were waiting for that to happen. The officer did not speak a thing of English (or Spanish, for that matter). But while it was annoying to stay there and be “processed” for not carrying passports (I did have mine), using Google Translate to communicate, we only got a traffic ticket at the end. The officer followed all the rules and protocols, which is something I don’t see a lot in my home country (or Hollywood movies).</p>
<h3 id="homelike-cuisine">Homelike cuisine</h3>
<p>I wasn’t expecting a magnificent cuisine. But I was expecting a rather different cuisine from the western world. It was actually pretty similar. It even had many dishes that are eaten here in Venezuela, like <em>“arroz con leche”</em>, which literally means “rice with milk” and is a common dessert here; it exists there as…. eh… some Russian name that does not mean literally “rice with milk”.</p>
<p>I also got to eat the salad known here as just “Russian salad”, which is, actually, from Russia (who would have known?) and was really good. The thing is, their food is not particularly tasty. It is all quite homelike, and as such, it was really nice. They don’t drink anything cold, though, and that’s something I couldn’t get used to.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[ACM-ICPC World Finals - Thailand]]></title>
    <link href="https://mathiassm.dev/blog/acm-icpc-world-finals-thailand" />
    <id>https://mathiassm.dev/blog/acm-icpc-world-finals-thailand</id>
    <published>2016-05-01T00:00:00Z</published>
    <updated>2018-09-21T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>After less than a year training for the ICPC competitions, Rubmary Rojas, Augusto Hidalgo and I, as team RAM (R.A.M. … y‘see?), classified for the ICPC World Finals in Thailand!</p>
<h2 id="local-and-regional-contests">Local and Regional Contests</h2>
<p>Venezuela has few universities interested in Competitive Programming (there are not that many with CS studies, either), so there’s no National Contest, but rather each university holds its own. In our case, USB, UCV, and UCAB joined together for a local contest.</p>
<p>We came in third, with “Conejitos Peligrositos” (“Dangerous little bunnies”) leading in the USB with 8 problems solved, then NPI-Complete (UCV) with 7, then us (USB) with 6. The fourth team (“Segmentation Fault”, third and last classified from the USB) also had 6 problems solved, but with a bigger time penalty. We had little expectations for the regional, but things went way too well then…</p>
<p>By the start of the frozen hour we had five (5) accepted problems. We had one pending problem with a Wrong Answer (we can try again), but we quickly saw a stupid solution to another problem (the simplest bipartite matching). While coding that one, we saw the mistake in the Wrong Answer, corrected, and got two (2) more Accepted problems!</p>
<p>We ended up with seven (7) problems, pretty happy with the outcome. Still, only first place (and usually second) is guaranteed to classify for the World Finals; we were competing against Colombia, which had really good teams… And we classified, in second place (third also classified this time). We were going to Thailand.</p>
<h2 id="pre-competition-stress-venezuela-style">Pre-competition stress (Venezuela style)</h2>
<p>The event started on Monday (May 16th, 2016). Up until the previous Wednesday, we didn’t know if we were going to make it. We had some money donated by friends that was just enough to buy 3 tickets from an organization that promised low prices for academic trips. Yet at the last minute they said no.</p>
<p>We were supposed to get help from the university, private companies or the Venezuelan state. But our university is public and depends on the state, private companies have mostly disappeared from the country (due to its nationalization policies), and the state seems to prioritize sports (like “Underwater Rugby”, whatever that is) over academic events.</p>
<p>It was a Thursday and all our hopes were gone, when some coach from another country contacted us. It seemed some coaches, ICPC representatives and so on, collaborated to buy us the tickets. Within 6 hours of talks and organizing dates, we had the tickets (even for our coach). We had to run, now, as the flight was the very same night/dawn.</p>
<p>Such a miracle included a trip of 5 stops one way, 4 stops the other, for a total of 11 flights, more than 132 hours traveling (less than the time we spent there!)… It was completely worth it.</p>
<h3 id="the-flights">The flights</h3>
<p>The trip to Phuket was:</p>
<ul>
<li>Caracas - Bogotá (2 hours)
<ul>
<li>3 hours in Bogotá.</li>
</ul></li>
<li>Bogotá - Panamá City (2 hours)
<ul>
<li>3 hours in Panamá.</li>
</ul></li>
<li>Panamá City - Sao Paulo (9 hours)
<ul>
<li>Checked out our bags to change airlines.</li>
<li>…19 hours of wait…</li>
<li>Checked in our bags with the new airline.</li>
</ul></li>
<li>Sao Paulo - Abu Dhabi (16.5 hours)
<ul>
<li>5 hours in Abu Dhabi.</li>
</ul></li>
<li>Abu Dhabi - Bangkok (9 hours)
<ul>
<li><p>We had to check our bags here. Mine was lost.</p>
<p>Airport security made the others literally run after one of their guys to the gate (Augusto said it was like a video game, where no matter how fast you go, the NPC is still ahead of you).</p>
<p>Airport security made me stay to wait for my bag after they supposedly found it.</p>
<p>They did, actually, and brought it to me in a cargo elevator. The security guy rushed me to run fast through the check-out point, past some guards, up 2 or 3 floors, to the gates hall, to the farthest gate, for check-in.</p>
<p>I made it.</p>
<p>Then we had to run after the Thai guy again, as our flight was almost ready to go.</p>
<p>We were left breathless, some with tachycardia, all of us super smelly, but we made it on time and boarded that tiny airplane (way more modern than Venezuela’s planes anyway), to Phuket, finally.</p></li>
</ul></li>
<li>Bangkok - Phuket (2 hours)</li>
</ul>
<p>In Phuket, we got our bags easily and spent an hour changing, cleaning, resting, before going out to find a big welcome stand with a couple of volunteers from the host university that treated us well and got us into transportation to the hotel in minutes.</p>
<h2 id="the-world-finals-2016.-phuket-thailand">The World Finals 2016. Phuket, Thailand</h2>
<p>The main event happened the day after the dress rehearsal. There we saw the location: A sports stadium, with a big tent for resting before entering the arena. We got to listen to Executive Director Bill Poucher’s jokes and laughed hard at every one of them.</p>
<p>It was our first time in the World Finals, competing against the best of the best. Watching the giant screen showing the ICPCLive streaming just before entering the contest did not help much. Words from other competitors and friends did, though. We were there, and we were going to give it our all, anyway.</p>
<p>The contest was… tense. Lots of balloons for other teams. We got our first AC in a relatively good time. But we struggled with our second problem. It was, according to the scoreboard, the second easiest, and we got many WA, before a final AC. That left us no time to think through the other problems.</p>
<p>Mistakes made:</p>
<ul>
<li>To have stuck to a single problem for too long.</li>
<li>To be all thinking about the same problem.</li>
<li>To not read all the problems in time.</li>
<li>To underestimate ourselves with some tasks.</li>
</ul>
<p>We got only two problems. But it’s alright. We did all we could. We represented our university and country proudly. And I got this photo:</p>
<p>As for our friends from the <em>Universidad Nacional de Rosario</em> (Argentina), they became Latam Champions, no less. They achieved an outstanding 37th place, beating lots of crazily good universities. Congratulations, Leopoldo, Mariano, Pablo, and Martín!</p>
<h2 id="the-other-great-events">The other great events</h2>
<h3 id="ibm-techtrek">IBM TechTrek</h3>
<p>A long and boring… I’m kidding. An awesome and wholly interesting talk on many hot topics in Computer Science by Star Wars characters… I mean, IBM guys. They talked about many things. Among them were Big Data, Cloud Computing and Bluemix. It really made me love my choice of studies way more than ever.</p>
<h3 id="fantasea-opening-ceremony">FantaSea Opening Ceremony</h3>
<p>The opening was boring, I must confess. It was at FantaSea grounds, in some auditorium for shows. FantaSea looked great and all, but the presentation was mostly ACM-ICPC guys presenting Thai officials and professors (from the host university and so on) who did not speak English at all. There were several awards for outstanding coaches, too.</p>
<p>The best I could get out of it, though, was the moment they showed all teams onscreen. And we saw all Latin America there. Such excitement can’t be described.</p>
<p>Later on, we ate some weird Thai spicy food there (I’m definitely not a fan of spicy food). The hall was rather amazingly large, and I can’t think of anything else they could use it for. After that, tired and all, we were at FantaSea marketplace, looking at real elephants and all kinds of merchandise around them.</p>
<p>After that, there was quite an amazing circus-like show, with theater, comedy, magic, elephants, music, some Cirque du Soleil acrobatics, and more elephants. There were easily more than ten elephants on-stage at the same time! It was amazing in every sense. Sadly I could not take pictures or record it. But still, what a show!</p>
<h3 id="ibm-chillzone">IBM Chillzone</h3>
<p>IBM, as good sponsors, had a great place set up for organizing tiny presentations, demonstrations and giving away gifts. Among those gifts, I got a pair of headphones, a USB hub, some pens, a cool cube toy and a really comfy t-shirt with an eye, a bee, and an “M”… Got it?</p>
<h3 id="icpcquest">ICPCQuest</h3>
<p>The World Finals are great in many ways. But one thing I really congratulate the organizers for is this… game? It’s called ICPCQuest, and it consists of completing <em>quests</em>, which are usually tweets with a specific photo or message you have to take or write, to gain points. Given a certain quantity, you get prizes. And at the end, the rest of prizes are given “at random”; with a probability distribution that follows how many points you got (the more points you got, the more likely you were to get a prize).</p>
<p>It’s an awesome way to gain free coverage and tons of pictures of the event, to make the contestants and attendees interact with other people, and it’s just too fun to miss playing it.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[Pies en Tierra]]></title>
    <link href="https://mathiassm.dev/escritos/pies-en-tierra" />
    <id>https://mathiassm.dev/escritos/pies-en-tierra</id>
    <published>2015-12-16T00:00:00Z</published>
    <updated>2015-12-16T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>Flotando en el espacio, en el agua, en la tierra. Perdido en el vacío o en lo lleno. Él sigue incluyendo cosas, sigue agregando colores, sigue pintando las paredes. Él no para de ensuciar. Él no para de moverse. Él no para.</p>
<p>Él ya está cansado. Él ya quiere parar, quiere pintar de blanco, no empezar otra vez. Quiere ordenar. Quiere descansar.</p>
<p>Él ya no quiere pintar, no quiere volar, no quiere saber, quiere parar.</p>
<p>Pies en la tierra.</p>
<p>Sin ganas se mueve, lo mueve; eso, algo. Quiere parar y no puede, quiere parar y pide ayuda. Quiere parar y descansar.</p>
<p>Pintar de blanco.</p>
<p>Pintar de azul.</p>
<p>Pintar de gris.</p>
<p>Pintar todo.</p>
<p>No.</p>
<p>Ordenar.</p>
<p>Dejar de pintar. Parar.</p>
<p>Él quiere descansar y dejar de pintar. No quiere más colores y movimiento, ni caos, ni pensar. Quiere parar. Parar y pensar pero no pensar antes. Quiere ordenar, pintar de blanco, parar y organizarse. Se pierde el sentido, el arriba y la izquierda, quiere detenerse en el centro. Cerrar los ojos, abrirlos, concentrarse en un punto, descubrir su color y entorno, partir de ese punto y estar allí, y en ningún otro lugar. Quiere moverse lentamente pero no quedarse quieto. Quiere detenerse para poder seguir.</p>
<p>No podrá hacerlo de otra manera.</p>
<p>Debe parar de pintar. Debe parar y observar. Quedarse con eso. Han pasado años y él pinta. Pueden pasar años y que él observe. Quizás así entienda lo que hizo, por qué lo hizo, y sepa qué hizo con ese lienzo, nunca blanco, nunca vacío, siempre cambiando, siempre confuso, siempre ruidoso, siempre.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[USB's Introduction to Robotics Workshop]]></title>
    <link href="https://mathiassm.dev/blog/robotics-workshop" />
    <id>https://mathiassm.dev/blog/robotics-workshop</id>
    <published>2015-12-01T00:00:00Z</published>
    <updated>2015-12-01T00:00:00Z</updated>
    <content type="html"><![CDATA[]]></content>
</entry>
<entry>
    <title><![CDATA[Training Camp Argentina 2015]]></title>
    <link href="https://mathiassm.dev/blog/training-camp-argentina-2015" />
    <id>https://mathiassm.dev/blog/training-camp-argentina-2015</id>
    <published>2015-06-01T00:00:00Z</published>
    <updated>2018-09-21T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>We were still babies at programming, to be honest. But the USB had competed in the Marrakech World Finals 2015 (Team Phoenix); there, the awesome guys from Argentina invited Venezuela to a Training Camp they had been running annually for 6 years. Yet, Team Phoenix couldn’t go, as two of its three members had graduated.</p>
<p><strong>Venezuela could send two teams</strong>, and it was decided that one should be from the USB, so Ricardo chose us, RAM, to go to fucking Argentina.</p>
<h2 id="home-pre-training">Home Pre-Training</h2>
<p>The whole idea intimidated us. We had never even participated in a real ICPC contest (local, regional or else), much less attended such a camp, or gone to Argentina, for that matter. The idea of a previous training, taught in our home university, was welcomed.</p>
<p>The main “teacher” was Ricardo, our coach, but other classes were given by Rubmary (teammate) and Wilmer Bandres (Marrakech finalist), as well. They were open classes for anyone who wanted to go, so there were usually around 7 to 10 people.</p>
<h2 id="the-necessary-fundraising">The necessary fundraising</h2>
<p>Venezuela is going, as I write this, through a political, social and economic crisis that makes everything related to travel, among a million other things, almost impossible: We had no money for it. We had to fly some miles to get there, so we asked for help. All this during the trimester and pre-training up until the end.</p>
<p>It was tough, but we somehow managed to arrange everything after lots of people (mostly family, but also friends and a couple of strangers) helped by donating or sharing our story. We finally got the money, and in a couple of stressful days, we organized the trip to Bahía Blanca, Argentina.</p>
<h2 id="two-weeks-of-intensive-training">Two weeks of intensive training</h2>
<ul>
<li>Lectures all weekday mornings.</li>
<li>Simulations all weekday afternoons.</li>
<li>A few <em>minor</em> events related to the sponsors:
<ul>
<li><strong>Google</strong> - Maps and internships open to all.</li>
<li><strong>Facebook</strong> - Mobile version/Network and internships open to… the best.</li>
<li><strong>Medallia</strong> - Networking awesomeness and internships open.</li>
</ul></li>
<li>Saturday Codeforces because we weren’t tired enough.</li>
</ul>
<p>We learned a lot, a freaking lot, then and months after, digesting all that information. This was a major help for us at the regionals when <a href="https://mathiassm.dev/blog/acm-icpc-world-finals-thailand">we classified to the World Finals</a>.</p>
<h3 id="topics-treated-in-classes">Topics treated in classes</h3>
<p>Be sure to expand every item to see specific topics.</p>
<details>
  <summary>Graphs</summary>
  <ul>
    <li>DFS / <strong>BFS</strong>.</li>
    <li><strong>Shortest paths</strong></li>
    <li><strong>Minimum Spanning Trees</strong>
      <ul>
        <li><strong>Kruskal</strong></li>
        <li><strong>Prim</strong></li>
      </ul>
    </li>
    <li>Strongly Connected Components 
      <ul>
        <li>Kosaraju</li>
        <li>SAT-2</li>
      </ul>
    </li>
    <li>DFS edge classification</li>
    <li>Topological Sorting</li>
    <li>Articulation Points</li>
    <li><strong>Intractable Problems</strong>
      <ul>
        <li><strong>Cliques</strong></li>
        <li><strong>Independent sets</strong></li>
        <li><strong>Vertex Cover</strong></li>
      </ul>
    </li>
    <li>Trees 
      <ul><li>Centroid decomposition</li></ul>
    </li>
  </ul>
</details>

<details>
  <summary>Dynamic Programming</summary>
  <ul>
    <li>Top-down</li>
    <li>Bottom-up</li>
    <li>Overlapping subproblems</li>
    <li>Principle of Optimality</li>
    <li>Range DP</li>
    <li>Bitmasking</li>
  </ul>
</details>

<details>
  <summary>Arithmetics</summary>
  <ul>
    <li>Prime numbers</li>
    <li>Factorization</li>
    <li>Euler’s Totient</li>
    <li>Modular arithmetics 
      <ul>
        <li>Euclidean algorithm (+ Extension)</li>
        <li>Chinese Remainder Theorem</li>
      </ul>
    </li>
    <li>Matrices 
      <ul>
        <li>Graphs</li>
        <li>Markov Chains</li>
        <li>System of equations</li>
        <li>Gauss-Jordan</li>
      </ul>
    </li>
    <li>FFT 
      <ul><li>You know, the usual dark magic</li></ul>
    </li>
  </ul>
</details>

<details>
  <summary>Data Structures</summary>
    <ul><li>C++ sets</li>
    <li>Range Minimum Query 
      <ul>
        <li>Sparse tables (static)</li>
        <li>Segment trees (dynamic) 
          <ul>
            <li>Lazy propagation</li>
            <li>Persistence</li>
          </ul>
        </li>
        <li>Lowest Common Ancestor</li>
      </ul>
    </li>
    <li>Interval operations 
      <ul>
        <li>Sums 
          <ul>
            <li>Partial sums (static)</li>
            <li>Binary Indexed Trees (dynamic)</li>
          </ul>
        </li>
        <li>Others 
          <ul>
            <li>“Square root trick”</li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</details>

<details>
  <summary>Greedy problem solving</summary>
  <ul>
    <li>Try to prove your stuff</li>
  </ul>
</details>

<details>
  <summary>Strings</summary>
  <ul>
    <li>String matching 
      <ul>
        <li>Knuth-Morris-Pratt</li>
      </ul>
    </li>
    <li>Tries</li>
    <li>Suffix Array 
      <ul>
        <li>Longest Common Prefix</li>
      </ul>
    </li>
  </ul>
</details>

<details>
  <summary>Geometry</summary>
  <ul>
    <li>Elements 
      <ul>
        <li>Points</li>
        <li>Vectors</li>
        <li>Lines</li>
      </ul>
    </li>
    <li>Sweep Line 
      <ul>
        <li>Closest pair</li>
        <li>Segment intersection</li>
        <li>Convex Hull</li>
      </ul>
    </li>
    <li>Polygon area</li>
  </ul>
</details>

<details>
  <summary>Game Theory</summary>
  <ul>
    <li>Winner and loser positions</li>
    <li>Nim</li>
  </ul>
</details>
<p>You can check the <a href="https://sites.google.com/site/trainingcampargentina2015/">official website for Training Camp Argentina 2015</a> (in Spanish).</p>
<h2 id="training-camp-venezuela">Training Camp Venezuela</h2>
<p>Something we agreed to commit to before going to Argentina was to share all we learned in Argentina with Venezuelan competitors. We had then (and still have) a lack of competitors and trainers, due to Venezuela’s long lasting (bad and getting worse) condition for the most part, as academic life struggles, so we all want and need to promote these competitions by training others.</p>
<p>We resorted to doing some kind of training camp. It had a totally different format, given Venezuela’s insecurity and current <em>state</em> of the State Universities; these universities depend economically on the government, and with Maduro’s administration, we were suffering a professors’ strike at that time thanks to a critical lack of necessary conditions. Certainly chaotic times, but we did it anyway.</p>
<p>The format was like this: Lectures on Friday and Saturday mornings in the <em>Universidad Central de Venezuela</em> (UCV) (which is an easier place to go to for most students) by the UCV team that went with us to Argentina and ourselves. We covered the same topics we were lectured on.</p>
<p>They got a pretty big set of topics in Argentina, but with as little time as two weeks, not everything could be taught. We tried to cover a little more than them by including <em>maximum flow</em> algorithms as the last class.</p>
<p>I got to give the second lecture on graphs. I covered <em>BFS</em>, <em>Shortest Paths</em>, <em>Minimum Spanning Trees</em>, “quirky” graphs and a few <em>intractable</em> problems.</p>
<p>Our goal is to continue this pseudo-camp on a yearly basis, to keep on promoting the competitions. We hope to get sponsors eventually, to provide a better service for all.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[LDC: Teaching Computing Lab]]></title>
    <link href="https://mathiassm.dev/blog/ldc" />
    <id>https://mathiassm.dev/blog/ldc</id>
    <published>2015-06-01T00:00:00Z</published>
    <updated>2019-09-14T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>Even as hooked on Competitive Programming as I was, at almost the same time I started training, I joined the Teaching Computing Lab of the USB (<em>Laboratorio Docente de Computación</em> or LDC). The unknown was calling me everywhere I looked. It was my first trimester studying real computer science, and I got the opportunity to learn about networks and system administration here. I took it.</p>
<h2 id="it-support-and-homework">IT Support and homework</h2>
<p>This organization is in charge of managing the entire network of the Department of Computing and IT. Inside this network, most of the CS undergrad and postgraduate studies are managed. Professors have their personal sites there, accounts for using services like the printers, email, storage and so on.</p>
<p>As a newbie there, you’re not ready to handle all that; instead, you get homework to keep learning progressively, while solving IT issues of students and faculty alike. Sometimes requests are easy, like installing an OS, or installing something, while other times it’s about fixing a printer (God I hate printers).</p>
<h3 id="what-you-learn-about">What you learn about</h3>
<p>The LDC is in charge of several basic and not-so-basic services, like:</p>
<ul>
<li>Mail (IMAP, SMTP)</li>
<li>NFS</li>
<li>LDAP</li>
<li>Databases (Postgres, MySQL… )</li>
<li>Logwatchers</li>
<li>Backups (Bacula, Amanda…)</li>
<li>DHCP</li>
<li>DNS</li>
<li>SSH</li>
</ul>
<p>In some way or another, you end up learning anything from regular expressions as life savers, package managers, the OSI model, sniffing the network and just being good at getting your hands dirty in the console.</p>
<p>I’ve completed several <em>“tareas”</em> (homework about a specific topic), but due to the rules of the LDC, I can’t post them here yet. Someday I will post them somewhere. It was a pain to find some solutions to the problems and questions there, so I’d like to make it easier for others to move on faster to higher topics.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[Writing Workshop at the USB]]></title>
    <link href="https://mathiassm.dev/blog/creative-writing-workshop" />
    <id>https://mathiassm.dev/blog/creative-writing-workshop</id>
    <published>2015-02-01T00:00:00Z</published>
    <updated>2018-09-21T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>A great experience I had in the <em>Universidad Simón Bolívar</em> was a Writing Workshop organized by a couple of Literature students from the <em>Universidad Central de Venezuela</em> as required community service for their degree. The main goal was something I was not interested in, but the writing exercises were a phenomenal experience.</p>
<p>Reading your own writings in front of strangers is quite a challenge for someone like me, but as I got to listen to marvelous writings by the other people present, I think it was a fair trade. There are quite excellent writers hidden in the science aisles.</p>
<p>I started writing (in Spanish) on a little Medium site, for anyone who’s interested. Made-up abstract stories are most of what you’ll encounter there.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[Learning French]]></title>
    <link href="https://mathiassm.dev/blog/french-start" />
    <id>https://mathiassm.dev/blog/french-start</id>
    <published>2015-01-01T00:00:00Z</published>
    <updated>2019-09-21T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>Since I was little, I’ve known enough English to read and write without much trouble. I don’t get regular spoken conversation, so as of 2015 I’m a little awkward at speaking, but can understand it pretty well. While I know I must continue improving it, I don’t want to stop there, as there are other interesting languages I’d like to learn.</p>
<p>French is one of them, as I chose it for my third language. <em>Et je l’aime.</em></p>
<p>I’ve not gotten many chances to speak it, and so far (2015), I’m a little awkward at it. Even though I know I must practice speaking my second language, I don’t want to stop there. I have always wanted to learn many more languages, but I always thought it’d be Japanese (for childish reasons). As I finally thought it through, I decided on French. And oh boy, je l’aime.</p>
<h2 id="some-basics-to-get-you-started">Some basics to get you started</h2>
<p>Personal pronouns:</p>
<ul>
<li><em>je</em> (“I”)</li>
<li><em>tu</em> (“you”)</li>
<li><em>il</em> / <em>elle</em> (“he” / “she”)</li>
<li><em>nous</em> (“we”)</li>
<li><em>vous</em> (formal singular “you” or plural “you”)</li>
<li><em>ils</em> (“they”)</li>
</ul>
<p>Auxiliary verbs: <em>être</em> (“to be”) and <em>avoir</em> (“to have”). And their conjugations in the present tense:</p>
<table>
<thead>
<tr>
<th style="text-align: right;">Qui</th>
<th style="text-align: left;">être</th>
<th style="text-align: center;"></th>
<th style="text-align: right;">Qui</th>
<th style="text-align: left;">avoir</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right;">Je</td>
<td style="text-align: left;">suis</td>
<td style="text-align: center;"></td>
<td style="text-align: right;">J’</td>
<td style="text-align: left;">ai</td>
</tr>
<tr>
<td style="text-align: right;">Tu</td>
<td style="text-align: left;">es</td>
<td style="text-align: center;"></td>
<td style="text-align: right;">Tu</td>
<td style="text-align: left;">as</td>
</tr>
<tr>
<td style="text-align: right;">Il / Elle</td>
<td style="text-align: left;">est</td>
<td style="text-align: center;"></td>
<td style="text-align: right;">Il / Elle</td>
<td style="text-align: left;">a</td>
</tr>
<tr>
<td style="text-align: right;">Nous</td>
<td style="text-align: left;">sommes</td>
<td style="text-align: center;"></td>
<td style="text-align: right;">Nous</td>
<td style="text-align: left;">avons</td>
</tr>
<tr>
<td style="text-align: right;">Vous</td>
<td style="text-align: left;">êtes</td>
<td style="text-align: center;"></td>
<td style="text-align: right;">Vous</td>
<td style="text-align: left;">avez</td>
</tr>
<tr>
<td style="text-align: right;">Ils</td>
<td style="text-align: left;">sont</td>
<td style="text-align: center;"></td>
<td style="text-align: right;">Ils</td>
<td style="text-align: left;">ont</td>
</tr>
</tbody>
</table>]]></content>
</entry>
<entry>
    <title><![CDATA[Elgarson: Fashion web design]]></title>
    <link href="https://mathiassm.dev/blog/el-garson" />
    <id>https://mathiassm.dev/blog/el-garson</id>
    <published>2015-01-01T00:00:00Z</published>
    <updated>2019-09-14T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>I was hired to coordinate with a France-based client the design and implementation of a lifestyle-oriented website (famous people, fashion, that kind of stuff): <em>elgarson.com</em> (now offline).</p>
<p>I used WordPress as a backend, to provide an easy UI for writing on the site. The frontend was built from nothing, with plain CSS and HTML, with tiny touches of JavaScript.</p>
<h2 id="white-clear-design">White, clear design</h2>
<p>With white as its main color, the site showed elegance and clarity. Almost-black sans-serif typography was used. It followed the minimalism trend among famous fashion labels. Five (5) sections are shown: <em>Le Jardin</em>, <em>Motivation</em>, <em>Inspiration</em>, <em>Curiosité</em> and <em>Personnalités</em>.</p>
<h3 id="le-jardin-mosaic"><em>Le Jardin</em> mosaic</h3>
<p>It consists of only pictures of flowers arranged in a symmetric three-column mosaic of square photos. They can be clicked to open in a big modal.</p>
<h3 id="motivation-tips"><em>Motivation</em> tips</h3>
<p>The only part that’s not white, but pink. It shows motivational messages arranged in a single column. They stay visually separated by being in semi-transparent boxes.</p>
<h3 id="inspiration-from-famous"><em>Inspiration</em> from famous</h3>
<p>It doesn’t present a meta list of posts, but directly the last one. It presents a simple design of two columns, roughly one-third (1/3) and two-thirds (2/3) of the screen. The first column shows a photo of the person, while the second, wider column presents a short biography and share buttons. The user can browse for inspiration by using the left and right arrows for navigation. According to the client, “just one of those pages should be enough to inspire a generation”.</p>
<h3 id="curiosité-on-the-writings"><em>Curiosité</em> on the writings</h3>
<p>A simple list of posts. Each a title and small thumb on the right side. Nothing fancy here.</p>
<h3 id="personnalités-of-the-world"><em>Personnalités</em> of the world</h3>
<p>Presents a mosaic of hand-drawn named images. Each is supposed to be for an interview with a famous person (singer, artist, comedian…). The mosaic is ordered in a “Masonry” way as every image can be of a different size. On hover, the image flips to show the (usually short) interview. On mobiles, the cards are shown in a single column, with the image on the left, and the interview on the right, as hover effects don’t exist.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[Competitive Programming]]></title>
    <link href="https://mathiassm.dev/blog/competitive-programming" />
    <id>https://mathiassm.dev/blog/competitive-programming</id>
    <published>2015-01-01T00:00:00Z</published>
    <updated>2018-09-21T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>After a great math professor convinced me and two other students, we started (re)learning to code sooner and with one goal in mind: To compete in the “Coding Marathons” (as they’re commonly called in my university).</p>
<h2 id="the-acm-icpc">The ACM-ICPC</h2>
<p>The Association for Computing Machinery - International Collegiate Programming Contest (ACM-ICPC) is an annual competition for college students around the world, to compete against 40,000 other students in local and regional rounds for the opportunity to participate in the World Finals.</p>
<p>The rules are simple enough:</p>
<ul>
<li>Group
<ul>
<li>Made up of 3 students of the same university.</li>
</ul></li>
<li>Materials
<ul>
<li>Each group is given a single computer.</li>
<li>Each group can bring (with some limits) books or other non-electronic material.</li>
<li>Paper and pencils are provided.</li>
</ul></li>
<li>Competition
<ul>
<li>Each competition (or round) lasts 5 hours.</li>
<li>Each consists of solving 8 to 13 programming problems.</li>
<li>At any given moment, except for the final (dead) hour, a team is able to watch the scoreboard of solved problems by other teams.</li>
</ul></li>
</ul>
<h2 id="other-competitions">Other competitions</h2>
<p>The ICPC is but one of many worldwide competitions to prove your coding and logical thinking skills. Big companies like Google or Facebook like the idea enough to host their own competitions (CodeJam and HackerCup, respectively). The format is a little different from competition to competition, but topics are generally the same (lots and lots of topics).</p>
<p>If you’re a minor, high-school student, you can compete in the International Olympiad in Informatics (IOI), which is, along with the ICPC, one of the oldest programming competitions, besides being one of the big five international science olympiads.</p>
<p>There are also many other institutions that organize coding competitions (even as their main activity), online or on-site. Some of them are the “Competitive Programming Network” (or RPC, “Red de Programación Competitiva” in Spanish), Codeforces (from Russia), CodeChef (from India), Topcoder (from the USA), HackerRank (from the USA); almost every competition is in English as a standard to avoid ambiguity due to translation.</p>
<h2 id="what-you-can-learn-training">What you can learn training</h2>
<p>There are tons of things you can learn; and you must learn them if you want to reach for glory (red status in Codeforces, for example). Among those topics are a great deal of magical data structures, graph theory, geometry, string analysis, dynamic programming, number theory, and so much more.</p>
<p>Dealing with such a quantity of information, it’s normal to get intimidated. And indeed, this might not be everyone’s cup of tea, but it’s impossible to know without trying. I can just say it can get pretty fun.</p>
<h3 id="how-to-start-training">How to start training</h3>
<p>I started training soon in my studies, at the same time as my then-teammates Augusto and Rubmary, with help from Prof. Ricardo. He guided us through the beginning of our journey, with puzzles and basic programming tasks that required just a bit more thinking than the last one. I love puzzles and find it a great way to train logical thinking.</p>
<p>We picked up C++ as it’s the most used language in ICPC competitions, and found in it a powerful tool, too big to grasp all at once at first, but flexible enough to provide a simple learning environment. One thing I learned on the way, though, is that the language doesn’t matter that much: The main goal of these competitions is to think of a solution. The basics are enough to start, and along the way more and more details of the language will show themselves.</p>
<p>The easiest way to train is to use an online judge of solutions. The judges usually have big catalogs of problems, which you can choose from, pick one, code a solution, and the judge will test it against several (usually hidden to the user) test cases to prove your solution correct, or give you some feedback as to why it’s not (too much time running, too much memory used, crashed along the way, didn’t even compile, …).</p>
<p>A common judge is SPOJ, and here are some easy problems for beginners: TEST, ADDREV, HELLOKIT, OFFSIDE, CANDY, NSTEPS, DRAWM, CYLINDER. Some not-so-beginner-friendly problems: FARIDA, SAMER08F, STPAR, CHOCOLA, HISTOGRA, PIGBANK, AGGRCOW. Do not look for answers before you try them yourself.</p>
<h3 id="basic-topics-to-learn-along">Basic topics to learn along</h3>
<p>Theory and implementations to learn right after you start are:</p>
<ul>
<li>Asymptotic Notation</li>
<li>Data Structures
<ul>
<li>Arrays</li>
<li>Linked lists</li>
<li>Stacks and Queues</li>
<li>Graphs
<ul>
<li>Adjacency matrix</li>
<li>Adjacency list</li>
<li>Arc list</li>
</ul></li>
</ul></li>
<li>Algorithms
<ul>
<li>Sorting (Bubblesort, Mergesort, Quicksort)</li>
<li>Binary Search</li>
<li>On graphs
<ul>
<li>Traversal (DFS, BFS)</li>
<li>Backtracking</li>
</ul></li>
</ul></li>
</ul>
<p>There are many other topics. You’re free to search around for them or contact me if you need help with anything.</p>
<h3 id="best-practices">Best practices</h3>
<ul>
<li>Practice writing code on paper, even pseudo code.</li>
<li>Practice reading other people’s code (important: read your teammates’ code a lot, understand their thought process).</li>
<li>Practice in online contests like Codeforces, and measure yourself with others.</li>
<li>Don’t look for other people’s solutions, unless you’re certain you can’t solve it yourself; but, even then, implement the solution yourself so that you get experience on problems similar to that.</li>
<li>Always solve off-contest any problem you couldn’t solve on time.</li>
<li>Read posts online explaining topics, or the books themselves.</li>
<li>Don’t get stuck on a single problem, move on to another (that goes for in-contest and off-contest alike).</li>
<li>Read the editorials for the contests after the fact (sometimes written by competitors in ugly but potentially interesting blogs).</li>
<li>Don’t lose the habit.</li>
<li>Keep a template for online contests, practice writing it quickly for on-sites, keep it short.</li>
</ul>
<div class="sourceCode" id="cb1"><pre class="sourceCode cpp"><code class="sourceCode cpp"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="pp">#include </span><span class="im">&lt;bits/stdc++.h&gt;</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="pp">#define FOR</span><span class="op">(</span>i<span class="op">,</span><span class="pp"> </span>from<span class="op">,</span><span class="pp"> </span>to<span class="op">)</span><span class="pp"> </span><span class="cf">for</span><span class="pp"> </span><span class="op">(</span><span class="dt">int</span><span class="pp"> </span>i<span class="pp"> </span><span class="op">=</span><span class="pp"> </span><span class="op">(</span>from<span class="op">)</span><span class="pp"> </span><span class="op">;</span><span class="pp"> </span>i<span class="pp"> </span><span class="op">&lt;</span><span class="pp"> </span>to<span class="pp"> </span><span class="op">;</span><span class="pp"> </span>i<span class="op">++)</span></span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="pp">#define ms</span><span class="op">(</span>obj<span class="op">,</span><span class="pp"> </span>val<span class="op">)</span><span class="pp"> </span>memset<span class="op">(</span>obj<span class="op">,</span><span class="pp"> </span>val<span class="op">,</span><span class="pp"> </span><span class="kw">sizeof</span><span class="op">(</span>obj<span class="op">))</span></span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="pp">#define ri</span><span class="op">(</span>i<span class="op">)</span><span class="pp"> </span>scanf<span class="op">(</span><span class="st">&quot;</span><span class="sc">%d</span><span class="st">&quot;</span><span class="op">,&amp;</span>i<span class="op">)</span></span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="pp">#define mp </span>make_pair</span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a><span class="pp">#define pb </span>push_back</span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="pp">#define INF </span><span class="bn">0x3f3f3f3f</span></span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a><span class="pp">#define EPS </span><span class="fl">1e-10</span></span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a><span class="pp">#define PI </span>acos<span class="op">(-</span><span class="dv">1</span><span class="op">)</span></span>
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a><span class="kw">using</span> <span class="kw">namespace</span> std<span class="op">;</span></span>
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a><span class="kw">typedef</span> <span class="dt">long</span> <span class="dt">long</span> ll<span class="op">;</span></span>
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a><span class="kw">typedef</span> pair<span class="op">&lt;</span><span class="dt">int</span><span class="op">,</span> <span class="dt">int</span><span class="op">&gt;</span> ii<span class="op">;</span></span>
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a><span class="kw">typedef</span> vector<span class="op">&lt;</span><span class="dt">int</span><span class="op">&gt;</span> vi<span class="op">;</span></span>
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a><span class="dt">int</span> gcd<span class="op">(</span><span class="dt">int</span> a<span class="op">,</span> <span class="dt">int</span> b<span class="op">){</span> <span class="cf">return</span> b <span class="op">?</span> gcd<span class="op">(</span>b<span class="op">,</span> a <span class="op">%</span> b<span class="op">)</span> <span class="op">:</span> a<span class="op">;</span> <span class="op">}</span></span>
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a><span class="dt">int</span> mcm<span class="op">(</span><span class="dt">int</span> a<span class="op">,</span> <span class="dt">int</span> b<span class="op">){</span> <span class="cf">return</span> a <span class="op">*</span> b <span class="op">/</span> gcd<span class="op">(</span>a<span class="op">,</span> b<span class="op">);</span> <span class="op">}</span></span>
<span id="cb1-21"><a href="#cb1-21" aria-hidden="true" tabindex="-1"></a><span class="dt">int</span> pot<span class="op">(</span><span class="dt">int</span> a<span class="op">,</span> <span class="dt">int</span> b<span class="op">){</span> <span class="cf">return</span> b <span class="op">?</span> <span class="op">(</span>pot<span class="op">(</span>a<span class="op">,</span> b <span class="op">&gt;&gt;</span> <span class="dv">1</span><span class="op">))*(</span>pot<span class="op">(</span>a<span class="op">,</span> b <span class="op">&gt;&gt;</span> <span class="dv">1</span><span class="op">))*(</span>b <span class="op">&amp;</span> <span class="dv">1</span> <span class="op">?</span> a <span class="op">:</span> <span class="dv">1</span><span class="op">)</span> <span class="op">:</span> <span class="dv">1</span><span class="op">;</span> <span class="op">}</span></span>
<span id="cb1-22"><a href="#cb1-22" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-23"><a href="#cb1-23" aria-hidden="true" tabindex="-1"></a><span class="dt">int</span> main<span class="op">(){</span></span>
<span id="cb1-24"><a href="#cb1-24" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-25"><a href="#cb1-25" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>]]></content>
</entry>
<entry>
    <title><![CDATA[Pensamiento Permanente]]></title>
    <link href="https://mathiassm.dev/escritos/pensamiento-permanente" />
    <id>https://mathiassm.dev/escritos/pensamiento-permanente</id>
    <published>2014-10-31T00:00:00Z</published>
    <updated>2014-10-31T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>Cuaderno cuadrado, con líneas rectas, en una mesa cuadrada en tres dimensiones. Estática, en un suelo cuadrado, alfombrado con diseños rectos. Paredes y un cuarto. Dolor de cabeza. ¿Cuadrado? Es puntiagudo, serán las luces. ¿Cuadradas? Son ondas, partículas. Átomos cúbicos parecen medida, no recuerdo lo que es un mol. Abstracto imaginar y pensar en la luz, como si uno pudiera verla. Sólo su reflejo. Menos mal que veo sólo dos físicas. Computación, programar, exactitud, tangibilidad, ¿combinan? Me gusta lo abstracto. ¿Cuadrado? Prefiero mesas triangulares. Prefiero discusiones con pocas personas. Tres es muy bueno, dos es ideal. Cuatro estorban. ¿Cuadrado? No. Una línea, dos líneas, no cuatro. Dos dimensiones, dos rieles de tren al hablar, al pensar. La mano se mueve sola al escribir, el cerebro piensa al dormir. Levantarse a las once por una idea, dos ideas, siete ideas. Insoportable físicamente, estupendo emocionalmente. Te sientes productivo, o vivo, confundo ambas cosas, quiero vivir. Un lápiz cuadrado no es, redondo lo ves, la luz se resbala y te encuentra otra vez. ¿La ves, lo ves? Es tu mente cuatridimensional, donde nada y todo tiene sentido, pero te interesa etiquetar, decirle “sentido” al silencio significante de tu hueco mental, tu oscuridad neuronal. Funcionan mágicamente, creando algo que no tendría por qué existir. Conciencia, individualidad, y un no sé qué que te hace adaptar y ser uno y ser muchos. Molesto pero cierto. Aprovéchalo. Juégalo. Coge bien el lápiz, empieza a escribir. No aprendas, sólo piensa y entiende. No aprendas y vuelvas tonto, entiende y sé un ignorante inteligente. Entiende y diviértete. Olvida tu memoria. Olvida tus ojos, que la luz no tiene por qué ser visible, o una onda o una partícula. Que los caballos no tienen cuatro patas, sino ocho letras. Que ignorante parece tonto pero tiene más letras y es más interesante. Blanco como el papel, donde escribir sin parar sólo te hace ver más. Quisiera enseñarle a un ciego y sordo a escribir. No tengo idea de cómo sería la comunicación, pero me encantaría ver lo que tiene su escrito. Qué dibujos, qué palabras, no, que no sabe y no entiende de eso. Quisiera ver qué pensamiento plasma en dos dimensiones blancas y qué tan poco se entiende, para poder estimar y sufrir o sonreír frente a cuántas dimensiones tenga el pensamiento. ¿Será calculable? ¿Infinito? Dios.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[Diez apóstoles]]></title>
    <link href="https://mathiassm.dev/escritos/diez-apostoles" />
    <id>https://mathiassm.dev/escritos/diez-apostoles</id>
    <published>2014-10-31T00:00:00Z</published>
    <updated>2014-10-31T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>En el centro de diez de doce árboles<br />
Pájaros cantan y personas ríen<br />
Vientos calmados y una flauta sonando<br />
Por la libertad de un jardín encerrado</p>
<p>Se piensa en la grama y se piensa en el suelo<br />
Se piensa en los árboles y se piensa en un muro<br />
Se piensa en el sol y se piensa en la vida<br />
Pero el sol está lejos y la vida no duerme aquí</p>
<p>El pájaro ya no canta, suena<br />
Interrumpe la calma<br />
Sin cambiar el silencio<br />
Por cuanto ruido que escuche<br />
No viene de aquí<br />
Sino de muy lejos</p>
<p>El silencio calla la verdad<br />
Pero si se le escucha<br />
Fuera de esta jaula<br />
Ahí afuera<br />
Se siente realidad</p>
<p>Una pregunta<br />
¡Una manera!<br />
No sé qué hay más allá</p>
<p>Silencio no<br />
Pero quizás<br />
Aquellos árboles que faltan<br />
Y que tanta falta hacen</p>]]></content>
</entry>
<entry>
    <title><![CDATA[Un Recuerdo]]></title>
    <link href="https://mathiassm.dev/escritos/un-recuerdo" />
    <id>https://mathiassm.dev/escritos/un-recuerdo</id>
    <published>2014-10-28T00:00:00Z</published>
    <updated>2014-10-28T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>No sientes que, a veces, los recuerdos son humanos, animales, plantas, que te llaman, te muerden o sólo se interponen en tu camino?</p>
<p>Cuando son bebés suelen ser tiernos. Son precoces y te confortan a ti por la noche. Son agradables compañías. Muchos no son muy resistentes y pronto se ponen a hacer otras cosas sin prestarte atención. Otros son fuertes y no sólo te prestan sino también exigen tu atención. Esos son de temer, pues o te exaltan a un mayor estado de felicidad, o te hunden a golpes en la tristeza o el malestar.</p>
<p>Bebés cuando te llaman o los oyes llorar, cachorros cuando se acuestan contigo, tocones cuando te hacen tropezar más allá y todo el camino.</p>
<p>Luego crecen y cambian.</p>
<p>No les pasa a veces, que les da por capitalista oriental, comunista en occidente, y quieren matar de hambre a esa persona, ese perro, esa planta? Suena fuerte. Nadie admitiría que ha pensado en matar alguna vez. Pero si se trata de recuerdos, a quién no le gustaría matar a algunos? Y cuando se trata de recuerdos que solo se alimentan de tu atención, de tu presencia, de ti, y que no puedes tocar, golpear, o hacerles daño alguno, ¿Cómo matarlos sino haciendo exactamente nada? Los mataría de hambre. La indiferencia fingida los torturaría. El olvido los mataría finalmente.</p>
<p>Sólo me pregunto qué pasaría si el recuerdo decidiera olvidarse de mí. Cuánto tardaría yo en morir.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[Secuestro]]></title>
    <link href="https://mathiassm.dev/escritos/secuestro" />
    <id>https://mathiassm.dev/escritos/secuestro</id>
    <published>2014-10-25T00:00:00Z</published>
    <updated>2014-10-25T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>Te secuestra.<br />
Te ata.<br />
Te venda los ojos.<br />
Te inyecta.<br />
Sonríes.<br />
Lo sientes.<br />
Te atrapa.</p>
<p>Ya no está.<br />
No lo sientes.<br />
No ves nada y no lo sientes.<br />
Te estremece.<br />
Te estresa.<br />
Te aterra.</p>
<p>Te toca.<br />
Te inyecta.<br />
Sonríes.<br />
Te alivia.<br />
Lo sientes.<br />
Ya no.</p>
<p>Te quieres mover.<br />
Quieres ver.<br />
No sabes nada.<br />
Te das cuenta.<br />
Te inyecta otra vez.<br />
Sonríes sin ganas.<br />
Te está destruyendo.</p>
<p>Las vendas se aflojan.<br />
Ya ves y no quieres ver.<br />
Ya sientes y no quieres sentir.</p>
<p>Te vas.<br />
No vuelves.<br />
No vuelve.<br />
Se acaba.</p>]]></content>
</entry>
<entry>
    <title><![CDATA[Nada]]></title>
    <link href="https://mathiassm.dev/escritos/nada" />
    <id>https://mathiassm.dev/escritos/nada</id>
    <published>2014-10-21T00:00:00Z</published>
    <updated>2014-10-21T00:00:00Z</updated>
    <content type="html"><![CDATA[<p>Un ambiente de concreto y hojas, verde y gris, gris y algo verde, un jarrón en medio, flores azules en él. Un ambiente de concreto, líneas de césped, un jarrón de vida. Una pared de plantas, otro ambiente igual al frente. Otro jarrón gris: Más flores azules. Azul como el cielo y el agua del mar, con vida, de vida, en un lugar tranquilo. La brisa, hormigas, armonía de la naturaleza. Un ambiente no de concreto, de vida. Un jarrón que emana verdor a todos lados, unas hojas que hablan de una vida de sacrificio y pasado esplendor. Un banco solitario en el ambiente, ningún par hablando, tocando, ningún alma solitaria pensando, escribiendo. Pueden venir, los invitamos, todos nosotros, la nada, a que vengan y sean nada en y con todo este ambiente, vean y vivan lo verde, las flores, y se pregunten intranquilamente por ese otro ambiente detrás de las plantas oscuras, allá donde nada existe, más que un banco, un jarrón y lo mismo.</p>]]></content>
</entry>

</feed>
