# A few things

I am Joseph Basquin.
I live in Orléans, France.

email: here

#music
#photo
#programming

Don't read #tech articles except you really want to.

Some of my projects:
BigPicture
Jeux d'orgues
SamplerBox
Ojourdui

## TinyAnalytics

After having tested many open-source website analytics tool, and haven't found exactly what I was looking for, I started a minimalist project (coded in PHP) that only does this:

• number of visits per day

• display the referrers (i.e. the people who have a link to your website)

If you're looking for a tool lighter than Piwik, Open Web Analytics or Google Analytics, then TinyAnalytics might be what you're looking for.

## Get the reverb impulse response of a church

I recently recorded an impulse response of the reverb of a 14th-century church (more or less the footprint of the sound ambiance of the building). Here is how I did it.

• First I installed a loudspeaker (a studio monitor Yamaha HS-80M) in the church, quite high from the ground. I played, rather loud, a sound called a frequency sweep, that contains frequencies from 20Hz to 20000Hz, i.e. the entire human hearing range.
• Then, in the middle of the church, I recorded this with 2 microphones. Here is what I got:

Quite a lot of reverb, that's exactly what we want to catch with an IR!

• Now, let's use some Digital Signal Processing to get the IR. All the source code in Python is here. If you're into math, here is the idea: a is the input sweep signal, h the impulse response, and b the microphone-recorded signal. We have a * h = b (convolution here!). Let's take the discrete Fourier transform, we have fft(a) * fft(h) = fft(b), then h = ifft(fft(b) / fft(a)).

• Here is the result, the Impulse Response of the church:

Then, of course, we can do some cleaning, fade out, etc.

But what is this useful for? You can use this Impulse Response in any music production software (the VST SIR1 is quite good and freeware) , and make any of your recordings (voice, instrument, etc.) sound like if they were recorded in this church. This is the magic of convolution reverb!

Useful trick when you record your own IR: play sweep0.wav in the building instead of sweep.wav. The initial "beep" is helpful to see exactly where things begin. If you don't do that, as the sweep begins with very low frequencies (starting from 20 Hz), you won't know exactly where is the beginning of your microphone-recording. Once your recording is done, you can trim the soundfile by making it begin exactly 10 seconds after the short beep.

Some related reading in this topic, and this blog post.

## Browsers, please don't kill HTTP

I don't share Jeff Atwood's enthusiasm about HTTPS / encryption. What will happen if HTTPS becomes the standard and if HTTP is considered by browsers as "unsafe"?

It seems to me that then, the web will be separated in 2 worlds: professional websites who can afford SSL certificates and a dedicated team to maintain the certification process ... and the average small webmaster who just has a shared hosting and a Wordpress. The latter will be slowly "pushed out of internet" with the threatening notice Not secure.

Even with the free Let's Encrypt initiative, maintaining HTTPS requires technicity, much more than what the average webmaster has.

Result: if HTTPS becomes the standard and normal HTTP is alerted by browsers as unsafe by default, this will slowly kill amateur content, citizen-powered content.

Welcome to even-more centralized internet. Be sure Facebook and other big content providers will like this.

Edit (2018): I'm finally using LetsEncrypt too... In short, a2enmod ssl ; wget https://dl.eff.org/certbot-auto ; chmod a+x certbot-auto ; ./certbot-auto does most of the work. More to read here.

## "Comme un ciel sans nuage"

Here is some cool and 80s-cheeeeesy French pop we made with my lovely girlfriend:

## Bloggggg...

Many things begin with

Let's start a new notebook!

(Well sometimes the notebook is abandoned after 3 pages, but hmm, let's not think about it). Writing helps to know what you want, what you don't want, and what you've done so far. So I decided

Let's start a blog!

Then I looked at many blog generator tools, and noticed it would be faster to actually write it myself in PHP, rather than downloading every existing solution and pick the best (so hard to make a choice). So I started yesterday evening, and today it's done:

### blogggggg, a blogging platform.

Here is how it looks like:

## Why I finally won't go for open-source analytics tool (for now)

You discovered Google Analytics a few years ago (a webmaster tool to see how many visits on your websites), and used it efficiently. But, you know, Google-centralized internet, etc. and then you thought "Let's go self-hosted and open-source!". And then you tried Piwik and Open Web Analytics.

I did the same. After a few months, here are my conclusions.

Open Web Analytics has a great look, close to Google Analytics, but every week, I had to deal with new issues:

• first I discovered that a gigantic table was growing in the MySQL database:
| owa                | owa_request                   |       4.44 |
| owa                | owa_click                     |       5.30 |
| owa                | owa_domstream                 |     238.28 |
+--------------------+-------------------------------+------------+ 

Nearly 250 MB analytics data in 2 weeks (for only a few small websites), this means more than 6 GB of analytics data per year in the MySQL database! ... or even 60 GB per year if you have 100k+ pageviews. That's far too much for my server. This was (nearly) solved by disabling Domstream feature. (Ok Domstream is a great feature, but I would have liked to know in advance that this would eat so much in the database).

• then, once this was solved, a few weeks later I saw this big table coming again (then I had to reset the JavaScript tracking codes for every website)

• today I've seen that a new table in the OWA database was very big (747 MB in a few weeks!)

| owaa               | owa_queue_item                |     747.92 |
+--------------------+-------------------------------+------------+   
• some other issues: login impossible from Chrome in certain situations, unique visitors count wrong when using PHP tracker (sometimes, each new visit / refresh of the page is considered as a new visitor), time-range menu not displayed at all (display stuck on 1-week range) in some cases, etc.

I'm not saying OWA is bad: Open Web Analytics is a good open-source solution, but if and only if you have time to spend, on a regular basis, on configuration issues, which I sadly don't have.

I tried Piwik very quickly. It really is a great project but:

• it doesn't offer a direct view of what I was looking for out-of-the box, i.e. clear charts for every website à la Google Analytics (I can't really describe what's the problem, but the user interface isn't handy for me)

• maybe there's an easy fix for this, but the interface is very slow

So, conclusion:

### Analytics, unsolved problem.

I'm still looking for a lightweight self-hosted solution. Until then, I'll probably have to use Google Analytics again.

PS: No offence meant: most of my work is open-source too, and I know that it takes time to build a stable mature tool. This post is just reflecting the end-of-2016 situation.

## Somme d'exponentielles concernant la fonction de Möbius

Au cours de mon Master 2, en 2007, j'ai eu l'occasion de considérer une somme d'exponentielles concernant la fonction de Möbius:

$$S(x, \theta) = \sum_{n \leq x} \mu(n) e^{2 i \pi n \theta}.$$

En suivant Maier et Sankaranarayanan, il s'agissait de comparer plusieurs preuves du résultat suivant.

Théorème. Soit $\theta$ un nombre irrationnel de type $1$. Alors pour tout $\varepsilon > 0$, on a $$S(x,\theta) \ll x^{4/5 + \varepsilon},$$

où le type d'un irrationnel $\theta$ est défini par

$$\eta = \sup \{\delta > 0 : \liminf_{q \rightarrow \infty} q^\delta \| q \theta \| = 0 \}.$$

et $\| x \|$ est la distance d'un réel $x$ au plus proche entier.

Le mémoire Sur une somme d'exponentielles concernant la fonction de Möbius contient la démonstration de ce théorème ainsi qu'un contenu (très) introductif aux caractères de Dirichlet, fonctions $L$.