N.Léveillé (b. 1977, France) programs real-time audiovisual and business software, manages projects, coaches programmers, plays and composes electronic music, and occasionally writes about his experiences.


nicolas @ uucidl

A word on my github repositories

March 16, 2014 by nicolas, filed under projects

Historically my programming output has always been largely hidden, first because the code I develop professionally is rarely opensource, as were also my personal projects (Demos, Visualism, Net) or even personal tools.

As you probably have seen, I have started publishing more code on github. In particular my goal is to publish libraries or code that I use in personal or business projects, when they are worthwhile to share to the larger community.

I would also love to see outside contributions of any form: code contributions, comments/criticisms etc..

To help you make sense of the degree of maturity of my public repositories, I’ve been marking my work in progress repositories with a pre prefix, and explorations/experiments under the exp prefix.

All the other repositories, either with no or with another prefix such as uu are those I consider ready for external consumption.


  • uu. : mature repositories
  • pre. : work in progress
  • exp. : explorations / hacks

micros, a playground for demos

December 1, 2013 by nicolas, tagged programming, filed under tools

A little modern playground for writing demos against OSX or Windows, with an emphasis on making it possible to collaborate easily between multiple individuals.

The build system is self-contained, it enforces a strict coding standard with warnings all activated and automatically formatting the code for you.

It standardizes on C++11 and OpenGL 3.2 and targets Darwin/OSX past 10.7 (Lion) and NT/Windows 7 and beyond.

It’s all on github ready to be forked or downloaded

Fork it, and compose your demo inside src/. Start with main.cpp to get an idea.

The runtime will be improved later with some non-essential convenience code for demo making and also user interaction & packaging, which you’ll be able to incorporate within your own repo as long as you’re willing to rebase to upstream, and don’t modify the runtime or build system too much.

The runtime’s API is voluntarily minimalistic, otherwise you would use the APIs directly.

Installing Windows 8 on a 2007 Mac Book Pro

June 28, 2013 by nicolas, tagged log, windows and computers

Sometime in late 2012 I bought my very first Windows OS: “Windows 8 System Builder Edition 64 Bit”.

Apple claims that Windows 8 is not supported on my Mac Book Pro. This makes the installation process a bit more manual than usual.

First, in Disk Utility resize your OSX partition and create a FAT partition for Windows 8. This is important because it guarantees your disk has an MBR partition scheme which Windows 8 can work with. Remember not to create partitions from within Windows, otherwise they may not be treated correctly by OSX.

During the installation process, when Windows 8 will let you select its installation partition, select the FAT one and Format it. This will convert it to NTFS and you will be able to install Windows 8 on it.

I bought a German Windows 8 and to my surprise the whole installation process was only available in German. The language packs are not installed by default on the DVD and you will have to download them later.

Once installed:

  • As it was in German, the first step was changing the language to French/English. This (to my surprise) meant installing a language pack, going to the system language display screen and also clicking on a bunch of buttons to ensure the new config is copied everywhere including the welcome screen etc.. It was not the easiest thing.

  • Installing the boot camp drivers: I had to take my Snow Leopard DVD and locate the 64bit .msi then run it in compatibility mode. Then you can upgrade to the 3.1, then to 3.2 then to 3.3. I will then suggest immediately installing the latest NVIDIA driver unless you like horrible video glitches.

  • Also a trick worth noting, if you want to use the Photo application without moving all your files from your NAS to the Pictures directory, you may want to use the “mklink /J” utility to create a junction.

  • One big remaining issue is poor performance with the Broadcom Wifi card

Now for my general opinion about the OS:

I treat most OS nowadays as commodities and none really offend me in any way. Windows 8 is perfectly tolerable, if only spammy: the Metro apps look like glorified Web pages and often include commercials, which is the main reason why I haven’t spend much time after the novelty faded off.

In addition to that, the new applications that Microsoft ships with Windows 8 such as Courrier (for mail) or OneNote although promising were ultimately disappointing or not finished. Courrier does not support POP3 accounts, OneNote does not support printing, which I suppose is on purpose.

All metro apps really try hard to push centralized services like SkyDrive (storage) or Skype etc… With Windows 8, your computer slowly turns into a service advertisement machine. It may be attractive (if you don’t mind the risks of storing all your personal files in a centralized and externally controlled location) however I also would like it to be a bit less pushy and obscure about it.

One annoyance adds to this feeling that a computer under Windows 8 does not anymore belong to you. Windows 8 will quite often interrupt you in your work telling you it will install updates. No pause or cancel button is anywhere in sight, you must clearly obey. This is a major design flaw in my mind for any device or piece of software.

At all times as a user I should be in control. At none should the machine order me around or interrupt me.

Trace Event Profiling with chrome://tracing and SPDR

March 14, 2013 by nicolas, tagged programming, filed under tools

Knowing more about my code has been a part-time obsession for a couple of years now both at work and outside. Can you really improve what you cannot measure or even visualize?

After some months I had settled with monitoring a certain number of variables in a HTML/Javascript page hosted inside my programs, using the mongoose http server.

However this article from August 2012 made me reconsider writing my own visualization console.

Furthermore, I value very much reusing APIs / protocols (when reusing implementations is not necessary or even needed) and so the trace event profiling API outlined there gave me the needed push to start my own implementation, whose first version I am releasing today: uu.spdr-v0.1.0

It is called SPDR, and allow you to label sections of your code, track the evolution of values with minimum overhead, and importantly in a format compatible with Google’s trace viewer, which almost every one has at their desk in the form of chrome.

The SPDR library is lightweight, compiles for Windows, OS X and POSIX platforms. It is designed to not allocate more memory than you want to use, and supports concurrent traces.

Google’s trace viewer code is also available standalone, which should make it easy to embed in your app.

Changing Things in German

September 20, 2012 by nicolas

The girl I’m living with is not feeling gorgeous this morning, and a light blue to electric blue wallpaper-worthy gradient of a sky is showing through the windows of our living room.

The music collection I gathered digitally for a quarter of a sub-saharan african’s life, including a number of dearly loved unreleased tracks disappeared four days ago in a puzzling software mishap.

As the month of September is turning to a close, it’s a good time to make a little personal update here.

On April 2nd I left a flat in northern Prenzlauerberg to walk towards the office of my new employer in Berlin. Had it been April 1st, I would’ve come to this music software company’s office dressed up as a banker, in order to shake up my new colleagues a little bit.

I had moved two weeks earlier from Paris, doing a little bit of tourism and showing the place around. Berlin was already by then quite familiar, having visited friends a number of times the year before, in part due to mistakes made while booking flights. For a month or so I lived with the ghost of an actress-in-making, surrounded by photos, books and weights in a sublet behind the Mauer park. The location was perfect with a 24h Kaiser’s, the park and its flea market and at walking distance from work.

Living in someone else’s place and having to know their lifestyle choices is not particularly enjoyable, and the only contacts with her were through anxious emails repeatedly asking me if everything was ok and if I could forward stacks of mails to her current address, since she was too cheap to ask Die Deutsche Post to do it.

Living in someone else’s place is also not ideal when trying to open a bank account or subscribing to a mobile phone service. Well that latter part went quite alright actually, Simyo delivered the SIM card promptly. ING-DiBa however was another story. It has been a very German experience of exchanging dozens of letters with what claims to be an online service.

To assure a future client’s identity ING-DiBa uses Deutsche Post’s authentication service called Postident, where you are expected to stand in line, walk to the woman in her 50s who will then proceed to give stern looks at your passport, your signature, and your face. I had to sign twice, since my first signature was not similar looking enough, and she did complain about the beard I’m displaying nowadays and which is absent from my passport’s picture. For the first time I had a glimpse at how diligent people here can be when following rules.

Shortly afterwards, it was time to look for a real flat. The plan was easy to figure out: search for 2-rooms south-facing top-floor flats on immobilienscout24, draft emails in the most perfect german I can write, visit appartments. I signed at my third visit. Not because the place was perfect. Rather because it was perfect-enough. It came as is often the case with an entirely empty kitchen, and for those that don’t know, empty in Germany really means empty. It took me three long visits outside of town to settle on a cheap, easy to install kitchen sink, one that would require a minimum amount of sawing/cutting/drilling to setup. Only after drilling the stainless steel surface of my UDDEN sink and assembling its tap, I started to feel I got ahome again.

Until our real move in August I lived in between Berlin and Paris, with minimal furniture and a lot of Skype sessions. A choice I originally made so that I could judge my new city and company and decide whether it was right for me, and also to leave enough time for her to finish what she had to do in Paris.

In the end my 6 month trial period was confirmed and I was more than willing to continue working here. My work colleagues all have different perspectives and personal life stories, coming from very different backgrounds and histories either as choreographers, artists, sound engineers, demo-sceners. Many come from outside Berlin either in Germany or outside (USA, France, Taiwan, Sweden, Spain, Canada…)

Making the most out of what I have at work is motivating. A short 25min walking commute makes it easy to get away, and I like the relaxed atmosphere of Prenzlauerberg. Exactly what I was looking for in the first place. Finding excellent cheese is not easy, and we are under the Bio/Organic cult’s regime, which makes it hard sometimes to get excellent tasting vegetables (my contrarian self loves the look on people’s face when I tell them I’m actively looking for non-bio products) however nothing’s really difficult to find. Besides a good bakery close-by. Oh and don’t get me started on the “Asian” food culture here!

By the way, if like me you are trying to recover some deleted files, give PhotoRec a shot. It’s an amazing little piece of software.