As I mentioned in my last post, what I've been doing with the bulk of whatever free time I have over the past ~6 months or so has been building a website. Before I get into detail about why and how I built it, here it is: https://www.weightpoints.plus
Why I Built It
I'm a fairly large man. I'm 6'3" (1.9m) and I've always been fairly muscular/athletic/husky depending on the stage in my life. As a point of reference, when I got on the scale for football weigh-ins in 8th grade I was 6'0" and 196 pounds. By the time I was a freshman in high school (14 years old) I was 6'3" and 240 pounds and for the next 10 years or so my weight would fluctuate up or down. There were times I was up to 250-260 and then when I was 19 I had an aversion to eating (I'm not going to disrespect people suffering from actual eating disorders to compare what I had with their struggle) and got down to 196. I know the CDC indicates that 148-199 is healthy for someone my height, but I can easily tell you that 196 was not a healthy weight for me. The sweet spot should be anywhere from 210-235 for me.
I met my wife in June 2005 (I actually know the exact day), and I was ~240 at the time, which felt like a decent weight, but after a few years of being together I started to put on pounds. My wife has always been a very good cook and for a while I had trouble with willpower and portion control. When we got married in 2008 I was pushing 275-280, and by the time I went to study in England for a spell while in grad school in 2012, I was up to 300 pounds.
While I was in England I walked everywhere. I obviously didn't have a car and the walk was fairly pleasant through much of Oxford and down Cornmarket St, and it ended up being about 2 miles each way. When you combine going to get lunch and such, I generally walked 4.5-5 miles each day. I still hadn't had any revelations about eating healthy or anything like that, so I would have sandwiches for lunch every day, pasta for dinner, cookies after, and other fun stuff. The thing was, though, because I was walking everywhere I ended up losing 25 pounds in about 7 weeks.
When I got back I wanted to try to do something similar so I got a bike to ride outside, I tried exercise programs like P90X and Insanity but none of it worked because I was still eating whatever I wanted thinking that I could replace 5 miles of walking every day with 30-45 minutes of cardio workouts. Side note, is it just me or is anyone else bothered that in the older versions of Insanity that Shaun T's beard is uneven on the sides of his face?
It wasn't until July 2012 when I saw Charles Barkley selling Weight Watchers for men that I realized I probably needed to modify my eating habits, as well. So I signed up for Weight Watchers and started doing DDP Yoga, although it was called YRG back then. The driver for using DDP Yoga was two-fold: the workouts were shorter than P90X, and the intensity on my joints was lower than something like Insanity. This video also didn't hurt with the motivation
I was using their Points Plus program, and from July 2012 to February 2013 I went from ~275 pounds all the way down to 195 pounds. I had finally found something that worked.
I figured that 195 was a good weight at the time, although as I mentioned before it really wasn't, and I figured I'd be okay to go into maintenance mode. This worked great for me, I was chugging right along maintaining a healthy weight for a while, and then out of the blue one day, my points changed. Weight Watchers, without any warning, had decided to do away with Points Plus and switch everyone over to what they called SmartPoints.
I understood the motivation for them to do it, but it didn't help me. I had success with the old system, and my breakfast which amounted to 11 points on the old system was now 15. Combine that with the fact that my daily allowance of points dropped ~10 points or so and this was a no go for me. Luckily I found a couple of sites online that had published unofficial formulas for all things points plus, so I put together a handy spreadsheet so I could track on my own. I did this on and off for years, with my weight hovering in the range of 210-230 in general.
Just prior to the pandemic, in December 2019, we purchased a fairly well-known exercise bike whose name starts with "P" (not naming since they seemingly have trademarked the word as it refers to exercise equipment) and it was a fun and very convenient way to get some easy exercise in. As the pandemic set in I stopped tracking what I was eating as much, as many people did, but because we had the bike it didn't matter as much; the amount of effort I put in on the bike generally offset what I was eating.
I would unofficially track food in my makeshift spreadsheet off and on for a while, but it wasn't until late 2021 that I noticed that the macro I had coded in Excel wasn't actually calculating correctly in the spreadsheet. The formula was correct but for some reason when the foods were being included in recipes the formula was somehow breaking. Since I was removing Excel from my computer and migrating to cloud spreadsheets (that don't natively support macros) and I wanted to add a site to my portfolio, I figured I'd build the site myself.
Building the Site
The plan was to try to build this quickly but to also learn some new tech. Furthermore, I initially was considering using a relational database but trying to figure out how to relate foods and recipes with actual instances of foods and recipes as well as including them all in meals seemed nonsensical. So, at first I tried building the backend in FastAPI using a NoSQL database. I used Beanie and FastAPI Users for general scaffolding with a Mongo database. The plan was to then build the frontend in either React or (preferentially) Vue.
This all worked generally well until I got to the point where I realized I was going to want to search for foods by name, as well as include partial searches. For example, if you want to search for "mayo" it should return all items that include those 4 letters, case-insensitive. The main problem that ended up happening was trying to set up an index in Beanie. It's possible, I'm sure, but as I was messing around with it I started to get frustrated and was already realizing that I didn't want to have to worry about handling authentication tokens, hook in routing, and deal with all of the complicated stuff that can go into building a decoupled frontend and backend.
Django to the Rescue
Ultimately I came to the conclusion that for something as simple, from a user perspective, as I wanted to build there was no need to over-complicate the situation. Vue, Svelte, React, et al. are great tools for building web applications, but the site I was building was effectively meant to be what websites used to be 10-20 years ago: a simple set of documents with embedded forms. There was very little interactivity that was needed, so Django's highly opinionated nature lended itself to extremely fast development.
Without getting into too much detail, since I had spent a lot of time building custom functionality in Python already when I was building it in FastAPI (for example, converting from volumetric units to weight/mass units) I was able to get the bulk of the site up and running in less than a month in my spare time. There was a lot of minutiae that needed to be addressed, but thanks to Render getting the site and database deployed was very simple. It can be found at weightpoints.plus for anyone who wants to try it out.
I started actually tracking my weight on 17-March-2022 and I weighed in at 231.1 pounds. My weigh-in day is Thursday, so as of 4 days ago I was already down to 225.8 pounds. It turns out when you get good cardio in every day and you watch what you eat it can have a decent effect on weight loss. I've been eating a lot more fruit and a lot less candy/cookies/chocolate. I would venture to say that maybe I'm eating too much fruit, but I have a sweet tooth and this helps.
I'll be moving my blog over to my own site at some point in the near future (and I'll be recording a video about setting up a blog in SvelteKit and a headless CMS) and I'm planning on blogging a bit more about my progress going forward. There will be content related to weight loss as well as my exercise routine, but discussion about that will be in a subsequent post.