On Twitter I stumbled across the #100DaysOfCode challenge. The idea is writing at least an hour of code for the next 100 days. To refresh my existing knowledge and learn something new I decided to accept the challenge. If you want to join me have a look at Alexanders post about joining the #100DaysOfCode.

100 Days Of Code - Log

Below you can find the daily log of my coding journey. If you are interested in the challenge and want to stay up-to-date let's connect via Twitter.

Day 38: September 18, Friday

Today's Progress: Today I made a few small improvements to Plaudern, a standalone solution for managing website comments, like redirecting to the homepage after a successful login. I also made some progress at the "Functional Programming" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts: Twitter is really a great source to explore tech trends and useful resources. Today I stumbled across a few great websites for free illustrations.

Link(s) to work:

More References:

Day 37: September 17, Thursday

Today's Progress: Today I added a login form and a loading dialog to the Angular webinterface of my app for managing static website comments. I will use the evening to make some progress at the "Functional Programming" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts:

Link(s) to work:

More References:

Day 36: September 16, Wednesday

Today's Progress: Today I prepared the Angular webinterface of my app for managing static website comments to handle authentication and made some progress at the "Functional Programming" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts : Doing website authentication right is not a piece of cake. There are so many pitfalls and things to consider: CSRF, sessions, captchas, storing credentials, password recovery, preventing (distributed) attacks, 2FA and much more. In my opinion one should stick with the best practices and proven standards to counteract this and avoid rolling out a custom solution by all means.

Link(s) to work:

More References:

Day 35: September 15, Tuesday

Today's Progress: Today I made some progress at the "Functional Programming" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts : I have been quite busy the last days because I bought a new laptop and had to setup the new system and prepare my working environment. I picked the HP ZBook 15V G5 Mobile Workstation with a 6-core Intel i7-9750H CPU, 32 GB RAM and a 4K display and so far I am pleased with the choice. As always I had a few minor problems at first like getting my 4K multi-monitor setup running at 60 Hz with the Thunderbolt 3 dock I bought with the laptop but after some fiddling I have been able to fix these problems. I hope to pick up speed again with my coding journey tomorrow.

Link(s) to work:

More References:

Day 34: September 14, Monday

Today's Progress : Today I completed the "Object Oriented Programming" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp and started with "Functional Programming".

Thoughts:

Link(s) to work:

More References:

Day 33: September 13, Sunday

Today's Progress: Today I made some progress at the "Object Oriented Programming" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts:

Link(s) to work:

More References:

Day 32: September 12, Saturday

Today's Progress: Today I published a blog post about the cheapest hardware setup to get you started with web-development and made some progress at the "Object Oriented Programming" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts:

Link(s) to work:

More References:

Day 31: September 11, Friday

Today's Progress: Today I made some progress at the "Object Oriented Programming" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts:

Link(s) to work:

More References:

Day 30: September 10, Thursday

Today's Progress: Today I made some progress at the "Object Oriented Programming" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts:

Link(s) to work:

More References:

Day 29: September 09, Wednesday

Today's Progress: Today I completed the "Basic Algorithm Scripting" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts:

Link(s) to work:

More References:

Day 28: September 08, Tuesday

Today's Progress : Today I have been quite busy but at least I made some progress at the "Basic Algorithm Scripting" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp. I also setup a Wireguard VPN server on a Raspberry Pi 4 for better VPN performance when working as a road warrior.

Thoughts : In comparison to other VPN software Wireguard has been really easy to setup. The performance is amazing, especially when I compare it to the previous AVM router + IPsec VPN based solution. I cannot measure any difference during speedtests with VPN enabled and can saturate the full bandwidth of my internet connection with 106 mbit/s upload and 46 mbit/s download.

Link(s) to work:

More References:

Day 27: September 07, Monday

Today's Progress: Today I worked on the server configuration for deploying my app for managing static website comments: To allow the Angular router to do its work I had to change how 404 errors are handled on the gin-gonic backend.

Thoughts:

Link(s) to work:

More References:

Day 26: September 06, Sunday

Today's Progress: Today I added support to publish/revoke comments in my app for managing static website comments and improved the UI using Angular Material.

Thoughts:

Link(s) to work:

More References:

Day 25: September 05, Saturday

Today's Progress : Today I added better state management to my Angular app for managing static website comments using NgRx.

Thoughts : There are quite some balls to juggle with when starting with Angular like TypeScript, Components, Observers, Angular Material, State Management with NgRx using Stores, Reducers, Actions, Effects or something completely different. How to handle routing and authentication, environment configurations, simplifying debugging and testing and much more. So far my experience is better than with React though. Mainly because it is a more opinionated and extensive solution. So at least you know which balls you have to juggle and do not spend too much time in thinking about how many and which balls you have to juggle. I like it so far.

Link(s) to work:

More References:

Day 24: September 04, Friday

Today's Progress: Today I totally went down the rabbit hole. All started with thinking about how to manage state in my Angular app for managing static website comments.

Thoughts : I think it is quite distressing how bad many websites, web apps and especially single page apps (SPAs) fail at managing state. There are so many pitfalls and race conditions under the hood waiting to occur. My experience is that even software developers with a few years experience are often not aware of the problems caused by failing at managing state. I think I should definitely write a blog post about this topic on my blog or at least publish a resource list with great existing articles to read about managing state.

Link(s) to work:

More References:

Day 23: September 03, Thursday

Today's Progress : Today I added Angular Material to my app for managing static website comments. Additionally, I made some progress at the "Basic Algorithm Scripting" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts: It has been really easy to start using Angular Material in an existing Angular project. The docs are quiet good. Thanks to Twitter I found more helpful websites like Indie Hackers or the Hemingway App today.

Link(s) to work:

More References:

Day 22: September 02, Wednesday

Today's Progress: Today I mainly worked on my app for managing static website comments: I added support to sanitize user input, improved the Angular development environment for faster development by adding a proxy config, improved the styling of the webinterface and added routing to show comment details. Additionally, I published a blog post: How to run a webserver for development in seconds. I will use the evening for some progress at freeCodeCamp.

Thoughts: I really enjoy working with PhpStorm and Angular. The learning curve is not too steep for me. Of course, I already have years of experience in web development and worked with TypeScript before. But I think the Angular docs and the CLI with code generation greatly simplify everything.

Link(s) to work:

More References:

Day 21: September 01, Tuesday

Today's Progress: Today I added support to receive comments via an HTTP endpoint in the Angular frontend of my app for managing static website comments and published a blog post about 72+ Great Sources for Web Icons. I will use the evening for some progress at freeCodeCamp.

Thoughts :

Link(s) to work:

More References:

Day 20: August 31, Monday

Today's Progress: Today I finished the "Debugging" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp. In addition, I worked on the Angular frontend of my app for managing static website comments and added support to show comments.

Thoughts: Thanks to Angular I had my first contact to RxJS and its observables and operators.

Link(s) to work:

More References:

Day 19: August 30, Sunday

Today's Progress: Today I added an Angular frontend to my app for managing static website comments and finished the "Regular Expressions" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts: I like that many popular frameworks like Angular or React nowadays come with a CLI to initialize new projects and generate code scaffolds.

Link(s) to work:

More References:

Day 18: August 29, Saturday

Today's Progress: Today I completed the Angular tutorials about routing, data handling and forms and will use the evening to learn about deployment. I also made some progress in the "Regular Expressions" section of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts : I have written down some ideas for blog posts which came to my mind because of questions on Twitter. For a long time I did not really understand the hype about Twitter but recently I started to like it, especially after diving deeper into the dev community. I also appreciate how international it is compared to Facebook, Instagram etc. It is really easy to get in contact with people interested in the same topic from all around the world.

Link(s) to work:

More References:

Day 17: August 28, Friday

Today's Progress: Today I added multi-language support to my website and made some progress in the "Regular Expressions" section of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts : I am excited to see how my multi-language website will perform in the next months. I am running websites in German language for German visitors for years but have no experience with international traffic.

Link(s) to work:

More References:

Day 16: August 27, Thursday

Today's Progress: Today I finished the "ES6" section of the "JavaScript Algorithms and Data Structures Certification" and started with "Regular Expressions" at freeCodeCamp. I also started with Angular and created the sample app.

Thoughts: Thanks to Twitter I found Responsively, an app which greatly simplifies developing responsive websites and started backing it via Open Collective.

Link(s) to work:

More References:

Day 15: August 26, Wednesday

Today's Progress : Today I worked on my app for managing static website comments: I made the database configurable, added an author field for comments and support to notify about new comments via webhook. I also made some progress at freeCodeCamp.

Thoughts: No thoughts today.

Link(s) to work:

More References:

Day 14: August 25, Tuesday

Today's Progress : Today I added support for config files and cli commands to my app for managing static website comments. I even made some progress at freeCodeCamp.

Thoughts: No thoughts today.

Link(s) to work:

More References:

Day 13: August 24, Monday

Today's Progress: Today I made some progress on the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp and worked on my app for managing static website comments: Comments are available to the frontend now and I also added support for cross-origin requests.

Thoughts: Rate limiting on a bigger scale is quite an interesting topic.

Link(s) to work:

More References:

Day 12: August 23, Sunday

Today's Progress : Today I added support for saving to / reading from database to my app for managing static website comments and made some progress on the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts: Read some good articles about handling persistence in general and handling persistence in Go specifically.

Link(s) to work:

More References:

Day 11: August 22, Saturday

Today's Progress: Today I added the first actions to my app for managing static website comments and made some progress on the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts: Did some thoughts about "code as a liability" because of a short question on Twitter.

Link(s) to work:

More References:

Day 10: August 21, Friday

Today's Progress: Today I started developing an app to manage comments for static websites and made some progress on the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp.

Thoughts : I had not much time to do some personal programming today. Nevertheless, I did at least a little programming in the late evening and during a train drive.

Link(s) to work:

More References:

Day 9: August 20, Thursday

Today's Progress : Today I made some changes to my static website generator to support multi-language websites and page redirects. I also started to move some pages of my website and created redirects to prepare it for multi-language content. Will use the evening for some progress on my freeCodeCamp certification.

Thoughts: Time is really running today.

Link(s) to work :

More References:

Day 8: August 19, Wednesday

Today's Progress: Today I completed the "Basic Javascript" chapter of the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp and read some articles about recursion and how to think recursively. I also restructured some of my Golang projects according to another project layout.

Thoughts: Thinking recursively is still one of the tougher challenges for me. My thoughts start running in circles and my brain starts cooking.

Link(s) to work:

More References:

Day 7: August 18, Tuesday

Today's Progress: Today I refined my profile at various job portals for freelancers. I also learned about Github actions and created a workflow to build a project and publish artifacts. I will use the evening to complete a few steps in the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp. P.S.: Published my Gitea backup script for docker.

Thoughts: Feels like the job market for IT freelancers in Germany has been hit by Corona.

Link(s) to work:

More References:

Day 6: August 17, Monday

Today's Progress : Today I created an app to get sunrise and sunset times via an HTTP API. I also started with the "JavaScript Algorithms and Data Structures Certification" at freeCodeCamp, read multiple articles which compared React, Vue.js and Angular and spruced my profile at Stack Overflow.

Thoughts: Although React and Vue.js have far more stars at Github than Angular I still prefer Angular because the job market for Angular seems better, it's backed by Google and it's a complete solution in a single package - perfect to get work done. It also uses TypeScript and having a type system is a good thing in my experience.

Link(s) to work:

More References:

Day 5: August 16, Sunday

Today's Progress : Today I solved 3 more projects and finally completed the "Responsive Web Design Certification" at freeCodeCamp.

Thoughts: I am satisfied with the project results and happy to have the certification completed. Slowly it started to become boring, and I wanted to try something new.

Link(s) to work:

More References:

Day 4: August 15, Saturday

Today's Progress: Today I completed the second project for the "Responsive Web Design Certification" at freeCodeCamp and spent the rest of the day working on a solution to improve the deployment of my static websites to AWS S3.

Thoughts : I am not satisfied with my progress today, because I spent too much time on improving my AWS S3 deployment. I hope this will pay off and save me time in the future. At least I have a good solution now which is automated, less error-prone and greatly simplifies defining custom metadata (headers) on S3 objects.

Link(s) to work:

More References:

Day 3: August 14, Friday

Today's Progress: I completed 3 courses at freeCodeCamp : "Applied Accessibility", "Responsive Web Design Principles" and "CSS Grid" of the "Responsive Web Design Certification". Furthermore, I completed the first project at this certification and created a tribute page about Elon Musk. In addition I created an app to forward contact form submissions via webhook.

Thoughts : I learned a lot in the 3 courses at freeCodeCamp. They were easy but I just had forgotten so many things and it was a good refresh. I am also very happy about how the browser support for all these cool features has improved. It got obvious I worked more at backend code than with frontend code in recent time.

Link(s) to work:

More References:

Day 2: August 13, Thursday

Today's Progress: I created an app to notify about filesystem changes via webhooks. I also completed "Basic HTML and HTML5", "Basic CSS" and "Applied Visual Design" of the "Responsive Web Design Certification" from the freeCodeCamp.

Thoughts: I wrote more code than yesterday and could reuse some code to speedup project setup. The first freeCodeCamp courses were pretty easy, but I wanted to start at the beginning. The course about "Applied Visual Design" was very helpful to refresh my design knowledge, especially color theory, linear-gradient(), repeating-linear-gradient(), transform and all about css animations and keyframes.

Link(s) to work:

More References:

Day 1: August 12, Wednesday

Today's Progress: I created an app for dynamic wallpapers.

Thoughts: This was pretty easy. I did not write much code actually. Most of the time was spent upgrading my local Go version, investigating the golang-standards/project-layout, writing a build script to create executables for multiple platforms and checking the code of the dependencies I used in the app. I also learned where Windows stores the wallpaper files ("TranscodedWallpaper").

Link(s) to work:

More References: