Saturday, December 09, 2017

Chrome ERR_NETWORK_CHANGED

Chrome kept firing this at me:
ERR_NETWORK_CHANGED

I was saved by this reply
https://askubuntu.com/questions/886107/google-chrome-error-21-neterr-network-changed

Solution: remove docker's network with
sudo ip link del docker0

Saturday, February 13, 2016


¿Qué deberías hacer con tu vida? Nada. No hay nada que debas hacer. Todo ya está hecho. Sabrás exactamente lo que debes hacer... después de hecho. Hasta entonces, olvídalo. Tu vida está siendo vivida. El mundo no necesita de tu ayuda. Si la necesita, lo sabrás, y lo que haya que hacerse será hecho. El universo se cuida a sí mismo. Tu vida es Vida Universal, no es ‘tu’ vida. Así que déjalo ser. Eso es lo que deberías hacer.

- Stephen Wingate

Sunday, January 05, 2014

Petit jeu 3D

Bon ben ça fait longtemps que j'ai pas mis à jour mon blog moi. Bonne Année 2014 !

Ca vous dit un petit jeu en 3D fait avec mon férot +David ?
http://micktaiwan.github.io/voxelgame/

Les codeurs sont les bienvenus.
https://github.com/micktaiwan/voxelgame

Tuesday, November 22, 2011

Weewar

If you know me, you know that I am a big fan of programming games.
My first attempt was AntBattle. But it never took off.

Well I found a very good development platform: Weewar.
Here you can play a great game, and develop your bot (my favorite type of games), thanks to the Weewar API.

My first bot ai_ChuckBot is performing very bad, but uses a very simple algorithm.
My second bot ai_horus will use more advanced techniques.

You can follow the development on GitHub
See you later, and play Weewar while waiting Horus !

Tuesday, November 15, 2011

Developing a programming language

Context free grammar compilers

A few year back I created a relational calculator, that is, a algebraic calculator working on sets rather than numbers, called "Rel". You could do A = {1,2}; B={2,3}; C = AUB (A union B) and it happily answered C={1,2,3}. A*B (intersection of A and B) A in B (inclusion) => false, transitions, etc... It could even output a tree graph (coded by hand, no Graphviz at this time)

I wrote it in C++ with a context-free grammar parser called St-Jean developed by my CRIM teacher Claude Del Vigna.

I never found another so simple to use parser. I mean, look at ANTLR. So powerful. But so complicated. And now my main language of choice is Ruby. ANTLR can compile and generate Ruby, but i is painful. Then Ruby has Treetop. But I never got to use it due to its very light documentation. Well, the search is over, meet Parslet !

Parslet is so cool

OK, I don't want to write another article about it. Just read that:

Parslet is a new "simple parser framework" for Ruby built by Kaspar Schiess. It follows the PEG (parsing expression grammar) style of parsing and its primary goals are to be simple, testable, and to have extensive and powerful error reporting features (something that Kaspar states Treetop sorely lacks).

Calculette

So I wrote Calculette. For now it does almost nothing. With this grammar, you can write:

# Arithmetic

a = 1
b = a+2
c = a/b # a is casted to floated first

# Functions

def cube(a)
a*a*a
endf

# call the defined function
a = cube(5) + 2 # => 127

Developing Calculette is so fun ! But now what ?

Ideas ?

I don't know what to do from there :)
Maybe I will use it to write a programming language that ease the development of artificial intelligences ? Or a Ant game with scripting ? I don't know yet, any idea welcome :)

Saturday, July 02, 2011

Move tree

Move tree

La recherche par "iterative deepening" s'est transformée en une class "MoveTree". Et depuis, je n'ai plus blogué car j'ai amélioré cette classe, avec une moyenne d'un commit par jour. Je me suis aussi amusé avec GraphViz, FicsBot et... Google+.

Bref je suis toujours dessus !

Voici ce que donne un arbre de recherche avec GraphViz.

Performances

J'avais oublié de vous dire dans le post précédant qu'en utilisant la nouvelle technique de vérification des mouvements légaux, j'ai divisé par 3 le temps qu'il met à générer les mouvements légaux ! Mais c'est encore lent, puisqu'en générant tous les mouvements sans pruner les mouvements non légaux je divise par 7 le temps qu'il lui faut ! J'ai encore de la marge....

Je fais donc perft 4 en 1m09 au lieu de 3m14 (alors que n'importe quel moteur le fait en moins d'une demi seconde). Et j'ai gagné 20% de temps avec la nouvelle façon de générer les captures.

Mais le moteur est encore trèèès lent. Et c'est bien cela occupe mon temps en ce moment.

La suite

- optimize moves generation to go to full depth 2
- know where the time is spent (quiesce?)
- do not prunes tactical moves
- 3 repetition rule with hash table
- Finish LMR
- opening book
- Setup a match routine between different versions of MyTeacher to see ELO improvements ! :)
- use mongodb for persistent Hash table ?
- FICS interface