Stephen Castro-Starkey

tag: mylife

Small update to the blog -- I no longer show my daily activities on the front page. You'll need to click through to one of the categories to see all that stuff.

I was kind of proud of how easy it was to add this feature -- it's a mix of code and template magic, so I was able to deploy the code without any behavior. Then I updated the home page template and it showed up!

I just moved this blog from my local PC hidden behind nginx to its own thing out in the cloud! It doesn't run behind a load balancer or anything. And in fact, I was able to run just a single script to get everything up and running. Pretty cool. One step closer to making it so anybody can run this thing really simply. Should anybody want to. Ha!

Well this is unfortunate. Today I woke up and the automatic SSL renewal effectively killed my blog. The web listener restarted, and even accepted a few requests. But then all future requests just timed out. Gonna have fun debugging this one!

I'm wondering -- is my blog good enough for now? There don't seem to be any bits of motivation at all to improve it. Wonder why that is? Much to ponder...

✔ My Life Improvement

My only accomplishment today, besides some Diablo IV leveling, was making background jobs run on the server timezone. Needed to happen!

✔ My Life Improvement

Now people can mention a post of mine in their blog and get me to link back to them! I didn't do much besides process microformats and fall back to the title attribute. I knew I was going to do more but wanted to get something going. 😁

✔ Close Exercise Ring

I seem to have closed my exercise ring just by climbing the stairs a few times. Yay!

Oh, and I seem to have uncovered a bug, which I have subsequently fixed, that breaks when I choose just a single activity to complete.

✔ My Life Improvement +...

I can now perform multiple activities in a single post. Oh, and I did some Spanish practice, too, while I was waiting for the build. ;-)

My Life Experiment

My blog is now running on aleph instead of jetty. Interestingly, it uses up a lot more memory. Capping the heap at 340m makes it performant enough. Was able to cap the jetty implementation at 192m.

Perhaps it is more resource efficient in other ways? You can see what I had to change.

I might try out yada next. But it seems to be a lot more opinionated.

✔ My Life Improvement

Doing some memory tuning to see how small of a droplet I can run the server in. Got it down to 192m. Performance was abysmal at 128m. Spent a lot of time garbage collecting.

more inside...

My brain is currently noodling on why I’m using nginx to route traffic to fossil and so forth, while simultaneously allowing mylife to host its own SSL cert, thus losing out on tracking which IP is hitting the app at any given time. Looking for alternative approaches! I don’t want to go deeper into virtual networking but I may have to!

✔ My Life Improvement

Now I get a daily email of activities available to me -- maybe a bit more motivating?

Seems I have been forgetting to commit code. Lol! Everything is now committed. Whoops!

✔ My Life Improvement

I can now delete a post. Nothing motivates one more than accidental creation of something I didn't mean to create. :-)

Seems it is hard wired in us to not want to exercise. So you need to hack yourself to make it happen. That’s what my quest to build this blog platform has been all about! Just on a larger scale. 😀

✔ My Life Improvement

Nobody but me needs to login to the site so I moved that link to the bottom of the page. 😀

Oh, and you can click my name or the logo on the left to go back home.

I feel like I need to write a reflection. How has working on and using this app affected me?

Possibly I will later. But for now I can say it has been a roller coaster of emotions. I go back and forth between hyper focusing on my goals and blaming myself when I burn myself out. Then a spark occurs and drags me back in.

Still missing the social aspect. Not sure how to build it, either technologically or otherwise. But I know it’s critical to keeping motivation going!

I can now add, delete, and update activity configurations. The final step is going to be actually using these configurations to quickly log the fact that I did something.

This activities stuff is taking a while. Wrote up a simple HTML form to add a new activity configuration. This will allow someone to say that a particular activity is available once a week or once a day for now. The cron language isn't perfect, so things like "every other day" seem impossible to say. I'd have to write something custom for that and I'm feeling lazy.

My Life Improvement

Today's work on My Life revolved around making it easier to log in and stay logged in. I realized my phone was purging session cookies basically every day, so I changed the cookie management to set explicit expiration dates. And extend those expiration dates every time you use the app. Therefore, so long as you keep using the app you won't get logged out.

more inside...

Have I really not worked on the blog in so long? I really want to finish the activity feature, as I want to just push a button to say I did a thing. There isn’t much left!

Then I think I’ll add simple images. Tasks isn’t THAT critical.

Made a bit more progress on "New Activity" -- had to refactor the front page to have a "new..." link instead of separate links for each "new" thing I could do. It just didn't look good on mobile! On the new options page I'll add "new activity" or just put the activities directly there. Not sure!

Almost ready to wire up the activity code to the UI! Soon I'll be able to configure and execute recurring activities.

Today's Activities

The morning as a bit stressful with a tornado warning but all is well. Did some things today:

  • ✔ Rowing
  • ✔ Standing Meditation
  • ✔ Wrote some code in My Life to set the foundation for tracking recurring activities (habits)

I can now export the entire blog, including page and post edit history. Very happy about that! I'll still keep my pages checked in so I can easily use a fancy editor to modify them, at least for now, since I'm still stuck on not having any JavaScript.

Getting kind of excited about the next batch of My Life tasks! :-) Gonna allow for the explicit management of habits and tasks next. So far I’m kind of proud there is not a bit of JavaScript in this thing and it runs very quickly!

Made a few styling improvements to the blog today. Suppose I should check in on the task list and see what I can work on next!

I now have a local Nexus repository running that allows folks to download the docker images I publish for My Life. However, the links are all wrong because I don't have it configured properly. It'll get there! I hope? :-) Will set up a link to it soon as I have it all figured out. Or shut it down because it isn't worth it. Likely this is a path I didn't need to tread down, as nobody really wants to run this software anyway except me!

Did a bit of research on what it takes to host the container images for My Life today. It wasn’t the easiest thing in the world! And that’s basically all I accomplished today. Did have some fun playing Baldur’s Gate 3 with my best buddy though! So, a bit of coding and a lot of rest.

Feels fine. :-)

Need to get back on track and find a smaller bite to take.

We have upgraded to JDK 21! I attempted to make this thing work with native image compilation using GraalVM, but that failed miserably. I didn't try too hard, so maybe if I did somehow find the energy to build that skillset it would happen later?

It strikes me that this past week I've been playing fast and loose with the rules a bit too much. Mostly because the stakes are quite low if something goes wrong. So what if folks can't see my blog for a day? Nobody reads it that I can tell.

Looking back over my past posts, I realize I made a conscious choice to stop my TDD discipline for that one task. Fascinating how as the days wore on that conscious choice reinforced an unconscious habit to avoid the discipline.

I think it might be good to imagine the stakes are a bit higher and amp up my discipline again. I'll make a separate "xp" tag as a reminder and hopefully strengthen a new habit!

I never thought I would find a way to test the job scheduler but when I broke it and didn’t notice for a day I realized I had better! So I did.

Wrote a unit test to validate all the schedules generated a next time to run successfully. That made me feel quite safe!

So I guess that five minute task actually took a bit longer. ;-)

How dare my family interrupt my coding with trips to beautiful places in Colombia?

Cache invalidation continues to be a bane. The charts don’t change when the day goes on. Ha! But I keep learning as I use my software. Kind of fun!

Finally added time zone support to the app so now my blog is displaying Eastern Time instead of GMT. You’re welcome. 😜

My latest thinking regarding using my blog to keep myself motivated generated a bunch of change in my task list. Soon the task list will be managed by the app! That is, if my inspiration holds. Ha!

There was one issue with webmention receipt that I found when testing in production. It had to do with using a function that relied on the internal domain/port setup, which was not the right thing to do. Only worked while testing locally. Fun times! Anyway, it should now be working!

It is surprisingly complex to receive webmentions, at least if I want to display some useful information about them on my posts. Have been working on it all day!

So far I can parse some simple microformats2 info and may fall back to open graph if I don’t find anything. Generating a unique ID requires my first use of crypto (for generating hmac hash of a webmention).

Just gotta store them and then build the white / black listing logic. And finally attaching the approved ones to the correct post and rendering them.

Very happy with the new tag management workflows. Not really visible to folks who don’t run an instance but it makes me happy 😃.

Made possible by feedback from my amazing husband! Everything is better with feedback.

Also, cache invalidation is the bane of my existence. There is something to be said about a blanket content cache. Much simpler than what I’m working with. Perhaps in the rewrite of tagging I will switch to that! Not sure.

Fascinating how much my mind is moving with the tags stuff added. Now I’m starting to wonder how often I write about various things. I think the sparklines page is going to be interesting!

We have tags!

Sort of.

Ok so I have written some code but not checked it in. This is what I suppose I would call a “spike solution” but with a fun twist that it’s running against a production database. No idea how that will break things if I roll the code back!

I don’t want to roll it all back. But it wasn’t test driven! So I gotta try test driving it so I don’t miss anything. It was a LOT of functionality.

Also I need it to keep me logged in longer on iOS. Not sure why the sessions don’t last as long.

Yes it appears I absolutely must get the tagging features working. My motivation is a bit low. Didn’t post once yesterday! Though I did close my exercise ring. Ended up doing a few ad hoc meditations as well but those weren’t intended to improve my mental health but instead work with stress I experienced due to my lack of stability.

Feels like the language and stack I picked make it want to be a multi tenant thing instead of many small things running independently.

That is if I want to minimize electricity waste! Will need to see how much memory it takes to run this thing and do some thinking.

Starting to wonder — what will it take to make it super easy for folks to interact with my blog? While retaining control of all their content?

Wondering if “My Life” as a service could become a thing?

And so it came to be that the blog list can now be limited to the most recent X items. I continue to be pleased at how easy it is to add functionality to the blog. Starting to wonder how to make the content management part a bit easier. Like, should folks be able to include pages into other pages? Doesn’t seem that tough!

On that note.. seems it is time for a “view all” button. The feed is getting long!

Sometimes I enjoy coding up the boring stuff. Makes me feel like I’m doing something important even though I’m likely the only person who benefits. Seems my side projects really feed my sense of self importance!

And.. I need to make it so I stay logged in longer! And make it easier to post quickly from my phone!

The new line chart has made me want to post more just to keep the line high! I need to figure out how to moderate it. Maybe set a limit to the amplitude per day?

Good problem to have!

Aaron has some adorable kitties! This makes me want to be able to upload images to my blog now so I can post some more photos of our babies.

By the way, I need to thank him for his patience as I fumble around with all this microformats stuff!

Oh, and the upshot, I suppose, is that the site is now successfully sending webmentions! I need to go find some blogs that accept webmentions and reply for real to one of them.

My good friend John made some excellent suggestions for this app's styling! I hope I integrated them well.

I'm torn -- should I "finish" the webmention stuff so that this site complies with the spec completely? Or should I move into the stuff I'm most excited about? I'd really love to have conversations with other folks on my blog, but that seems to be a long way off! Very hopeful at least a few folks will find this app useful enough that they won't have to go through this pain. 😁

all 294 entries

Work in progress

This site is part of a larger effort to bring more of my digital life "in-house" so to speak. So when something goes wrong I have only myself to blame. Ha!

You can follow along!
No content on this site was generated by AI