Vincent Ritter

Weeklog — July 5th, 2024

It's funny, every time I start writing these I have to open up my projects and go through what I actually was doing so that I can write these.

Scribbles

Not much of front-facing changes here this week, however I've become aware of some speed issues that cropped up over the weekend — sometimes it took a long time to get to the site with up to 8 seconds of waiting. That's not tolerable for me.

The issue that was causing this is that, due to the nature of blogs, there were many requests being made to the blog feeds (the RSS/ATOM feed). However this wasn't cached so it would always happily just do its thing. Every. Single. Time. Multiple. Times. Per. Second.

So, quite simply, I put some caching in front of it all. It'll make sure your latest posts come through in the feeds, and if the same user agent (sometimes the same service requests the same feed multiple times) it will just return a "not modified" message to the client. When you make a new post, it'll invalidate the cache and return it as needed and then keeps it cached.

I made this change over Monday and Tuesday and I observed a CPU usage of around 120% before that date. It now sits at an idle 20% the occasional spikes (which are normal).

Happy with this and things are looking good.

Gluon, and personal apps

This week I dropped a little bombshell... I'm stopping work on Gluon. This has been on my mind for over a year now with discussion happening about this in the background.

I don't want to get too personal here, but know that Gluon has taught me so much over the years which ultimately allowed me to work with Manton on Micro.blog, and working on his apps and bring them cross-platform.

I am not just stopping Gluon though. My personal Apple Developer account expires in August, that means everything I have ever done will automatically become unavailable. It won't affect the client work of course... that'll continue.

I do feel a little sad about it.

The writing has been on wall for me for a while now, with a few blog posts in the past about it (I won't link to them because they didn't age well — and knowing me I probably deleted them last week)... and instead of saying that I'll stop personal app development over the past few months... I thought I should really just let go and finally say goodbye.

Just know that personally, native app development is off my table — I no longer have interest in creating apps for myself.

There are personal reasons for this also, but I'll spare you the details.

Other stuff

Kept it short this week as not much happened.

I am planning to take a holiday from personal projects for a few weeks, but if you know me... I probably won't. Although, there might be a small pause in these posts for July... but then again... probably not.

I love the web.

Thanks for reading.

— Vincent

Weeklog — June 30th, 2024

Technically we're already in July, however wanted to get this written before I start the week. It's a little later as we were away for a few days over the weekend and I was just zoned out last night that I couldn't even think of pulling up next to my computer. Funny enough, I had the laptop all packed away and only took it out this morning. Nice to have a desk without anything on it (mostly).

Tinylytics

A few months ago I added a temporary new logo to replace my little blue circle. That was not by any means a final form, but felt good to get this out there as a small refresh to finally celebrate nearly a year of Tinylytics.

And now, to properly celebrate, I have a new logo that I am super happy with. Jim has been working with me on this (he did the designing from my terrible brief and my sketches that are worse than a 1 year old), and he's been so super patient with me on it. I can't thank Jim enough for what he's done — it gives me so much joy that words cannot describe how incredibly grateful I am. Thank you Jim!

Now that I have a new logo, I also want to make sure to update the homepage one of these days. One step at a time though.

I'd like to look at some performance tweaks as sometimes it feels a little slow when fetching the data of many sites in the dashboard... especially for high traffic sites. I do have some ideas to leverage Kredis here to display the hits data, but need a bit more thinking time.

Scribbles

Apart from the server upgrades a week ago, I am happy with the stability of it now. I did fix a few issues with URL's not always being generated and also an issue that would report your site as "set up" when you set a custom domain name but where it wasn't actually pointing to your Scribbles site.

I'm thinking about adding the ability to set up a proper menu that you can add yourself... I need more time to sketch that out and formulate a plan.

Oh... and I forgot... I tweaked the homepage slightly — hoping to do more here and show a few screenshots of the writing interface. Nothing fancy. Want to keep it all to a minimum.

Sublime Feed

Not a lot of movement here, although I did go ahead and created an updates blog for it, which you can find here. Hoping I'll keep this for some changelogs as I build. Most of my other projects failed to have this from the start, so it's nice to be able to document it all.

Mainly worked on some layout stuff and also how feeds are fetched in the background. On top of that Eric, a user and online friend of mine, wanted the ability to hide posts without a title on a feed by feed basis. So you can now do that. It works pretty great!

I might tackle the "email me when there is a new post" next as that's something I am interested in. If there are any folks that have specific ideas on how they want an API to look, just let me know — it's something I'll add for sure.

I don't feel like rushing this one at all so taking it easy.

Micro.blog

I'm working on the main app right now and slowly replacing the navigation library to use react-navigation. It is a bigger job although having a blast with being able to go through any other pain points I found from the code in general.

We already use react-navigation for Strata so it's a good fit to get it into our main app. That'll just keep everything more maintainable and consistent across all our mobile apps. Both Strata and the main Micro.blog share a lot of the code, so it's nice being able to use some code from Strata and bring that back into the main one.

Anyway, lots of fun and a good puzzle to solve as new problems arise — and that's why I love to code.

Other stuff

Yep, not much else really to share right now on the projects front.

See you next time.

— Vincent

Weeklog — June 23rd, 2024

Yep, it's a little later than usual, and I have to be honest, it's been a busy week with the school holidays starting — so we had to sort a lot of things and be places. That meant slow progress on everything.

Scribbles

Yesterday I looked at the server bill, because it was larger than I expected. That caused me to look at options, which brought me to the new Hetzner plans with a CX32. That's a saving of around 60% from my previous plan. There were some issues with bringing up custom domains, which is an issue I had the last time I upgraded — I'm trying to figure out what the issue is and I think it's Caddy or some process being bogged down. Sorry for any downtime (I hate downtime).

Shortly after the upgrade I wasn't happy with the speed of the sites and things did seem rather slow — so I looked at the Puma config and made changes here. Specifically I enabled the web concurrency setting and added a config of 4. And it's working super nicely now... I even think it's better than the more powerful server.

OK, enough technical stuff 😵‍💫

Earlier in the week I added the ability to add custom CSS to your blogs. If you're interested, here is Juha's blog with some custom CSS at work (it's still a work in progress — but it's awesome already). It's super simple and should work for most that are comfortable with working with CSS. There are some extra classes scattered across pages to help you target specific areas — you can see some of these here. Head on over to your blog settings and go to "Change Appearance".

I have been asked for adding more simple customisation for non-technical folks — that's going to come and I'll work on slowly adding some options over the course of the summer holidays.

I should add some proper blog posts explaining this...

Apart from that, and some bug fixes, that's all I had time for.

Shoutouts

Wait... what? Yes, shoutouts. Still going strong and working nicely. It's difficult for me to make too many changes here, although I have a few ideas that are still brewing in my mind.

The bigger thing I'd like to do here is to change the domain name. Don't worry, the old one still works of course, including all embeds.

Instead of using the .lol extension, I am moving shoutouts to .page instead and is now the default domain that I link to. Here it is: shoutouts.page.

You may notice that the CDN and Embed code now use this domain instead of .lol. So if you want to update your embed code, you're more than welcome to — not necessary though.

There are more things I need to do with the domain switch, like using the correct emails etc. Taking it slow though.

One day I'll redirect the .lol domain to .page — but that is still far off.

Using the .page domain should perhaps give you an idea what I'd like to do... one day 😋

Other stuff

That's all I had time for during the week. There was also some client work that I had to work through which I have to prioritise.

There were some issues with sending out emails from my custom domains, so some emails went out way later than they should have done — I did email everyone from my personal address though... so there might have been duplicate replies. Of note, I use ForwardEmail that I send from in HEY. It's pretty good and I am happy with my set up.

Now that the summer holidays have started I need to be a little bit wiser with my time and will allocate 4 hours each morning for work so that we can enjoy the afternoon out as a family.

Hoping to give Sublime Feed a nice push over the course of the next few weeks also.

These weeklogs have been interesting and gave me much greater focus on just my work and then reflect on it — it's different and, being honest, it's been a little bit hard because there is seemingly withdrawal symptoms from not "micro" posting on my blog. It's still a new way of doing things and I'm finding it hard. Hopefully another few weeks will settle this though and I look forward to when this is normal. I often find myself trying to look for stuff to do because I have the urge to write something small, but I stop myself.

Another problem (not really a problem) is the feedback loop (comments, likes, etc) — I think for me that's the biggest thing that I need to get used to (or the lack of). Although, I've been getting more email than usual and I love that. I love to write longer form and think about it more.

Anyway, let's see how it goes. The minimalist in me prefers this way. I actually look forward sitting down and focusing on these and reflecting back on what I have achieved.

Thanks for reading.

— Vincent

Weeklog — June 14th, 2024

Welcome back to another weekly log of everything I've been up to. Last week was my first attempt at this, so let's see if I get better at it. Know that I changed my mind on dating these, and will just use the date I wrote it. The truth is, is that the weekend happens, and I sometimes just work on stuff — plus I think it can be confusing. So here you go.

Anyway, quiet week, but let's go.

Sublime Feed

Thank you to all that have emailed me over the past week. Unexpectedly my post was also featured in the latest Short Ruby Newsletter! Thank you Lucian, that really mean a lot to me ✌️❤️

I've been behind on responding to everyone. Know that I am on the case, with a few more to go.

Your feedback has been amazing to date and I'm going to continue with dev in a week or so.

Right now the biggest problem is fetching feeds and parsing. I switched to using feedjira and that has a few issues that I need to work around. I did write my own custom parser before dropping in feedjira, and I think I might go back to it again — it just gives me a lot of more flexibility. Need to think about this more.

Oh and I fixed an issue that would cause the feed fetching to consume 150% of CPU power — now it's just humming at around a constant 20%. My change was easy, because as usual I was a little too liberal with background jobs. Initially I had a background job for each feed, which I still do, but when posts were returned I started another job to handle those posts (per feed) — and that just caused mayhem... and actually the reason I also ran out of space (because it logged all the "items").

On top of that I changed the fetch interval to every 10 minutes, with a random 5 - 100 second delay between fetches. That works super great and I'm pretty happy.

Another thing I have been thinking about is hosting. Right now I use Hatchbox for deployments, and it's been fantastic! I use it for all my projects. However I am thinking of final giving Kamal a try. Let's see.

Scribbles

Not much here this week except fixing some dark mode stuff... and... the ability to add your categories, as navigation, to your homepage. I think it works pretty well and you can see it in action on the Updates blog. It's a Nitpick setting and can be enabled on the homepage and archive page.

On top of that I also added the ability to show expanded posts on the category page, instead of the previews. That's a category by category setting.

The reason for these changes are that I wanted to simplify a few things, as per my last weeklog, and just wanted an easy way to have it under one roof (like you can see in the updates blog).

Hope you enjoy it.

I have been asked many times for custom CSS support. This is going to make it into Scribbles in the next 2 weeks. I don't yet know how well it'll work with Tailwind (the CSS framework I use), but I'm sure it'll be OK. Watch this space.

Tinylytics

Well, we've passed the 1 year anniversary last week 🥳 I want to thank everyone from the bottom of my heart that has been using it (including if you gave it a try and it wasn't for you). It's slowly approaching 5 million combined recorded page hits across all sites. Mind blowing awesome!

There are so many things I'd like to do, and have been taking it slow — that's on purpose. I've been reading a post as of late on what would make a great analytics tool especially for smaller sites — so that's something I'd like to think about.

Whilst not hitting the spot right now, I did add the ability to filter by a "source" (for subscribers) — so you can find which hits came from which source, for example now I can dig through hits that appeared thanks to the Short Ruby Newsletter (which had a source attached). Hope that's useful to some of you. I'll probably add referrers soon.

As always I have a multitude of things floating in my head and hope to eventually get to them.

Thank you again to all that use it, and also to those that have subscribed (present and past). It means a lot!

Oh and before I move on, I also consolidated the changelog to the main updates blog, just like I did with Scribbles.

Micro.blog

I mainly just curated discover and will take a break now. Hope you enjoyed it this week and last.

I finally have a pull request in for some admin changes we've been making so our lives are a little easier.

Let's see what I pick up next — I'd like to work on some minor layout things for the front facing part of MB, although I should be concentrating on some app stuff soon and get these updated.

Other stuff

Ah yes, this again. So I tried getting Gluon to work, but still hit build issues. So will perhaps try again next week, who knows. Also, if you used my Status app, know that the beta has expired. Not yet sure what to do with it or if I keep working on it — I don't want to say too much, but I felt a little alienated at Apple's developer conference this week, so I need to think about some stuff (don't read too much into this though, just a personal feeling really).

Still thinking about some other projects and what to do with them, although now that the personal apps are taking a back seat, it's two things less to think about. I have plans to move another project of mine to a friend (codebase only with NO user data of course) — something I need to spend some time on.

Anyway, looking forward to working on Sublime Feed soon again (within the next 2 weeks).

Thanks for reading and all your nice messages.

✌️❤️

Weeklog — June 3rd, 2024

This is something I always wanted to try, but never was quite sure how to do it. Earlier this year I started sharing a little bit too much on my projects with screenshots and general stuff I was working on — and that felt a little bit too much.

Let's see how it goes. I'm going to try and go project by project and give a few points per paragraph. This was something I wanted to try last week but we had a mini escape over the weekend due to some school holidays so I missed a lot.

And what about the date? The week starts for me on a Monday, and it's about this week. Seems fitting. I was thinking of using the week number, but that can be confusing.

Micro.blog

Kimberly, Manton and me have been steadily curating the Discover timeline this week. I'm really happy with the admin changes for curating we've been doing over the last few months — it's a massive improvement over the past year.

There is more work to do of course and looking forward to working on that this month.

We did have a bit of downtime again. Manton is travelling... and the servers just know it for some reason. These happened during bedtime (5 - 6 AM) for me, so I'm happy that Manton was able to take care of everything.

I already miss Jean. She is a beacon in the community and I'll miss her. Many of the admin changes have been made to take into account the wishes she had — it's already so much better. Thank you Jean ❤️

Gluon

Ah yes, my little app project... that had a great start but seems to be on the sidelines.

Last week I was trying to build the app locally after some updates but encountered issues — that's normal. However I didn't have any energy to go further. What I did do is try and start a new project from scratch, which had no problems with running — I don't know yet what is going to be next.

I did try and make changes to push notifications and upgraded some stuff in the process — that seems to have broken something with encryption. If you're missing replies, you can go to the Mentions tab, tap the bell icon and "re-activate". Hopefully that'll do the trick.

It's Pride Month and many of you are celebrating LGBTQ+ and inclusion and diversity, I featured the Micro.blog category on the Explore page over the weekend. You can pin it to your Discover timeline by long pressing on it and you'll get a little pin on it. If you're creating a new post, it'll pick up 🏳️‍🌈 and 🏳️‍⚧️. It'll be at the top of the timeline, if pinned, and is automtically updated.

In a future version I'd like to surface the emojis in the editor so you can quickly access them.

I'm planning on also adding WWDC over the weekend. Some of the developers like to follow this. That one will pick up posts with 🤯 or WWDC — although it seems that feed hasn't seen any action in a while (4 years).

There is an issue with Cloudflare heavily caching the Explore feed for some reason, so it might take a few tries to get it to show up. I'm going to replace this logic as it doesn't work... and use Bunny.net for caching those feeds (I do that for all the other feeds already).

No other plans for Gluon right now — still going to try and get it to run here so I can get a new TestFlight out soon and fix the bug with Explore (needs a query string to more aggressively bust the cache).

Scribbles

I fixed a few issues with categories not hiding when they're set as inactive.

Apart from that I've been planning some sort of short code picker thing — nothing concrete yet.

One thing, for the technical crowd (or if you have interest), is that I had Litestack installed on the project since day one. My plan was to always offer a self-hosted version of Scribbles. However as a multi-tenant app I encountered some weird issues with some background processes, especially around images.

So now I removed that and am using solid_queue together with Redis. I haven't yet seen any continued issues — so fingers crossed.

There are a few dark mode bugs I found that I didn't tackle yet, so I'll work on that at some stage — maybe next week.

Sublime Feed

Earlier this week I blogged about my feed reader. I really love the simplicity of it all and it's been a joy to use privately. There is much for me to do and I'm going to take it super slow actually.

Thank you to all that have sent me an email about it. I do know there are bugs and some feeds don't work (yet!) — I'll get around to it next week.

I did have some extended downtime as the server ran out of space — I didn't fully investigate but it was the log of the background process, it logged the responses of the feed as I am firing off another background process for each feed so it looks like the while feed object is logged. For now I upgraded the server with more space and oomph. Everything seems A-OK, although I can see it creeping up again.

That also made me change the time interval of fetching feeds. Instead of every 1 minute it's now 5 minutes. I do need to think of some other way of doing this... although it works pretty well. Even fetching every 10 minutes should be enough.

As I said in my article it's just a moment in time.

Other stuff

Tinylytics is humming along nicely and has been stable. No updates here yet except that it has a temporary new logo (well, it's been there for a while), which will be replaced by another new and way better logo — if I can get my feedback over. I also moved the changelog over to Scribbles.

Talking about changelogs and stuff — I feel everything is a little bit too spread out in terms of content, so I am planning to maybe consolidate some of these blogs and changelogs into one and separate them out with categories. Probably a good idea.

Podcast — I recorded last week. It's not time yet. I'll work on it again in July perhaps. No rush.

I do feel a little spread out in terms of projects, and I need to think about some stuff and how to go forward.

Thanks for reading.