Show more

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 :

redmine.jpages.eu/projects/kak

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.

redmine.jpages.eu/projects/sto

day 75 :
Tonight, I advanced a bit in my epidemic curve fitting project (redmine.jpages.eu/projects/cov), 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 :

redmine.jpages.eu/projects/yam

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 :

redmine.jpages.eu/projects/mur

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.

redmine.jpages.eu/projects/ran

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 crates.io

day 85 :
I have added a README.md 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 crates.io, and tried the "cargo publish --dry-run command"

day 86 :
My first crate is now ready for a publication in crates.io. 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 crates.io later.

However, I published the crate on my forge :

redmine.jpages.eu/projects/ran

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.

redmine.jpages.eu/projects/mur

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.

youtube.com/watch?v=ILt6q_o2ht

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.

day 95 :
I worked with Matplotlib axis locators and formatters (especially AutoDateLocator and ConciseDateFormatter), to improve charts presentation.

I have already a good result for one of my charts, and I will continue this task in a few days.

day 96 :
I tried to advance in my curve-fitting project, but I struggled with Python imports.

I still can not run the code and the tests (even if both are correct) with the same syntax in imports.

day 97 :
To finish these 100 days, let's draw some fractals.

I am working on a small command-line fractals drawing utility I had begun 3 years ago, and left behind.

day 98 :
In my fractals drawing project, I have cleaned the code (written in ANSI C), included a Makefile, and I am adding options management with getopt_long().

I will release a first public version on Thursday.

day 99 :
My options management code works. I have studied how to check strtod() and strtol() outputs (in order to reject badly-formatted parameters) but I will include this in the next version.

My code is nearly complete, I will add some documentation tomorrow.

day 100 :
I have just released the 0.1 version of iterate, my fractals drawing utility. Available on ftp://ftp.jpages.eu/projects/iterate/

For the final day, I have added some documentation, corrected a little bug in the main function and completed the Makefile.

Last week, I finished the challenge : code at least one hour a day during 100 consecutive days.

This was a good occasion to advance in my side projects, and to to discover other tools like the Sinatra framework or Matplotlib.

More importantly, this was the occasion to enforce standards in my side projects.

I used a lot of automated unit tests and learnt how to document my code and my programs properly. (1/2)

Follow

For the next years, my main priority in my career will be quality.

I understood, with the dreadful Ferguson COVID-19 model code, how disastrous negligence and
lack of quality standards can be. (2/2)

Sign in to participate in the conversation
Mastodon

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