Vincent Ritter

Weeklog — July, 21st 2024

It's been an interesting few weeks as I go through a small shift of what I work on and also what my development stack looks like. Although mainly personal, and nothing I'd like to get into here, I've been exploring new (and old) software for getting my work done. It's been eye-opening and I am happy with my choices so far.

This week I had a little bit of a creative spurt on my own projects, which was a nice surprise. Perhaps because the temperatures have been a little bit more stable... or because I got used to the heat.

Micro.blog

A few weeks ago I started the process of moving the navigation library we use on our main app over to react-navigation. It's been a good learning experience for me because I am so used to the react-native-navigation (RNN).

The idea really is to bring all our apps in-line with how we build them. My old app Gluon used RNN and I was really in love with it, just like my love for MOBX. There was just a flow that worked for me, so when Manton approached me to build his app in React Native, that's what I felt comfortable shipping with. It still is an amazing navigation library, however for completeness it is best to bring a similar tech stack across to all the MB apps — that would make it easier to maintain and work on.

That meant I had to learn the new way, and that's been a little bit of an uphill battle because I was set with the old ways. Finally I had a bit of a breakthrough with sharing certain screens across the whole navigation stack and how it should all be set up. When we started building Strata we decided to go with react-navigation from get-go, however it was quite basic in requirement. The MB app is a little bit more involved than Strata with many shared screens across different tabs.

There are parts I've been rewriting as I go as some things were specific just for RNN which just don't work anymore. That's a good experience so far because I can improve a few things as I go.

Initially I wanted to give up and work on something else because it felt a little bit too involved to make these changes — I am happy I persisted though, and now I'm going one screen at a time.

We're 70% there and hope this coming week will allow me to finish it up. Then I can concentrate on more app related things that I wanted to.

Gluon

I announced that Gluon is now end-of-life a few weeks ago. There are a few stories around why I'm doing it. I have in mind another blog post to give you a general overview of the bigger question of why, but I'll hint at it here in a moment. However, know that I've had to let go of a few projects to open up my mental capacity to focus. Only I know my strengths and weaknesses — and I realise I have been blind to these for some time because I wanted to try and do so much.

Working on Gluon and the Micro.blog apps just makes me go all over the place, and I won't achieve anything. I really like the way Manton and I work together on Micro.blog, even though I am pretty much free to work on what I want, it's nice when we get close to launch and we tidy things up and really nail the finer details (Manton has a real eye for that, which is beyond me). Having Gluon off my mind allows me to concentrate more thinking power to the official Micro.blog apps — and that's where I ultimately want to be. Having both apps at the same time to maintain is not sustainable for me.

Now to the hint: Apple over the years have really started to alienate me. Not just because of their App Store polices, but in general with all this "Only at Apple. Namaste." crap and many other things that I won't discuss. I look at that company with different eyes now and I am sad how it went since Steve passed. I think we lost a lot. Don't get me wrong, I still love the hardware, but something feels completely off now and I am done. Although, there you go, I care enough to say what I just did. Watching their latest WWDC just cemented this for me even more.

Thank you Apple for forming part of me early on, but you're not the same anymore. You were great when you were the underdog, the pirates of silicon valley. Now you're the king on the hill and I couldn't care less. Here is hope to finding that next underdog.

Scribbles

A few weeks ago I upgraded the server, or let's say "downgraded", and I'm super happy with how reliable it has been since — it's working as I expect and how I like it.

Saying that, I haven't shipped anything new as such, however now you can add an alternative description to your blog logo, which in turn will appear in the alt text of it.

The reason I added that is because I was curious on how good the PageSpeed score is on the updates blog — because of an unrelated support request for Tinylytics — and it flagged it up. The score was already at 96 across desktop and mobile, but I really fancied that 100. So here we are, it's now at 100. I am happy with anything above 90 (even though I have never checked or cared for PageSpeed), so this was a nice surprise. Of course I need to look at actual scores where images are involved.

There is some work I need to do to add some commenting support that David has been working on, and I'll get to it soon. I know a few folks want comments, but I just refuse to build that natively into Scribbles... for now. Although I had great discussion with a friend of mine on how it could work.

Oh, and I finally started working on an updated homepage for Scribbles. Still need to add some "features" in there, but happy with the way it looks.

Tinylytics

After months of frustration of the way the super slow speed of loading your full site list, I decided to finally tackle it, and actually understand the "why". Every time I loaded my sites, it would take 2 - 3 seconds to load the page, even though things were "cached". Or so I thought.

The problem stems from the way the sites were loaded as you requested the page. You see, it's not really a problem to load the sites in one go, however the issue was that I also pre-loaded all hits related to each site. That meant ALL hits for ALL sites were loaded into memory — the initial reason for this to avoid a N+1 query, meaning I could grab everything in one go without going back to the database again. But boy was that a little short sighted.

My own website, this site, has nearly 60K hits since I started recording last year, and yeah... not good to load all that.

Initially I wanted to do this because I was also interested in displaying the "last 30 days" of hits on your site list. That was useful. But you know... learning experience and such.

So now I load the sites without preloading the hits data, which makes it super snappy. In addition to that, any hit data is now loaded using TurboFrames and... TurboStream. It was always on my list to finally get something to work with both of these to add some "live" components to my site and integrating with Tinylytics is just perfect. Whilst basic right now, I am so happy how it works.

When your site list loads, it will lazy load the TurboFrame for your hits, and then when you get a new hit, it will automatically update the counter thanks to TurboStream. I think it's magical. If you have a long list it'll only load the hits as the sites come into view, just so you don't load everything at once.

There is so much more I can do now, now that I have a small grasp on Turbo and how they work together — and considering this is built into Rails, it just works.

I'd like to concentrate on getting the site details page live as well, but that will come at a later stage.

Oh, and for fun I made the global statistics on the homepage live too... it's pretty nice. Also awesome to see it passed 5 million hits! Just amazing.

One unofficial feature I also added was that you can re-arrange the order of your pinned sites on the sites overview page. It's not yet 100%, more 80%, but it does work if you want to try and drag things around (might take a few tries). Still much to do here.

I'd also like to make to improvements to the uptime monitoring over the next few months and have a few ideas floating around in my head on how that should look — it's all still very basic. Gets the job done though.

Also a huge shoutout to everyone that has stuck with Tinylytics over the past year, since launching. I appreciate everything and hope that it's living up to your expectations. There is so much I'd like to still achieve, and I will.

Other stuff

I haven't done any work on Sublime Feed for a while now. I use it every day. What I learned about re-ordering and Turbo on Tinylytics gave me a few new ways of achieving some functionality I want for it, so I'll be spending some time on exploring that.

There is some ongoing work for another older project of mine, but I won't be able to share anything until "we" are ready to announce something. It's fun to revisit something I was working on and giving it a new life even if that means a completely new start (and a new name) — and it's for the better. More to announce as the months pass.

That's it for now, one step at a time.

— Vincent

Stay in the loop

Subscribe to the RSS feed...