..

Beginnings

1 - Goals of the project.

  • The goal of the project is to get back in the habit of learning new things—not just learning but also attempting to learn in public. Lately, I’ve been in a rut, but when I started looking into Rails 8, I started to feel excitement about programming I haven’t felt in forever. So, I am going to be putting out my plans, hopefully in a way that will help keep me accountable and also help someone else learn something, too.

2 - Plans

  • There are several things I want to expand my knowledge on. One thing is that javascript has become fairly complex, and also javascript api’s are becoming more unified. So I am going to be trying to write this application using vanilla javascript mostly, but also trying to use Rails’ turbojs features.

2.1 - Technologies I plan to explore.

  • [[Rails 8]] specifically [[Turbo]], [[ActionCable]] and the [[postgres]] [[ActiveJob]] adapters.

  • [[Nix]] and [[Flakes]] so that I can easily setup and teardown [[development environments]].

  • [[Contnuous Integration]] / [[Continuous Deployment]] technologies using github actions and nix to build [[containers]].

  • I want to try [[podman]] over [[docker]]

  • I want to explore [[AI]] tools to speed up my process. ([[Cursor]], [[ChatGPT]], etc..)

  • After watching [[railsconf 2024]] I am excited to try out [[Playwright]] for testing.

2.2 - The project’s purpose

  • I always learn better by building some sort of tool, over the years I have started and stopped many projects. This time inorder to follow through I am building a tool that I will use as I continue to learn, iteratively adding features as I learn new things or discover different needs.

  • The first application will be a pomodoro timer, and a task list, I already have a few ideas for how I want to differentiate this from other pomodoro timers. I also want to use this to collect data on my productivity so that I can make data driven decisions on how I can improve my productivity.

3 - So far…

  • The first thing I did was configure my development machine with [[Nix]] and [[Flakes]]. My goal here is to have a reproducible development environment that is easy to setup and tear down. I also want to learn how to write [[flakes]] so that I can share configurations with others.

  • Around the same time I began playing with using scaffolding to learn turbojs, I now have a working todolist application but it doesn’t have user specific tasks yet, it’s just one list for all users. This is something I want to add next as I have already tried out rails 8 authentication generato2r.

  • After watching https://youtube.com/watch?v=loTaZAkIZP0 I found out about [[Playwright]] and wrote some feature specs for the todolist application.