#100DaysOfCode 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).
#100DaysOfCode 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.
#100DaysOfCode 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).
#100DaysOfCode 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.
#100DaysOfCode 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).
#100DaysOfCode 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.
#100DaysOfCode 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.
#100DaysOfCode 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).
#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.
#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 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 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.
#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.
Last week, I finished the #100DaysOfCode 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)
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)
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!