KrampusHack 2020 !

To join: go to, register and log in. Then click “Join a competition”.

The game jam is very free and open, there are almost no hard rules. The main point is just to have fun and do something together during the holidays. Below are the rules as I posted them on the site, as you can see they are not very strict. I could still make some modifications in the coming week – so let me know your comments, if there is anything you’re unhappy with.

1. goal: Create a game as a gift for your secret santa.
On Sunday 13 December 2020, you will be assigned one of the other participants and you have to make your game as a gift for them. Each should post a wishlist of features that they would like to see in the game. But this wishlist is not a requirement list – you should tune the game to your giftee, taking the wishlist as well as the person itself into account, and create something that is a nice and thoughtful surprise to them.

2. progress log: Keep an interesting progress record here on the tins website. This progress record is very important, as it will be voted on, and used for determining the winner. During krampushack, your secret santa’s logs will be hidden from you to maintain the surprise a little bit longer.

3. Deadline: Thursday 31 December 2020. End time is midnight in your own time zone. I’m not going to be very strict about time, a few hours off is fine.

4. Dropping out: As is common with game jams, there is always a risk that some people will drop out. Life interferes, you ate a little too much Turkey, or you got that cool new PS5 for X-mas and lost all motivation to do anything else. We won’t be mad. To limit the impact, please let us know as soon as possible, so that we can notify your secret santa.

If your future giftee is dropping out, then you will be notified, your gift will go to the next person in the chain (your giftee’s giftee). You then get the choice of using the original wishlist, the new wishlist, or a clever mix of the two. You’ll have to see what is achievable based on the remaining time. Remember, the wishlists are for fun and inspiration, you won’t be judged on adherence to them.

5. size: There is no size restriction, but for convenience sake I recommend keeping it under 5Mb (zipped). The upload system may have trouble handling larger files. If your entry ends up too large, you have to upload it in your own webspace and send around a link.

6. source: We encourage submission of the complete source code with your entry but this is not compulsory. Of course you don’t have to include the source to Allegro or other publicly available libraries or frameworks

7. Code re-use: You may re-use any code and assets that you are legally allowed to do so: public domain, your own, etc. You do not have to start from scratch, you are allowed to do prep work before, or even re-use an existing game.

8. Allegro & other libs: You are encouraged to use allegro, but this is not compulsory.

Portable non GNU TEMP_FAILURE_ENTRY macro

In addition to that subject Here is a portable macro that can be used in place of TEMP_FAILURE_ENTRY, without GNU_SOURCE (took from stackoverflow):

#define CALL_RETRY(retvar, expression) do { \
    retvar = (expression); \
} while (retvar == -1 && errno == EINTR);
/* call example */
char buf[ 4096 ] = "" ;
int retval = -1 ;
/* ... stripped socket initialisation code ... */
CALL_RETRY( br , recv( s , buf , 1024, 0 ) );

In case you receive a “interrupted system calls” signal, there is a chance that this trick may help / guide you to the answer.

#gdb #socket #linux #redhat #EINTR #recv #send

Cargo Cult Sytem Administrator

And some other types too.

Fun article to read here:

One particularly right: “Asserting that [Technology O] or [Platform L] or [Methodology A] is inherently superior to all others and blindly applying it to all problems. When you make such claims, are you applying science or religion?”

“It’s easy to fall into cargo cult mode.
Just re-boot it, it’ll be fine.” – Michael Janke

Clean cache to reclaim memory without a reboot

Tip submitted by my friend J.K when we were in need of a way to recover reserved cache space without booting.

In root:

PageCache only:

sync ; echo 1 > /proc/sys/vm/drop_caches

Dentries and inodes:

sync ; echo 2 > /proc/sys/vm/drop_caches

PageCache, Dentries and inodes:
(not recommanded in production as it forces a full cache rebuilt. you may still need it):

sync ; echo 3 > /proc/sys/vm/drop_caches

In case you need to do it in a sudo:

echo 3 | sudo tee /proc/sys/vm/drop_caches

Syslog, rsyslogd: change output format to display log level and facilities

If ever you need to sort log messages by their log level yo may need to change the default output format of the syslog.
For rsyslog it’s located in /etc/rsyslogd.conf. Add these lines after the line “$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat” :

$template precise,”%timegenerated% %HOSTNAME% {%syslogpriority%,%syslogfacility%} %syslogtag% %msg%\n”
$ActionFileDefaultTemplate precise

Then restart rsyslogd:
sudo service rsyslog restart

#rsyslogd #syslog #log #loglevel #facilities