My only accomplishment today, besides some Diablo IV leveling, was making background jobs run on the server timezone. Needed to happen!
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. 😁
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.
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. ;-)
And now we are back on jetty. Gonna run it a while in a constrained memory environment (192m heap) and see how it goes.
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.
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!
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!
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. 😀
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 post activities! These are things I want to make sure I do often.more inside...
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.
Well my session fix worked perfectly. I’m still logged in on my phone! Yay!!
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.
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)
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.
Reporting on the status of my blog's infrastructure. How much CPU, disk space, and memory is it using?more inside...
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?
re: cache invalidation, a simple cron job every 6 hours to clear all caches seems a decent stopgap. Got it done in 5 minutes!
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!
Now we are passing quite a few webmention tests! It's amazing what you can accomplish when you get a stomach bug on vacation.
Ok, in reference to my post about how hard it is to receive webmentions, I believe I have done it. This will probably be the first test in production.
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.
In which I admit that I chose not to use TDD and why. Trade offs!more inside...
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!
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. 😁
I find myself drawn in many directions!more inside...
As my first blog post I figured I'd write about the blog platform I'm building and how I'm building it.more inside...