22 nov 2013

Outlast (PC) [review]


I finished Outlast about 3 weeks ago, and finally decided to write a review. I didn't do it before because this game was so... so... (/me is speechless) It was the kind of survival horror I love and I haven't seen in years. Even though I'm more into ghost/spirit stories because intangible enemies are the ones that scare me the most, this game had the same effect on me. You see, Outlast "monsters" are as bad to encounter as any Fatal Frame ghost.

The things you'll find in Outlast are the things real survival horror is made of.

Charla abierta sobre Firefox OS - Jueves 28 de Noviembre (Córdoba)

19 nov 2013

ADOPTA, no compres

Dos videos explicando por qué deberías adoptar un perro en vez de comprarlo, si estás pensando en tener uno.


16 sept 2013

Mobile-first responsive menu without Bootstrap

I found this useful Codrops' tutorial for creating a responsive menu that looks good in mobile, tablets and desktop. It is a very complete and includes a beautiful design, but there were a lot of things I had to change from it in order to adapt it to my needs. For example, I didn't want to use that design (I was looking for a Bootstrap Navbar-like menu, but I wanted it to be more flexible, to respond to vertical-align, etc.), I was interested in using a mobile first approach, etc. So here is a base version of a responsive mobile-first menu, so you can add your own pretty CSS to it without overwriting another person's (but remember this doesn't support < Internet Explorer 8).

Here is a jsFiddle with a demo of the complete code. I repeat, this code, including the CSS, just makes the menu functional, it's just a base code, meaning I don't add any extra styles, so you can use your own.

12 sept 2013

Game development competition - Low-level Jam



An interesting new miniLD (game development competition in which a single person must program a game in 48 hours) was presented today. Its goal is to develop (or try to develop) a game using C, C++ or assembly language, so you have the opportunity to have fun while understanding how the computer works. In other words, it's an educational game jam that motivates you to learn more about low-level development (that's why it's called Low-level jam, duh).

You can find all the information you need about it at the Ludum Dare site.

5 sept 2013

Ib [game review]



Ib is a free RPG Maker horror video game that caught my attention when I saw it in the first place of a top 10 games list (I was actually looking for reviews about Mad Father, which I heard it's a great game and was in the third place of that list). Ib is short, I finished it in about 4 hours or less, but I found it pleasant, for an RPG Maker game developed by one person, of couse.

2 ago 2013

elegilegi: un juego para elegir legisladores que votan como vos

Aprovecho la cercanía de las elecciones legislativas para difundir esta genial aplicación, elegilegi, sin más explicaciones porque creo que las del sitio web son bastante claras:


Para más información sobre el proyecto pueden escuchar la entrevista que se le hizo a Martin Szyszlican al respecto.

1 ago 2013

The Walking Dead [game review]



Steam summer sales ended and my wallet is happy about it, but they didn't end soon enough to stop my attention from being caught by The Walking Dead, and I bought it though I was expecting yet another zombie shooter game. I got excited when I found out it was a graphic adventure instead, and as a graphic adventures fan I have quite a few things to say about this game.

17 feb 2013

[HOW TO] Paginate a Django formset

Last month I needed to paginate a Django model formset and I couldn't find the way to do it, but I found posts asking the same question without an answer, so here is my solution:

In the forms.py file: 

class MyForm(ModelForm):
    class Meta:
        model = MyModel
        fields = ('description',)
In the views.py file:

FormSet = modelformset_factory(MyModel, form=MyForm, extra=0)
if request.method == 'POST':
    formset = FormSet(request.POST, request.FILES)
    if formset.is_valid():
        formset.save()
    return HttpResponse('Formset submited!')
else:
    query = MyModel.objects.filter(condition)
    paginator = Paginator(query, 10) # Show 10 forms per page
    page = request.GET.get('page')
    try:
        objects = paginator.page(page)
    except PageNotAnInteger:
        objects = paginator.page(1)
    except EmptyPage:
        objects = paginator.page(paginator.num_pages)
    page_query = MyModel.objects.filter(id__in=[object.id for object in objects])
    formset = FormSet(queryset=page_query)
    context = {'objects': objects, 'formset': formset}
    return render_to_response('template.html', context,
                              context_instance=RequestContext(request))

You need to create the formset with the objects in the present page, otherwise, when you try to do formset = FormSet(request.POST, request.FILES) in the POST method, Django raises a MultiValueDictKeyError error.

In the template.html file:

{% extends "base.html" %}
{% block content %}

Paginated formset

{% if objects %}
{% csrf_token %} {{ formset.management_form }} {% for form in formset.forms %} {{ form.id }}

Name: {{ form.instance.name }}

{{ form.as_p }}
{% endfor %}
{% else %}

There are no objects.

{% endif %} {% endblock %}

14 feb 2013

Sprint Django en Córdoba (23 de Febrero)


El fin de semana del 23 al 24 de este mes se realizan en varias ciudades del mundo sprints de Django, como "una excusa para que la gente centre toda su atención, por un tiempo determinado, en mejorar Django."

Cito el mail del evento de la lista de PyAr:

La idea es que nos juntemos y entre todos aprendamos entre otras cosas cómo es el flujo de trabajo para implementar o proponer un feature o bugfix en Django. No hace falta experiencia previa al respecto, solo llevar ganas y tu portátil, no llevar miedos ni vergüenzas. Planeamos armar una charla introductoria cortísima para entrar en calor y nivelar aspectos básicos. ¡Los esperamos!

El evento se va a realizar en las oficinas de Machinalis, Paraguay 70 (ver mapa), el 23 de Febrero, desde las 10 a.m. hasta las 18 p.m.

Se pueden anotar desde la página del evento en Lanyrd.

Para más información sobre los sprints de Django, pueden visitar el sitio del framework.