Retrospective: January 2019
I've rediscovered Haroopad's feature, which will show a badge for unchecked checkboxes in markdown files and made use of this to plan the tasks for projects.
PHP: Spreading arguments doesn't work with following arguments, that is the following will not work:
create(...$arguments, $options = );
After using the following shell command to quickly get an UUID to use:
uuidgen | xsel --clipboard --input
... I finally installed a Atom plugin to do this even faster.
I managed to launch a new version of my personal website, which is now using a component-based rendering. The custom controllers have been stripped down, a new Page Builder class has been introduced. Also, the data structure and property retrieval had to be refactor; properties now can use the lazy load method, various sources are possible.
As I realized it's difficult to come back to the project, I started writing tests to not only get an idea of the state, but also to be safe while refactoring certain parts.
After I found out that the project detail pages where not rendering correctly, I extended the content tests further to check for more cases.
Found a better way to get access to the Slim app instance in the tests.
Transfer all pages to the new system, add a Apache RewriteRule to fix a path name mistake, deploy the new site (to a new testing stage first, then live).
Content Aggregation platform
For the Content Aggregation platform, commands have been introduced to perform the actions (whose logic was placed in the controllers before). I used PHP 7 namespace grouping to make the code more readable and shorter. Documentation for the REST API and model data structure has been extended/updated, retrieval of Compound Definitions has been implemented.
Also, I implemented a pipeline to provide a flexible way to process data; now using this only for the retrieval of a Compound, as I was not sure if this is too much. First I had a pipeline using only one single input/output slot, making use of a register to store values that a Processor in the pipeline could have access to. It turned out to be complex and difficult to manage, so I refactored it to really use separate slots for every value.
Started implementation of tests, as I planned to work on Roles; managed to split different areas of the application (app and api) in the PHPUnit test using different configuration files (might use suites and listeners for this later).
Did some refactoring on the example CMS implementation (using React, Redux), by introducing containers (components are separate), extract rendering of children (widgets) of CompoundEdit component. The application is now using a generic component and is able to render the different compound types.
Skills management project
I started work on a new project which allows you to keep track of your skills. Again, it's using the Slim framework (tried to use Symfony 4, but wasn't convinced to continue with it), and the Bulma CSS library.
Being really busy with this, and made quite a progress to make it feature complete (always having the MVP in mind): Users can register, login, are assigned to a plan (which allows to restrict features), can add information. There is also a comfortable administration application, allowing to manage users, and see logs of events (actions). Indeed, having a rich journal of the actions is an important feature of the application.
Finally did some Vue.js stuff again: Rendering widgets (showing skills), which can be customized. Using a custom Webpack configuration, that I've created for another project before.
Prepare for new job
Refreshing my knowledge for the new job, React and Redux, MERN stack, some Django; install and set up React and Redux development tools for Firefox, using the children property to avoid props drilling.
Implementing a small pages management application to get a better idea:
- React, Redux, React Router, React Thunk
- Node.js, Express
- MongoDB (via Docker container), Mongoose
- Zurb Foundation Sites 6.5 CSS library
- concurrency, nodemon
- express, cors, body-parser