Matt Ambrogi

Recurse Center Weekly Recap #3

I was in Breckenridge on a snowboard trip all week. I didn't code much. Even though I had this trip planned long before I decided to do RC, I felt some self induced anxiety, maybe even guilt, missing a week of work. I don't want to waste any of the time I have to progress, learn, and connect with batch-mates. But I had a great time, I love snowboarding, and giving that trip up just for a week of work would have been the wrong call.

So, anyways, I don't have much progress to report. Knowing I wouldn't have much time, my goal for the week had been 1. To finish up my first basic React/Django app and 2. To get through some of the React materials I wanted to read. Namely, all of the React sections from the Full Stack Open course.

I didn't quite get there. I worked on the blog app on the flight out. I added a few features, including:

It was a pretty productive flight. This app is really supposed to be a simple toy just to teach myself the basics of React. All in all, it's served that purpose very well. But I want to move on as fast as possible to work on something I'm more excited about.

So I'm shooting to finish the blog app tomorrow (Week 4, Monday). The last feature I want to add is the ability to navigate to blog/user/example-user-name and see a list of all posts made by that user. I experimented with a few ways to implement this. I'm not quite sure which is the cleanest way to do so. On that note, I'm hoping I can find someone to help review some of my code Monday or Tuesday.

I don't have a next project in mind yet, so I'll try to use Tuesday to finish reading as much of the Full Stack Open material as I can. I'll do this while I mull over some project ideas. Ideally, I'd like to start a new project with React on the front-end and Django on the back-end by Wednesday. The goal is just to get more experience with React and DRF. So I'm looking for something I can feasibly get done in a week or so.

After that, I want to allow myself to start whatever project, with whatever stack, sounds most exciting to me. Right now I'm thinking that might involve something with training and deploying a model. I'm also interested in building another monolithic Django app that does something cool.

I came into this first project thinking I would learn a lot about DRF. Instead, it ended up mainly serving as a React crash course - and an effective one. I'm happy I learned about components, passing props, hooks, state, router, etc., by trying to make something, as opposed to reading all about them, first. Now I'll be able to revisit that intro material, know what I care about, and get through it quickly.

I'm hoping that by the end of this coming week, I'll be on my way to finishing up another simple, but more interesting app and that I'll feel I've started to get a good grasp on the basics of React.

As of now, to be honest with myself, I don't see much point in using React for the things I want to build. If I had never heard of React and you had me build an app with it and then again with just Django/templates, I would without a doubt drop React and use monolithic Django. It is shocking how much easier it is to build so many things in Django - specifically things like permissions and filters. Not to mentioned, not needing to pass props around from component to component.

However, I think I am biased here; mainly because I am currently doing all of these things for the very first time in React and teaching myself. Once I've done things, for example setting up a globally accessible user state, a few times, it won't be painful anymore. I'm also biased because right now I'm not building anything with a terribly complex UI (where React shines). Instead, I'm more interested in what I can make happen on the backend (although what I previously considered back-end work is being challenged by React). So on one hand, I might take the approach of focusing on getting good at React and seeing how my thoughts evolve. On the other hand, I might take a functional approach. Which would mean just building what I want to build with the tools I have. And then, only learning something new when I need it. And that's what a few other's have advised me to do. For now, I'm committing to one more project with this stack. I'm curious to see how my thoughts evolve.