Downloading content…
Hoy estaba haciendo unas cuantas pruebas de unidad en Java con JUnit con el afán de hacer correctamente el “test driven development” ya saben, esa super tendencia que están tomando desarrolladores modernos a lo largo y ancho del mundo que dice que siempre debemos de hacer el test primero y despues el codigo para cada una de nuestras clases, de esa manera nos aseguramos que la clase jale (funcione) como esperamos que funcione.
La idea es muy buena y no solo se restringe al uso de JUnit, ya que una prueba es en escencia un bloque de codigo ejecutable por si mismo que si falla arroja un error y truena (falla) y si funciona pues no hace nada. de esa manera sabes cuando algo falla.
Bueno regresando a TDD (test driven development), como pueden imaginar esta forma de trabajar tiene muchas virtudes ya que si no las tuviera nadie la usaria, entre tantas cosas facilita hacer pruebas ya que las TIENES que hacer antes de empezar a programar en la implementación, esto evita que se descuide el unit testing (pruebas de unidad), pero no falta el caso en el que pensamos en el problema y no podemos pensar en una prueba obvia que nos lleve a implementar una solución y terminamos escribiendo la solución, un tanto compleja pero sin pruebas.
La ironia de la vida, es más fácil solucionar algo y decir “confia en mí” a escribir algo y demostrarlo con pruebas “confia en las pruebas”.
Pero que es bueno probar y que no?
Yo diria que todo debe de ser probable. Algunos dirán lo mismo, otros tantos dirán que pruebes lo posible, Kent beck (casi creador de toda esta tendencia) dirá que no todo es bueno probarlo (pero yo creo que ya chochea y se ha vuelto más pragmático).
Pero que implica probar TODO.
implica que te las vas a ver negras. como dirian: estas jodido, you are in deep shit.
Por que?
por que cosas simples las puedes probar facilmente, y eso te va a llevar a escribir codigo simple lo que es bueno, pero no siempre tan sencillo como quisieramos.
Pero.
PEEEERO
que hay de cosas mas “tru tru” (de truculentas) como:
Aqui es cuando estamos en DEEP SHIT
y algunos dirán que no es probable y lo dejes así… pero vamos a ver un caso interesante y de profunda reflexión
Acceso a base de datos.
Supongamos que usas JDBC, y vamos a probar que lo hagas correctamente.
Como le haces?
Bueno primero que nada tienes que evitar un pecado capital:
– Crear la conexión a la base de datos directamente en tu código.
Connection conn = DriverManager.getConnection(url, user, passwd);
si ponen eso se acaban de condenar a no poder probar en paz
su solución en el método donde vayan a hacer uso de la conexión pidanla por parametro
Ahora. Connection es una interfaz. no?
para probar podemos mandar una implementación hecha por nosotros de la interfaz. eso definitivamente va a funcionar. no?
entonces sobreescriben el metodo createStatement() para regresar una implementación chacarrona (hechiza( hecha por nosotros)) en la que sobreescribimos los metodos necesarios para crear un query.
Ahora entonces creamos el metodo executeQuery en nuestra implementación chacarrona para que si no le mandamos un query esperado aviente una excepción (asi sabremos que la prueba no pasa), despues si nos dan el query que queremos regresamos de nuevo otro implementación chacarrona ahora de un resultset.
And so on…
Si, hay herramientas que hacen esto por nosotros, está por ejemplo Mockito, JMock, EasyMock, que nos permiten hacer stubbing (escencialmente lo de implementar a medias una interfaz o clase, aunque el termino va un poco mas allá).
Un momento…
Hagan la prueba…
Hagan la implementación…
Se van a dar cuenta de algo bien raro, su prueba parafrasea la solución. Estan escribiendo en su prueba la forma en la que quieren que se implemente algo.
Estan colocando, quiero que el programador tenga un objeto connection, y que pida un statement, al statement le pida un resultset con este query, y que el query se transforme en esto…
Algo se ve raro ahi no?
Una prueba deberia solo ser el lineamiento de lo que queremos que haga una pieza de codigo, nos dice que quiere, no el como.
Esta prueba parece que es el como…
Ahora está mal eso? YO no lo sé. Por el momento las sigo haciendo y tengo ese extraño sentimiento de que algo anda mal. ese sentimiento de que algo está demasiado repetido o que está demasiado especifico, que mi prueba encadena al programador, lo desnuda, lo golpea y lo esclaviza. (chale que raro suena eso)
En fin, pues chequenlo por ustedes mismos y si encuentran una respuesta a como hacer este tipo de pruebas menos… restrictivas, diganme.
Download complete.
Downloading tutorial…
On this series:
Ok, I began this series the wrong way… If you remember some time ago I posted about some MVC model that might work with swing but I think to understand that more I have to go a little more through the process of creating an application covering some tools and concepts that might come in handy.
So this is the first one.
Ok. Events. what are they and why do you care?
Events are a way to implement the Observer pattern so an Object A that depends on Object B can change its state when Object B notifies Object A. What it mostly means is that you can have an object depend on another to listen for changes on it then we can do some stuff on the main object. Why do we care? well mostly to invert control, this is another design pattern, the most famous is dependency injection (spring anyone?) but the other way of inverting control is through events. How is this possible? when an object requires the other to change something it doesn’t invoke the operation directly on the object, instead it fires an event, then the object listening can do some stuff. This pattern enforces decoupling since nothing happens if we don’t have an observer since it is not required to have one in order for our code to work, we just notify and if no one listens no problem, our job is done to the point we notify.
This has also something to do with the question: Who really cares if something changes on me?
let’s have this scenario: You have a person object that is displayed on a form (the form is done in swing), then some external code beyond our control changes the person object. How do we change the form to reflect the actual changes?
we can add the refresh operation to the external code. BUT that would mean that we need to add some functionality and add a rigid dependency on the external code to the view. BAD
we can add the refresh functionality to our person object. BUT that would impose a dependency on every person object. WORSE
we can add an event to the person object so that it can notify whoever who wants to be refreshed without knowing who is actually listening. Mmmm… a little verbose but this is the point of event driven inversion of control.
Lets get to the root of the implementation.
First lets think of how to do this. In java we use classes (anonymous and inner are most common) on C# we use delegates (but there is an actual event construct for that)
Lets focus on java:
for this to work we need:
for starters we will create the interface (believe me it will be easier)
public interface Listener { public void handleEvent(Object eventArg); }
We dont need to create an EventArg we will use Object for now
Then finally the EventObject, this is simply a wrapper for a list, and the fire event will just do the handleEvent method on all the elements on the list:
public class Event{ private List<Listener> listeners = new ArrayList<Listener>(); public void addListener(Listener l){ listeners.add(l); } public void removeListener(Listener l){ listeners.remove(l); } public void fireEvent(Object eventArg){ for(Listener l : listeners){ l.handleEvent(eventArg); } } }
And thats it… is it?
well how do we use it anyway?
in the class that is observable we need a reference to an event for every event that we need to launch. lets retake the person example.
class Person{ …. some stuff private Event personModified = new Event();
…
public Event getPersonModifiedEvent(){ return personModified; } // no setter we dont want that.
}
ok so now when we change a property we just send the event, right?
class Person{ … more stuff public void setName(String name){ this.name = name; personModified.fireEvent(this); } … }
That simple line will notify every listeners that a change occured without knowing who they are.
How do we listen to changes?
check this out:
class Meh{ … some complex code. public void initOrWhateverThatRunsOnce(){ Person p = ______ // whatever way you have this object. p.getPersonModifiedEvent().addListener(new Listener(){ public void handleEvent(Object eventArg){ refresh(); } }); }
….
private void refresh(){ …… // some really complex code you must write. }
since it is an inner anonymous class it has access to all the methods outside it, this is the power of inner classes but you may implement a different solution, this is just the basic way it is used, even swing uses this as the preferred approach.
Now this is real basic event handling this will work but surely is suboptimal, the main objective here is explaining the idea and how can you implement your own event framework, with more than this. First think about the event parameters, how can we use generics there?, then think about the event object, synchronization, etc. Then think about not returning an instance of Event on the getPersonModifiedEvent method, instead return an interface that just contains the add/remove methods. then use generics on the listeners, etc.
As you can see you can set the limit. and obviously you have the final say on using them or not. I would consider them since its a different way of notifying changes to views and related objects, they can sure save you a lot of problems, and I have seen several advantages: They are easy to test, as they decouple classes they are make other classes easy to test as well, they separate concerns on the classes since every class knows what to listen and are likely to do their stuff right there instead of telling someone else to do it for them.
Ahhh! also, there are some event frameworks out there already, I’ve heard spring has some, so take a look, also the bean spec of the JDK contains something about events.
Happy coding.
ouch
Bueno, lo que uno ve en el trafico.
Lo que me da curiosidad es como puedes darte un golpazo así… digo se nota que iba rápido, pero con tanto tráfico y tan malas calles eso es casi un suicidio, incluso en las autopistas no es muy sano, además de que en temporada de lluvias mas que manejar pareciera que estamos patinando…
En fin, supongo que el cuate de la foto no contó con todo eso y pues pensó que por tener un A6 no le iba a pasar nada o algo así, eso niños… no es cierto, no importa que traigas tienes que tener cuidado…
Por cierto esta es solo una foto de muchos golpes que me ha tocado ver ultimamente, casi casi de uno por día… en que momento chocar se volvió normal??
Recuerdo que hace unos cuantos años le pregunté a un ajustador de seguros como cuantos choques tenia, la verdad no me acuerdo de la cantidad exacta pero si me dijo que pues siempre iban a tener chamba ya que eso nunca faltaba con tanto choque por toda la ciudad.
Downloading article…
Ok, so long ago we came with a complex problem of how to make a swing application model that works and that can be tested efectively, this has proven to be more complex than what we thought at the start.
So this may seem a bit complicated at the start but this is what we managed to acomplish:
The main idea is having everything separated in our swing app and doing a kind of MVC
So we have 4 main components in this model:
So now how do this works?
The idea is that your dependencies look like that. The view depends on the controller and the notifier, the controller depends on the model and the notifier, the model has no dependencies, the notifier has no dependencies as well.
Do something looks weird? how is the view updated? i think you can understand that the model has no dependencies, but shouldn’t the notifier depend on the view?
NO… and thats the whole point.
The notifier and the view have an observer pattern inside, the view observes the notifier, the notifier will relay all the necesary information to the view through events that will be triggered from some external source.
This allows plugability and most important
TESTABILITY
The view can be tested. The only thing it does is relaying user interactions to the controller, so we can mock the controller and assert that the invocations occurs (using fest maybe or by plain java) The controller can be tested we can mock both the model and the notifier, so the controller just do some stuff and in the end notifies. The notifier is even easier, since we can have just mock listeners assigned to it and check that if the class is notified the event is thrown. The model can be tested without any dependency as well…
Why this way?
Well there are a couple of reasons, one of the main ideas is achieving inversion of control and allowing linear dependencies, circular dependencies are hard to manage and often lead to failures in configuration.
– I promise that i will update this as soon as I finish another post about inversion of control using events.
– SideNote: Yes this is MVC the only difference is the “where it happens” on normal MVC the controller updates the view. here is no exception, but the controller just screams that a change has occured and then the view has to update itself.
– I will put a tutorial too sometime.
Downloading image.
Ok, guarden sus antorchas y trinches y no me linchen hasta que exponga mi punto.
La alta definición no es mala, de hecho nada es mejor que tener una pantalla de LCD con una resolución imbecil para ver tus peliculas y programas favoritos, o por que no para conectarla a tu computadora y tener de repente un monitorsototototote de 32 pulgadas o mas.
Lo que está mal en el HD son los mecanismos de protección del mismo. Y como es mi sana costumbre, la victima del día es: (pom pom pom (sonido de tambores))
HDMI o high definition media interface.
Veran HDMI es un cablecito (bastante caro para lo poco que hace) que transfiere muchos datos en chinga a la pantalla. nos permite mandar video y audio de alta calidad para que sea vean chidas nuestras peliculas.
PAUSA!
Pero no se supone que eso ya lo haciamos con un cable VGA? que yo sepa los monitores full HD se conectan por vga, incluso hay una mugre que es el DVI que soporta muchas mas cosas, por que crearon otro cable mas? digo, vga no transferia audio pero estan los cables opticos, que paso aqui?
Señores la respuesta es… control.
AH!!! entonces yo voy a tener mas control sobre mi señal?
NO
NOOOOOOOOOOOOOO
Yo pensé que era una idea para progresar, pero me equivoque, resulta que tiene que ser un cable tan caro y sofisticado por que debe soportar…. ENCRIPCION
Si, la señal de un HDMI puede ir encriptada, y el protocolo para poder intercambiar dicha señal es el HDCP (High definition content protection)
El nombre suena mal.
ES PEOR.
A continuación les va una explicación de que pex.
El cable HDMI conecta a un transmisor con un receptor los cuales estan de acuerdo en que la señal viaje de uno a otro dispositivo sin interrupción ni intermediarios, para hacer esto ambos se presentan el uno al otro y definen un lenguaje en el cual se van a comunicar (como hablar con la F) de esta manera la señal que sale del cable solo llega a un dispositivo.
QUE QUE??? PARA QUE???
Para que no la puedas interceptar, para que no la puedas grabar enmedio y para que esta señal no la puedas grabar a tu compu para que la distribuyas despues con bittorrent :p
— Eso no es tan malo o si?
DEPENDE. En mi caso, cuando juego en mi PS3 de a ratos se le va la señal a la tele… tengo que esperar un rato a que se desatonte la tele o de a tiro quitar el cable y volverlo a conectar rezando por que ya agarre bien.
por que la señal va encriptada y ambos equipos se tienen que presentar siempre que se ven. y eso toma tiempo. si toma mucho tiempo uno de los aparatos pues se sigue de frente (el play 3) dejando a la tele atras con el horrendo flicker.
Eso me pasa por no comprar una bravia.
MAL! por que incluso a algunas bravias les pasa.
Que hacer?
Pues hay dos opciones. usen cables de componentes, o consiganse una tele que sea lo suficientemente rápida para que jurule bien con su ps3 o reproductor de bluray.
Total.
Una vez mas la tecnologia como los cangrejos, inventan algo chido (teles HD) y las echan a perder con restrincciones inutiles (HDCP)…
Nota: ahorita es muy noche pero mañana decoro el post con imagenes y ligas pa que vean que no me los estoy chamaqueando.
Downloading report…
Calentamiento global, lo vemos en todas partes, los polos se derriten mientras escribo esto, los desiertos ganan terreno y .
Las consolas de nueva generacion generan mucho mas calor de lo que cualquiera pudiera imaginar.
No me creen? chequen:
A un mono loco se le ocurrio la idea de demostrar que su PS3 podia generar suficiente calor para poder cocinar carne en el.
Como dicen que nada es imposible y a este cuate le restregaron demasiado la frase en su juventud temprana, el sujeto en cuestion tomó una sierra y abrio su PS3, encima de los disipadores puso una parrilla y VOILA!.
Cual seria su sorpresa que descubrió algo que muchos ya sabian, y si no… preparense para ser iluminados:
Listos?
Los procesadores de las computadoras generan una cantidad IDIOTA de calor cuando se usan a todo su poder.
Ahora el PS3 tiene 7!!! imaginense como arde esa cosa.
Pero no se preocupen tanto, no los va a quemar (mucho) ya que aparentemente los ingenieros que hicieron el sistema sabian lo que hacian… mmm… para relatarlo mejor les contaré una historia.
Era en una tarde cuando nos reunimos a jugar FIFA 09 en el PS3 comunitario, lo encendimos, metimos el juego, cerramos la puerta del closet donde se encontraba el PS3, tomamos 6 controles y jugamos por mas o menos media hora. A la mitad del juego un sonido perturbante como de una turbina sonaba dentro del closet, pero como estabamos muy clavados jugando nadie puso atención.
No paso mucho tiempo despues del sonido de turbina para que el PS3 rompiera nuestra concentración con un mensaje en pantalla que decia: “El sistema esta caliente, o lo apagas o muero”
La cordura vino al cuarto y nos acordamos que el PS3 se encontraba en el closet… en el closet cerrado… en el closet cerrado sin ventilacion.
Abrí la puerta… y sentí el calor en su apogeo. la cosa esa estaba en masa critica, irradiaba suficiente calor como para poner unos tamalitos a calentar o asar unas salchichas o carnes ahi adentro. lo logico que siguio fue apagarlo. y esperar a que se enfriara.
Lo cual nos deja dos lecciones:
Si algo se calienta, es electronico y es CARO. Ventilalo para que no se derrita (algunas cosas no son tan listas como el ps3)
El PS3 es listo hasta eso. te avisa antes de morir y te dice como salvarlo.
Saben que es lo mas ironico? que aunque los procesadores consumen mucha energia, hay algo que puede llegar a consumir mas energia: Los motores del disco duro y del CD/DVD/BD…
Bueno menos mal que el PS3Grill te avisa que puede morir si no lo ayudas, por ahi cuenta la leyenda que hay otra consola que tambien se calienta como loca, pero que solo te dice que va a morir inminentemente, y tiene la delicadeza de solo hacertelo saber con un sutil último gesto:
The red ring of death.
¿Y aun asi tienen dudas de que las cosas se esten calentando globalmente?
Downloading review…
Ok, The witcher, es un videojuego RPG hecho por CD Projeckt (o algo asi) que se ubica en un mundo medieval fantasioso manchado. Algo asi como medio dark, pero sin ser gotico. simplemente manchado.
A que me refiero con eso? pues que simplemente no todas las personas que se encuentra nuestro protagonista son buena onda, sino que son manchadones y pues reaccionan relativamente normal.
Una reseña express: Nuestro personaje: Geralt de Rivia es un “witcher”, un cazador de monstruos a sueldo que pierde la memoria y es llevado a un bastion con camaradas que tambien son witchers, Geralt en vez de retirarse y ser un granjero feliz no solo quiere recuperar su memoria sino tambien continuar con su carrera erradicando mostros. No es de sorpresa que algo inesperado pasa, el bastion en el que se encuentra es atacado por mercenarios que buscan los secretos de los witchers.
Cuento largo corto: Atracan a los buenos, se roban cosas, y pues ahora es tu mision ver por que les robaron y cobrar venganza.
Aunque el juego se siente como un MMORPG tiene ciertas cosas que lo distinguen. Entre ellas el escenario y los personajes que se veian demasiado complejos como para ser alucinados por escritores de videojuego.
Ahora no me mal interpreten, hay juegos muy bien narrados, solo que este se veia que tenia algo raro.
Eventualmente supe que era.
Pues resulta que este juego (que por cierto no esta mal) esta basado en una serie de novelas y cuentos cortos escritos por Andrzej Sapkowski en los cuales a traves de historias cortas describe un mundo fantastico que pedia a gritos ser explotado.
Como muchos otros, este es un juego basado en un libro. Pero no sigue la historia de ningun libro. o al menos eso creo.
Y bien como es que supe esto? pues resulta que creo que hasta la caja del libro lo dice, pero yo no me habia dado cuenta. En fin pues hasta conseguí el libro en amazon, desafortunadamente solo esta el primer libro, se llama “The last wish”, hay una traducción al español con el nombre de: “El último deseo”, pero la verdad yo veo dificil que lo encuentren.
El juego y la novela tienen un aire maduro, tiene temas fuertes y en si me gusta por que incluye problemas no tan comunes en otras novelas y juegos más “family-friendly”, Es curioso, por que no sobreexplota esos temas.
A que me refiero?
mmm… Ya sé, violencia, algunos juegos tienen mucha violencia, ok, la violencia está bien siempre y cuando te ayude a narrar algo, cuando la narración te ayuda a tener más violencia, algo estas haciendo mal.
Si no quedo claro: lenguaje explicito (groserias) no es lo mismo demostrar descontento de algun personaje diciendo una que otra mala palabra, lo que esta mal es decir malas palabras cuando no ayudan en lo mas minimo a expresar algo.
Y asi con todos los temas triquillosos que se van a encontrar. The witcher es un juego y novela que no le teme a estos temas pero no los explota tanto. Claro esa es mi percepción aunque para muchos no dudo que digan que el juego es impudico y la novela demasiado salvaje.
Si pueden denle una oportunidad. Igual y les late. Igual y no.
Download Complete
Sigh…
Before I begin with this post I must question myself: Why do i get in so much trouble?
Nuff said, lets get on topic.
One day I needed to include a chart on a flash animation and seriously I was careless on the complexity of the thing at hand.
First I tried the simplistic approach: Import as an image. The result was a little upseting, the image was imported but for my demise the quality was a lot lower… there were some artifacts on the texts and around the lines there was some aliasing that make the graph look wrong.
I just copy pasted it I swear.
Ok so whats the problem, if you see at the image at its original size you will notice some aliasing. If you still dont see it: here you have it in a side by side comparison:
Look at the category text or the numbers, The 0 in the bottom looks wrong.
Now if it looks wrong now, wait till you animate it or try some crazy stuff…
How do we fix it? Well flash has a way: Setting quality of the imported resources and enabling smoothing
Right click the resource in the library, select properties.
Then in the following screen make it match the way it looks below:
You should notice an improvement in the quality. BUT don’t try to zoom in too much because in the end its a bitmap and it will get pixelated.
But HEY! Probably you want to zoom that chart, and probably you want many more things, What can you do then?
Answer 1: In office make the chart so irrationally big so when you copy it you copy a massive image. Answer 2: Try this little trick.
One little known feature of office is that it can export directly the charts to images.
to do this right click on some empty area inside the chart:
There it is, near the bottom, save as picture option.
Yeah, from here we can save a .png or .jpg. BUT what we really want is a yet obscure format known as: Enhanced Windows Metafile, This thing is actually vector based bitmap hybrid.
Now import the file to flash as you would normally do.
The fonts are imported as text, the graph is imported as many bitmaps.
If you try it with a 3D graph the result is bad to say the least since it works fine only for the text, but no fear all the simple 2D plain graphs are imported as actual vectors! and they can be modified at will in flash, isn’t that cool?
Well that’s it about importing charts.
Well there are also some charting utilities for flash, but its kinda hard to insert them on existing movies, as always it depends on what you need. Need to show off some charts only? then use this tools, there are even some open source, Need to use the charts inside an existing movie? then i would advice to keep it simple and down to just import the resource and animate it manually.
Ok. Hoy llegando a casa me encontre con mi colección de juegos de video, y encontre varios que han trascendido por su excelsa reputación. ¿Cual es esa? … bueno yo tambien me hice esa pregunta, y me arrepiento realmente de habermela formulado en primer lugar.
Pero para no hacer la historia tan larga y generica vamos a tomar una victima… veamos… Este juego esta bien: Izuna legend of the unemployed ninja para nintendo DS (que por cierto ya tiene secuela que probablemente compraré por que soy un idiota).
Veran… usualmente un juego debe de entretenerte, debe de convencerte que tu puedes, que vas a salvar al mundo, que le vas a patear el trasero a tus amigos jugando en modo versus, que vas a ganar una competencia, pero juegos como este proponen todo lo contrario.
Solo te traeran: DARKNESS, DESPAIR, DEATH (oscuridat, dezezperanza y morte pa los que no se les de el ingles).
Si señores, no buscan caerte bien, solamente atraerte por un diseño gráfico agradable e historia interesante, es un bonito paquete, una envoltura bastante llamativa, pero en realidad es la caja de pandora, que una vez que la abras solo calamidades inundaran tu vida y no volveras a dormir tranquilo.
Una vez que la caja se abre, que el juego carga y empieza. Todo esta perdido.
Estos juegos planean todo lo contrario a lo normal, su objetivo, frustrarte, desesperarte, matarte, pero al mismo tiempo intrigarte que si perdiste fue por que hiciste algo mal o por que el juego es cruel, y te encuentras volviendo a intentar, avanzando unas cuantas micras cada vez que lo juegas descubriendo que “si se puede” pero sabiendo que eventualmente te la van a aplicar y vas a perder.
Y aun asi regresas por mas.
Son como esas novias de adolescente que mangonean al pobre novio (Comentario no sexista, si quieren cambien novia por novio y viceversa) y hacen que haga toda su voluntad. Sus amigos entonces preguntan, por que siges con ella si te maltrata tanto, te pone el cuerno y a parte ni te gusta, el pobre puberto solo responde: no se, por que me gusta, CREO.
Asi son estos juegos, aunque en serio pueden llegar a ser MALIGNOS, no malos, MALIGNOS, despiadados (merciless), te dicen tienes que pasar un calabozo de 100 pisos, si mueres vas al piso 1 sin nada de lo que obtuviste, adicionalmente el calabozo entero va a cambiar asi que si pensabas que lo sabias todo pues ni maiz acaba de mutar, ademas para terminarla de amolar, al momento preciso en el que pierdes en el segundo exacto donde todo valio queso, el juego salva tu progreso sin preguntarte para que no puedas simplemente apagarlo y que no pase nada.
Eso… Eso señoras y señores… es crueldad en su máxima expresión.
Imaginense, es como escribir una tarea del colegio (que curro suena eso), en la cual si cometen un error de ortografia la tarea se va a prender en llamas y tienen que empezar de nuevo.
Asi de gacho es.
Esto no solo aplica para juegos de video (aunque en lo personal es lo que mas frustración me ha provocado) sino tambien a peliculas (especialmente si tienen varias partes), Series de TV, Musica, Rompecabezas, Recetas de cocina, etc.
Cosas cuyo fin último es el sufrimiento de sus consumidores y al mismo tiempo jugar un complejo experimento social: si algo es cruel con su usuario, el usuario volveria nada mas para encontrar una forma de autotorturarse y sentir lastima por si mismo.
Desgraciadamente a veces la respuesta es. Si.
Pd. no es que todos seamos una bola de emos, pero es que incluso ante tanta adversidad y crueldad creo que solemos tener asi como en la caja de pandora, esperanza.
Donwload complete.
Primero que nada una disculpa por todo el historial perdido (como si fuera mucho) y por todo el relajo de tener que volver a poner todo en orden. Con suerte esta será la última vez que lo haga. al menos asi de severo.
Por el momento han pasado muchas cosas desde la última vez que puse algo en este blog, tengo muchas cosas que escribir, así que manos a la obra.
– Downloading update…
- Hoy (el dia en el que escribí esto) es 6 de abril, acaba de haber un terremoto en Italia que estuvo bien merol, ya sabanas uno de esos que destruye todo (y para los que prefieren la nota en español), mis condolencias a las personas que perdieron algun ser querido o posesiones en el terremoto…
- Ayer fue 5 de abril, y descubrí que la semana santa es un respiro para la ciudad de méxico ya que las calles estan vacias, y las autopistas llenas, es curioso ver como cambia todo sin tanta gente, fuí uno de los pocos que en vez de escapar de la ciudad me encontraba regresando a ella, buena suerte que eso es raro, menos tráfico para mi.
- Antier fue 4 de abril, y si regresé el 5 pues tuve que haberme ido algun día, no? pues el 4 descubri que las autopistas rectas (sin curvas) son realmente aburridas, Queretaro - San Luis potosi, lo unico que me mantuvo despierto fue que mi auto se hacia como barco en altamar cada vez que un trailer pasaba cerca.
- El dia anterior fue 3 de abril …..
OK no continuaré haciendo la retrospectiva.
Pero algo muy chido que paso fue el 1o de abril, April’s fool, que es como el día de los “santos inocentes” pero en Region 1 (para los gringos y afines) donde se hacen bromas, muchos sitios online hacen bromas y no se puede confiar realmente en las noticias que salgan, especialmente noticias como estas:
En fin lo bueno es que las empresas tienen un momento para bromear el 1o de abril, lo malo es que luego noticias serias pueden ser confundidas. Yo diria que si la noticia es muy absurda casi seguro es un april’s fool, aunque luego estas bromas son demasiado buenas ideas, alguien recuerda burgercraft??? Si Blizzard pusiera tal cosa me cae que volaria hasta Irvine,CA unicamente para comer alla, bueno yo y otros 40 cuates para hacer el molten core combo. lol