Again, it has been too long since I posted on this blog. I am still very busy between family, work and my other blog. I wanted to post a short update on my transition back to linux. For the last 5 or 6 years of so, I have been running Windows on my desktop computers. My servers are still all on Gentoo. But it took me too much time to handle issues on the Linux desktop and time was exactly what I…
It has been too long again since I wrote here. But with family, my other blog and work, I did not get a chance to write here for a while. Today is going to be a short update. I recently updated my main projects to use C++26. There is not much I can use at this point, but I have upgraded my compilers to GCC-15 and Clang-20 so that I can access most things. I will probably do some minor updates of…
In the last few months, I have been working on refreshing my Expression Templates Library (ETL) project with modern C++. I am happy to report that I have now finished the refresh. It took me longer than I expected and I also had less time than I expected. But I am very happy about the result. The main change in etl is the use of concepts. Expression Templates are making heavy use of SFINAE. And I…
As mentioned in my last article, I am now using neovim instead of vim. I just wanted to comment shortly on this change. I have been using vim as my IDE for many years now (more than 10 years at least). But at the beginning of the year, I switched to neovim instead. neovim is a fork of vim, so it is quite similar, but it has some very important differences. It started in 2015, after a…
I am happy to announce the release of budgetwarrior 1.1.0. The last release of budgetwarrior was more than 5 years ago. So, once I finished my C++20/C++23 refresh of the code, I decided it was a good time to generate a new release. There has been many improvements in this new version: Many new graphs on the web interface Add support for tracking stock values Significant speed improvements if you…
I can't believe it's been about 5 years since the last update on this blog. For those, who are wondering what is happening, here is a short update. About 6 years ago, I have finished my Ph.D. and about 5 years, I started to work as a software engineer, at Verisign. I am now a Senior Software Engineer, still at Verisign. After I started working professionally, I did not spend much time on my…
I'm happy to announce the release of budgetwarrior 1.0.1. This new version contains a series of improvement over the 1.0 version and some new features. I haven't been very active this last month. I have been working a bit on budgetwarrior for features I needed for my budget. I've also been contacted with questions on my thor operating system and since that point I've doing some work on thor as…
About a year ago, I switched from Firefox to Vivaldi . This week, I decided to get rid of Vivaldi and replaced with Google Chrome. In this post, I'm going to outline the reasons why I got rid of it. Before, I switched to Vivaldi because Firefox was dropping support for XUL/XPCOM extensions and I was using Pentadactyl. In fact, Pentadactyl was the only reason I was using Firefox. It was slow and…
Just last week, I've migrated my Expression Templates Library (ETL) library to C++17 , it is now also done in my Deep Learning Library (DLL) library. In ETL, this resulted in a much nicer code overall , but no real improvement in compilation time. The objective of the migration of DLL was two-fold. First, I also wanted to simplify some code, especially with if constexpr . But I also especially…
I've finally decided to migrate my Expression Templates Library (ETL) project to C++17. I've talking about doing that for a long time and I've released several releases without doing the change, but the next version will be a C++17 library. The reason why I didn't want to rush the change was that this means the library needs a very recent compiler that may not be available to everybody. Indeed,…
I'm happy to announce the release of budgetwarrior 1.0. This is a major change over the previous version. Web Interface Until now, budgetwarrior could only be used in command line. This is fine for me, but not for every body. Since I wanted to share my budget with my girlfriend, I needed something less nerdy ;) Therefore, I added support for a web interface for budgetwarrior . Every feature of the…
I'm happy to say that I've finally put my thesis online and updated my Publications page. I should have done that earlier but it slipped my mind, so there it is! My thesis (Deep Learning Feature Extraction for Image Processing) is now available to download. Here is the abstract of the thesis: In this thesis, we propose to use methodologies that automatically learn how to extract relevant features…
Happy new year to all my dear readers! It has been a while since I've posted on this blog. I've had to serve three weeks in the army and then I had two weeks vacation. I've been actively working on budgetwarrior with a brand new web interface! More on that later ;) Today, I'm happy to release the version 1.2.1 of my Expression Templates Library (ETL) project. This is a minor version but with…
The GPU performance of my Expression Templates Library (ETL) is pretty good when most of the time is spent inside expensive operations such as Matrix-Matrix Multiplication or convolutions. However, when most of the time is spent in linear kernels, performance is not great because this will invoke a lot of CUDA kernels. Indeed, the way it is done is that each sub expressions compute its result in a…
I'm really happy to announce that I just merged support for Long Short Term Memory (LSTM) cells into my Deep Learning Library (DLL) machine learning framework. Two weeks ago, I already merged suport for Recurrent Neural network (RNN) . It's nothing fancy yet, but forward propagation of LSTM and basic Backpropagation Through Time (BPTT) are now supported. It was not really complicated to implemenet…
I've improved a lot the display of my Deep Learning Library (DLL). I know this is generally not the most important point in a machine learning framework, but the first impression being important. Therefore, I decided it was time to get a nicer output in the console for training networks. A network or a dataset can be displayed using the display() function. I've added a display_pretty() function to…
During the first years of my thesis I worked on CTI research project with the American company Verisign, which has also an office near my school. A CTI research project is a project that is partially funded by the Commission on Innovation and Technology (CTI) where a school and a company work together. I was quite lucky to work on this project with the awesome people at Verisign Fribourg. After…
I'm happy to announce that I just merged support for Recurrent Neural Networks (RNNs) into my Deep Learning Library (DLL) machine learning framework. It's nothing fancy yet, but forward propagation of RNN and basic Backpropagation Through Time (BPTT) are now supported. For now, only existing classification loss is supported for RNN. I plan to add support for sequence-to-sequence loss in order to…
I've just finished integrating new features into DLL, my deep learning library. I've added support for an embeddings layer, a group layer and a merge layer. This is not yet released, but available in the master branch. Embeddings are used more and more these days to learn dense representation of characters or word. An embedding layer in a neural network transform labels into a vector. It's…
I'm happy to announce that I've successfully defended my thesis "Deep Learning Features for Image Processing". After four years, I've defended it officially in front of the thesis committed last Friday and then again two days ago I've successfully publicly defended in front of my friends, family and colleagues. I'm now a "Doctor of Philosophy in Computer Science :) I will update my thesis with the…
This last month, I've been reading quite a few blogs about personal finance and I've decided to integrate more features into budgetwarrior. This post is about three new features that I've integrated. It's not yet a new release, so if you want to test this version, you'll have to compile it from the master branch on Git. As it was last time, the values on my screenshots have all been randomized. If…
I'm very happy to announce the release of the first version of Deep Learning Library (DLL) 1.0. DLL is a neural network library with a focus on speed and ease of use. I started working on this library about 4 years ago for my Ph.D. thesis. I needed a good library to train and use Restricted Boltzmann Machines (RBMs) and at this time there was no good support for it. Therefore, I decided to write…
I'm happy to announce the version 1.2 of my Expression Templates Library (ETL): ETL 1.2, two months after I released the version 1.1 . This version features much better GPU Support, a few new features and a lot of changes in the internal code. GPU Support Before, only algorithms such as 4D convolution or matrix-matrix multiplication were computed in the GPU and lots of operations were causing…
A few days ago, I published a post comparing the performance of std::pow against direct multiplications . When not compiling with -ffast-math, direct multiplication was significantly faster than std::pow , around two orders of magnitude faster when comparing x * x * x and code:std::pow(x, 3) . One comment that I've got was to test for which n is code:std::pow(x, n) becoming faster than multiplying…
My Deep Learning Library (DLL) project is a C++ library for training and using artificial neural networks (you can take a look at this post about DLL if you want more information). While I made a lot of effort to make it as fast as possible to train and run neural networks, the compilation time has been steadily going up and is becoming quite annoying. This library is heavily templated and all the…