day 53 :
For my "murmuration" xscreensaver project :
- I attempted a first code compilation, and modified the xscreensaver Makefile (work in progress).

- I advanced a bit in my Delaunay triangulation implementation (this uses a LOT of 3-dimensional geometry).

day 54 :
For my Delaunay triangulation C code, I wrote a matrix determinant function and an other to compute a tetrahedron circumsphere (using the formulas given in the link).

Then, I wrote some unit tests, for norm and matrix functions.

day 55 :
This week, I will release a first public version of my colorcheck utility (in Python 3).

Tonight, I added --version and --help options, with the argparse module.

day 56 :
I fixed a little issue in my command line argument parsing, and I completed the setup file with all useful fields.

Now, I still have to understand how to publish the package on PyPI (Python Package Index).

day 57 :
I learnt how to rename properly a directory with Mercurial (hg rename), and I modified some imports accordingly.

Then, I wrote a README file, with Markdown (that I never used before).

The public release should be ready tomorrow.

day 58 :
I released the 0.1 version of colorcheck tonight, available on PyPI :

It is quite simplistic, but I will begin to work on the next version tomorrow.

day 59 :
I made a quick review of colorcheck, to prepare the next version.

The next version will see a complete change. HTML parsing will also be needed, in order to have full information about webpages color contrasts. I will use BeautifulSoup 4 for this (a parsing library I know well).

day 60 :
I worked for my xscreensaver project, and tried to compile my code (in order to execute unit tests).

It is quite difficult if you don't know xscreensaver code and standards well. For example, I discovered that drand48() was not allowed in this project.

day 61 :
I completed the Makefile I will use in order to test my xscreensaver project (and discovered the -D option for gcc).

It is nearly finished, but I still have an issue with 2 conflicting main() functions.

I will finish this next Saturday.

day 62 :
I worked on my Kakuro grid solving algorithm.

It is a difficult task, I could not advance much tonight, but I added a simple method to computer the number of distinct solutions (to identify "impossible grids" for example).

day 63 :
I think I have found a solving algorithm for my Kakuro program and I have started to implement it.

But I have issues with my solve() method, that is becoming too complex.

day 64 :
I am testing my solving algorithm with custom (non-random) grids. It is really too difficult with random grids.

I designed a JSON-based file format for Kakuro grids, and I am adding a constructor in the Grid class to support this format.

day 65 :
My JSON file importer is now functional, I could test it successfully on an example grid.

Unfortunately, my grid solving code does not work for this test grid.

I committed the JSON import code :

day 66 :
I think my data structures for Kakuro grids description are too complex, and I am correcting this problem.

First effect : the word graph construction method (to build a graph indicating adjacencies between words) went from 43 to 28 lines of code.

day 67 :
I have solved the problem I encountered last Sunday (day 61), and I could test and validate vector functions in my xscreensaver project.

I discovered the CU_ASSERT_DOUBLE_EQUAL macro in Cunit, useful when using floating-point arithmetic.

day 68 :
I didn't write much C code today, mostly shell script and Makefile, in order to have a solid base before continuing my project.

The script I wrote will download and extract all needed source and header files to compile and run a xscreensaver project.

day 69 :
I worked with rom (Ruby Object Mapper), for my Sinatra-based CMS project.

I learnt how relations, schemas and migrations work, and I tried to use these concepts for a simple article model.

day 70 :
Tonight, I worked on Rakefiles, and I wrote one for my CMS application, to create database migration files automatically.

day 71 :
I could finally create and test my first migration with commands "rake db:create_migration" and "rake db:migrate".

I have just to clean a bit the code, and I will do my first commit for the backend.

day 72 :
I completed the ROM relation I have just created with methods to get a list of articles, or an article by id (equivalent to a SELECT in SQL).

I tried to use this relation in my controller, but it does not work yet. It will be finished tomorrow.

day 73 :
I discovered how to register my ROM relation in a container, and how to use it properly in a Sinatra controller.

But I have now syntax errors in my HAML file (for a view).

day 74 :
I worked with Matplotlib, to add PNG export for the charts generated in my "stopcovidwatch" project.

I also improved the presentation of my bar charts and searched how to configure xticks with the set_xticks() method.


day 75 :
Tonight, I advanced a bit in my epidemic curve fitting project (, I :

- Saw a difficulty in curve fitting with the Levenberg-Marquardt method.
- Corrected the tests code, and finished the data import part.
- Added a main function.

day 76 :
I worked for my MOS65xx emulator project, and I achieved the following things :

- Fix a bug in monitor mode (it crashed sometimes when entering data).
- Complete the man page.
- Add an helper function to check if the pointer returned by *alloc is NULL.

day 77 :
I used the helper function I wrote yesterday to improve my emulator robustness.
I also made a small change in the CLI mode (use capital letters for digits from A to F).

The first public version of yame (Yet Another MOS Emulator) will be released tomorrow.

day 78 :
After a long day of work, I did not have enough time for a first public release.

However, I added --help and --version options, with getopt_long(). I have only one minor change left, and I will able to release the 0.1 version.

day 79 :
I made my last modification before a first public release of yame (I just moved a config file).

Then, I prepared the Makefiles, adding dist (for tarballs and zipfiles creation) and install rules. I have still a minor problem to solve with paths.

day 80 :
Finally, I could release my first release. I had a hard time because of a bug on the configuration file path.

The files (zip and tarball) are available here :

day 81 :
For my xscreensaver project, I have nearly completed a full-functional (even if it is a bit artisanal) Makefile for my tests, and to build a standalone version of my screensaver.

I have also build my first patch, with the "diff" command.

day 82 :
My standalone distribution and testing systems are now complete. I can now compile my xscreensaver program and the related unit tests easily.

The changes are visible on the link below :

day 83 :
I worked on my Rust mini-project (randscatter) correcting some glitches, and trying to understand warnings given by rustc.

I still can not figure out why 2 functions as labelled as "dead code", even if they are called elsewhere.

day 84 :
I have solved all the warnings. The dead code warning was caused by a bad usage of "use" directive.

I also completed the crate documentation, and understood how to avoid generating doc for dependencies.

Now, it's time to publish on

day 85 :
I have added a file, and improved the Cargo.toml file in my crate, but I have sill a few issues to solve before having a correct package.

I managed to create an account on, and tried the "cargo publish --dry-run command"

day 86 :
My first crate is now ready for a publication in I checked it with the command "cargo verify-project".

However, I have an error when I run the "cargo publish" command : "Couldn't use specified SSL cipher".

day 87 :
I could not find why the "cargo publish" command fails, even after a long search in the documentations of cargo and libcurl. I will publish this crate on later.

However, I published the crate on my forge :

day 88 :
I worked 2 hours on my xscreensaver project.

I could debug, test, and validate my matrices computations functions (i.e determinants for 3x3 and 4x4 square matrices).

Unit tests were useful here, as I had made a silly mistake in the determinant function.

day 89 :
Today, I tested (with cunit) and validated my circumsphere and bowl belonging functions.

Then, I made good progress in my Delaunay triangulation implementation. The init part (a "super-tetrahedron" function) is nearly ready.

day 90 :
I worked on my CMS project (with Sinatra).

I watched a Youtube tutorial about HAML (link below), then I corrected some mistakes I had made in writing my views. I also completed my articles controller to allow articles creation.

day 91 :
After a little bugfix in my articles creation method (the redirection was missing), I corrected additional mistakes in my HAML code.

I can now display a list of articles, and an article given by its id. I should now add articles edition and deletion.

day 92 :
I made good progress tonight, my articles edition method works, and the HAML code seems correct now.

For the articles part, I still have to include a delete operation. Tomorrow, I will work to add another controller, for categories.

day 93 :
Tonight, I made a slight change in my views to use <textarea> for content instead of <input>

Then, I worked on a migration to add a category table, and I studied associations in Ruby Object Mapper.

day 94 :
I studied how to build recursive foreign keys with PostgreSQL, as my categories table must be hierarchical.

Now, on rake db:migrate execution, I have a strange error with Sequel (Sequel::DatabaseError: PG::UndefinedTable), and I will solve it later.

Show more
Sign in to participate in the conversation

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!