#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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 :
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode day 70 :
Tonight, I worked on Rakefiles, and I wrote one for my CMS application, to create database migration files automatically.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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).
#100DaysOfCode 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.
https://redmine.jpages.eu/projects/stopcovidwatch/repository/master/entry/stats_parser.py
#100DaysOfCode day 75 :
Tonight, I advanced a bit in my epidemic curve fitting project (https://redmine.jpages.eu/projects/covidcurves), 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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 :
#100DaysOfCode 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.
#100DaysOfCode 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 :
#100DaysOfCode 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.
#100DaysOfCode 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
#100DaysOfCode 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"
#100DaysOfCode 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".
#100DaysOfCode 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 :
#100DaysOfCode 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.
#100DaysOfCode 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.
https://redmine.jpages.eu/projects/murmuration/repository/master/entry/murmuration.c
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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.
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)