Agadmatorizer

Hello everyone!

Ok, lately I’ve been approaching the fine art of chess, mostly by watching youtube videos on the matter, and with some playing on lichess.org too. So I couldn’t avoid watching tons of video of the croatian youtuber Agadmator, which is really putting a lot of effort in getting people closer to chess, by publishing one or more videos every day.

So if you’ve been watching some of his videos, you might have noticed that aside the obvious personal contribute he puts in analyzing the games, the rest of the videos is generally just showing the moves and maybe adding some kind-of-predictable comments on them. When the idea came to my mind, I couldn’t help it. I *had to* do algorithmize agadmator.

Long story short, I spent three nights developing a web app which receives a PGN game in input and then generates an (fake) agadmator video for it.

I think it’s quite funny, I’ve really been enjoying the making of it and the end result, however it’s obviously improvable.

The link (for chrome or firefox only, desktop only – sorry for that, didn’t have time to optimize it) is here: Agadmatorizer

Of course I don’t think anyone will really read this, but if someone does, and if agadmator does, I hope you enjoyed this webapp, thank you for reading this post and I’ll see you soon.

Crypto bot

Recently I’ve been following the crypto market, which is very fascinating to me. I’ve subscribed to kraken, a popular exchange and put some money in it. After a service outage in the middle of january, kraken’s team decided to cut the transactions fees for a while, thus I took the opportunity to code and test a from-scratch crypto-trader bot.

I have no time to get into details, also because they are not so much interesting or particularly complex, but I’ll say that it uses a combination of some simple and common algorithms widely used in the study of the financial market. The bot actually works, in the sense that it makes trades on some deterministic rules, but unfortunately it is not clever enough to make profit (even without the fees) and barely breaks even.

Anyway, as always, it’s been very fun and instructive to code, as I had to study and learn how the market behaves, how to handle the market data and how to try to predict trends and accordingly set sell/buy points.

Since I’m not posting the code (yet), here’s its debug window:
cryptobot_best

NotesLearn

I recently bought an alto saxophone. It was quite a while I haven’t seriously been playing an instrument, so I came across a little challenge when it was time to read a music sheet. You know, that thing with a pentagram and some notes of various shapes drawn over it.

Since playing a note on the saxophone is not straightforward as it would be on a piano, I actually had two separate challenges: the first was to recognize a note on the pentagram, the second was to play it well (it means play the correct note steadly for some seconds – and in tune).

So I decided to code a little app to aid me doing so. The app is pretty simple: it shows a (random) note on the pentagram, and then listens to the microphone waiting for a note, identifying the pitch and, after some seconds of playing, says if the played note was correct or not. This app has proven quite useful in the process of improving my reading accuracy and speed, and I guess it might be useful to someone else too.

It’s published here: https://dmnk.cloud/noteslearn.

Technical infos

On the technical side, it is entirely coded using Javascript, and has been a cool challenge to code since it was the first time for me interacting with the microphone data on a web app. It uses some advanced Audio features of HTML5, based on the AudioContext component. Recognizing the pitch was a minor issue, obtained by playing a bit with the FFT of the signal, some other challenges included volume thresholding and octave recognition (less trivial).

In the end, the result is pretty usable for my alto sax, even though it may be less accurate if used with other instruments I didn’t test. The piano version is not perfect, for some notes it needs to repeatedly play the key to make the app recognize it. I guess it should work best with constant-volume-notes kind of instruments, like violin or flute, but as I said it was only fully tested with my alto sax.

KangaMex

Hello everyone! It’s been a while since I last wrote a piece on this blog, since that a lot of things changed, but I still want to share some of my experiences with the world.

I’ll be making some brief posts to track some projects I’ve been working to in these almost 2 years of absence.

This post is about KangaMex, a messaging platform which idea is really simple, yet I didn’t find something like it when I needed it. The app is a delayed messaging service, or a service to send messages which will be delivered only at a specified date and time in the future. You write your message, set the unlock date and time, the recipient’s username, and send it. The recipient will be notified that he/she has an upcoming message, but will not be able to see it until the unlock time has come. Very simple, nice way to send delayed messages.

The app is at mex.kanga.life.

Who wants to be millionaire?

You probably know the tv show “Who wants to be a millionaire”. Lately I’ve been invited at the graduation party of a friend, and thought about creating a game for it.

So I decided to create a HTML5 simulation of WWTBAB, complete with webcam support, sounds and introduction video. It has been quite fun, and I’ve been releasing the code on github.

Questions are hardcoded in the index.html file, but it’s trivial to modify them. Recently I’ve added support for images in questions.

I really don’t know if someone can actually make use of it, but who knows?

Just a quick overview about the keys used to control the simulation:

  • [Left arrow] – to skip to next step (video is not skippable by now)
  • [Down arrow] – to unveil the next answer
  • [A,B,C,D] – to highlight the selected answer
  • [Y,N] – when an answer is highlighted, Y makes it correct, N makes it wrong
  • [F] – to switch between the default background or the webcam image
  • [P] – to flash the background to induce some suspance

Github.

Example-link.

A try for a 3D game

Recently I’ve been experimenting a lot with 3D in the browser with Three.js, and although this is my first post about it, there’s a lot more I’m working on about 3D in JS, but it’s involved in my professional work and it’s not time to publish it yet.

Anyway, as usual I like to keep track of my projects here, so I link to this simple game I developed as a joke for a friend some days ago. The game is here, descriptions are in italian but if you don’t understand just click and everything will be fine.

Google Jam of Code

This is the second year I try to have some fun with python and the Google Code Jam.

This year I almost forgot about it, and started the challenge when almost half of the time was gone. Anyway I managed to complete almost half of the problems, which seemed pretty good to me, given that I spent just a few hours trying.

Unfortunately, my last attempt timed out by 3 minutes (out of 8 available) when trying to compute the result, which later proved correct. This reminded me about the importance of performance in my code: a little optimization of the code after my try gave it a speedup of 3x, which would have been enough to submit the result in time.

Anyway, both this and the last year I qualified for the second round. Last year I didn’t pass it, this year I hope to do better.

 

googlecodejam2015