Vincent Ritter

📰 Blog

Posts about whatever is on my mind at the time regarding my projects and perhaps some specific topics. Can be updates, release notes and others.

Posts Follow me...

Update — December 1st, 2024

November feels like yesterday, oh wait, it was — it’s been feeling a little too quick though. Which I guess is a good thing. A lot of things have happened.

The most important one is that I finally upgraded my computer, nothing fancy, something so I can keep working — my laptop hasn’t been doing well at all. I got a bog standard Mac mini for the same price than what it would cost to replace the keyboard on the laptop. Good deal. It works great!

I was growing a little bit depressed about the situation and things didn’t align too well with the budgeting because of a turbulent year and then some — although I hope I have a bit of a buffer these days. Just need the world to get a little better now, which I think we’re heading towards (although slowly).

Saying that, I’ve been a little slow on the project and client front as my laptop was dying a slow death working in clamshell mode (I noticed that the battery swell up too when I unplugged it — good riddance). Every day felt like a chore and where the tools just get in your way. However, I am happy it lasted so long! I reckon it might have lasted a little longer if the keyboard kept functioning.

Anyway, this my first upgrade to an Apple M powered machine, and it’s great! I now know that I don’t need anything fancy and comfortably can get my stuff done. Heck, I even played some X-Plane on it, and I am blown away. I don’t really game that much anymore, but it’s nice that I can just plug in my joystick and shoot a circuit or do a little instrument flying (it’s super relaxing for me and lets me measure the state of mind I am in — because if I can do a difficult IFR approach and landing I will need 110% focus — games are great like that).

In terms of my workflow, it just rocks! Everything just hums along — no issue with Ruby on Rails dev, nor React Native. RN projects always feel heavy because I have to run the simulators, but no more — I can run multiple sims (Android & iOS) at the same time, no performance penalty. Building iOS and Android apps take a minute (even one my largest ones that took 10 - 15 minutes on a good day) — and I can build them both at the same time no issue.

Yikes, OK, wow, too much personal stuff here already that I wanted to avoid.

Should we talk about projects? Let’s go!

Sublime Feed

I’ve been pushing myself to launch Sublime Feed over the past few weeks. It felt a little stuck over summer, so I wanted to put in the extra effort to just get it out there even if I think it’s not 100% ready yet. Better to start somewhere and go from there.

It’s built for my own personal need, and you know, I had a lot of really great comments from a few folks that really love it a lot. That made get to the finish line and just get it out there.

You know who you are, so a heartfelt thank you to you! ✌️❤️

For most of the month I concentrated on a few little things and bug fixes, mainly around feeds that redirect. On top of that I added support to export your feeds to OPML — so you can take it with you if it turns out it’s not for you.

A lot of work has been done, which I covered before, regarding grabbing images and favicons for websites — I believe it works pretty well and am not complaining. There are a few bottlenecks that I want to fix though.

In addition to that, I launched the paid plan — it’s $3/month or $30/year. I think that’s a good balance for what it is. There is also a lifetime plan for $149/once — if you sign up before the end of December (2024) you may find it at a much lower price (hint hint).

You can start for free with 10 feeds, and then upgrade to unlock unlimited ones. I think I’ll put some features behind the paid plan, like pinned feeds and more things I want to do (but let’s see).

I suggest you give it a try and hopefully you’ll regain some of that calmness that should come with staying up to date, without having to tick boxes or chasing that unread counter — no thanks.

You can sign up here.

And yes, I need to work on the homepage somewhat — it’s terrible 😋

Scribbles

Who ever said that a blogging platform would be easy to manage? No one I guess. Scribbles is humming along nicely. It made a good amount of income earlier this year, and I am so grateful for it. Things have been somewhat slow on the monthly income front though, however I think that’s OK — I am not here to win any prices.

For a time I was thinking of removing sign up and just concentrate on the people that have an account already and that have paid. However, I get a steady amount of sign ups and a few subscriptions that are worth it for me — I am not here for the short term, this is all a long term thing for me... hence I offered a lifetime plan initially.

Which brings me to the first point! The Lifetime plan is back. It’s a pay what you want, with a minimum of $199 (normally $229). I think that’s a great deal for what you get. If you do decide to sign up and want to use any of my other services, always happy to apply a small discount (that actually goes for all my products, so just ask).

In addition to that, I made a promise, although the timelines are still to be determined, that there will be a self hosted version at some stage next year for any lifetime purchase. That means you can run it yourself, and do what you like with it, without selling it of course 😘 I wrote a whole thing about it on the updates blog, so feel free to read it (and come back please).

And there is more!

Probably forgot something here.

As always, I am keeping options open what to work on next, although I have a good idea what that will be.

Any folks have asked for better theming support, and it’s been brewing in my background brain process for some time, and I know what I need to do... but it won’t be this year as it’s going to be a bigger task.

Tinylytics

This project grew on me the most, and surprisingly it has stuck with a lot of people also — am very grateful for it!

I have been putting the project on the side a little so I can concentrate on both Scribbles and Sublime Feed. That’s on me!

I’ve scribbled down a few improvements I’d like to make to it, and I know how that will look like.

The biggest battle over the past few months were the email reports that randomly got stuck. A few weeks ago I tackled that issue by upgrading the underlying job processing to use Solid Queue backed by the SQLite. I am happy to report that it just works, which is great! Still a little reluctant to drop my guard though.

Another little bit I was working on is to email everyone that was using more than the free tier allows (1,000 hits a month), averaged over 3 months usage. Tinylytics won’t stop collecting hits if you go above the limit — I never implemented anything for that. However it’s slowly time for me to do that where the dashboard disables (but allowing for an export).

A few folks have upgraded (thank you!), some have just deleted their account (that’s fine also), and some haven’t done anything about it... I guess that’s fine too. I’ll be working on features that slowly turn off things, like email reports, dashboard access (Except if you wanted to export it) — or perhaps I just stop showing data after a certain date (I think that’s what I’ll do).

It’s also come time to rework the uptime monitoring — it’s still the same as it was when I first implemented it. However that would require another project of mine to get its feet wet first... and I am ready to make that happen. There are limitation to what I use now, and I just need to rip that all out and start from zero.

Yikes, getting long, so here are some few more bits I shipped:

  • Added an option to disable hit collection on pages that return error messages (like a 404 page). This does an extra call to the current page and checks the status code that is returned.
  • Tweaked the layout of settings a little, because it feels a mess, and I’ll do more here.
  • In addition to that, I made the charts look a little cleaner with the dates.

There is a long list of things I’d like to do, just like my other projects... and I am ready to dive in. 2025 will be the year for Tinylytics and I hope you will like what I have in store.

Other stuff

I wrote a lot already, so I’ll keep it short.

Thank you to all that follow along, that like my work, and for all of you that subscribe and to those that bring me up by your emails and messages of support. Without you I could not do what I do.

My projects are suited for a niche set of users and I have no interest in catering for larger faceless businesses — it’s my mission to always keep everything deeply personal. It gives me no greater joy than to help others and if I ever felt that I was too disconnected between “product” and my users then I wouldn’t feel that this is my purpose in life.

Thanks for taking the time to read this far. See you next time.

— Vincent

Update — November 10th, 2024

As we get closer to the Christmas holidays, I wanted to clear the deck and tune in where I want to focus on the most.

There are many projects I’d like to work on and I feel that sometimes my lines are spread a little too thin — or in other words, I’d like to work on everything at the same time. However, this is one area in my character flaw that I won’t change. Because it works for me — even if at times it feels I am neglecting a project. It’s far from it and everything I work on is always in my head, twirling around in that background process.

Sublime Feed

This has been my biggest focus for the past 2 weeks. I really want to get Sublime Feed ready for launch. On what date? Perhaps end of November — so let’s see.

It’s been a super busy time with getting features in here that I wanted for launch and it’s best you just go ahead and check out the last 2 weeks worth of changes on the updates blog.

To summarise though:

  • Image previews for posts, showing you a nice image to the right of the text when one is present in the post.
  • Favicons are now fetched for your feeds so everything looks nice. They’re kept up to date every few weeks.
  • Your pinned feeds can now be sorted nicely using drag and drop in the browser — you can check out how that looks here. Looks cool!
  • Added a reader view and can be set on a feed by feed basis (yeah, I launched that more than a few weeks ago).
  • PWA (Progressive Web App) tweaks so you can reload the feed or go back to the previous screen when loading the reader view.
  • Added an option to show all posts for a feed that has the "hide posts with no title" set — meaning you can view everything without trying to dance around.
  • Various other style tweaks as I go!

Phew! Good fun!

In addition to this, it’s my first project where I started using Kamal Deploy. Sublime Feed runs on Rails 8 and it’s absolutely fantastic!

I’ve got to be honest, I was super nervous just getting started with Kamal... I was never one for Docker, and avoided it like there was no tomorrow. It’s healthy to keep an open mind though!

I was up until the very early morning to get this all sorted and deployed, and it was totally worth it. The thing was... to... just... start.

Of course there were some headaches, and things to learn. And that’s why I love what I do. Because when someone gives you the answer to everything, it’s no longer fun. Learning by your own means by absorbing information from around you is the best feeling in the world, even when the going goes tough.

I’m motivated to move over my other projects too, with some minor exceptions like Scribbles.

Hopefully I can keep the momentum and fully focus on Sublime Feed until the end of the year and really get it launched. Looking forward to it.

I do need to announce pricing — and I am a little conflicted on it at the moment.

Other stuff

Just a quick note that I sent out the "Sublime Ads is shutting down" emails. I’m targeting November 22nd, 2024 for a "soft" shutdown and then finally remove it from backups in the new year. I’ve mentioned this enough times now.

OK, that’s it for me this week. There are many things I want to reveal, but going to keep it close to the chest for now until I have something to show — I am excited...

And yeah, I think calling these "Update" is better suited than a "Weeklog".

Thanks for reading.

— Vincent

Weeklog — October 25th, 2024

It’s been a long time since I felt like I was making a dent with my work. I don’t want to tie that to getting an external keyboard for my now failed laptop keyboard. It’s really been driving me nuts for the past year or so, especially when the Touch Bar also gave up. 2 weeks ago around 25% of the buttons stopped working (or randomly working). That really is terrible and not so great engineering.

New ways of typing have been formed since then and, you know, I am too stubborn. I try and will myself through the bad times, it’s just how I operate — no matter how low things get, I still work through it. However, I think the years of working through this ultimately left me in a bit of a declining state of mind.

I love it when my tools just work. It’s the tools that enable me to do what I love. Code. So, greener pastures, healing to do. I am loving the new perspective of having an external keyboard and monitor (even if the screen is only at a 2K resolution — working through it 😅). Should have done this earlier 🤷‍♂️

So, onto projects, and I gotta tell you, there is just too much for me to write here at the moment. It would probably take me all day. I will bring back the regular posts hopefully starting next week (just hope I am productive 🤣) with project by project breakdowns.

For now though, I invite you to just go through the update blogs on each of my personal projects:

Over on Micro.blog we shipped an image modal/lightbox for the timelines, and I think it looks and works great. Manton has a post about it here. Some tweaks to deploy to it that I spotted last night. It’s great to be working on the Web App a little again — I’ve been super consumed with the apps (MB & Strata) over the past few months (totally worth it!).

Other stuff

I’ve been planning a few things that I’d like to start. That’s all I am saying. Both, yes... both, are more for personal exploration. The domain name for one of them renewed just last week, so it reminded me to have a look at that again. The other project is just a personal thing, which will lead to cool things for Sublime Feed and Scribbles (especially Scribbles).

Thanks for reading.

— Vincent

Weeklog — October 18th, 2024

Yikes, it’s been a while since I last wrote here and gave you all an update. I want to be honest with you all... it’s been super difficult, and continues to be even now that I finally managed to put the time aside to write here.

I wanted to avoid to write anything too personal here since summer, and I think I will for once just write about things not too project related.

My laptop has been degrading over the past few years and it finally depressed me enough. I am actually typing this on a new keyboard that I bought — my laptop now inside my desk, hooked up to a screen. Heck, I even bought a new mouse.

It feels like I have to learn to type all over again. The mouse is fantastic and the keyboard is nice also (because it works). Not so great is that I have to type on a 2K monitor that has a terrible colour profile. Everything is blurry. Yet, it avoids me having to use my keyboard on my laptop — which is around a $1000 to repair. Yikes.

I love my laptop a lot. It still runs great, minus the keyboard and Touch Bar. I miss it already!

However, this whole experience of degrading hardware has left a sour taste in my mouth — especially for Apple. And you know, right now, even after many months... and if not for many years since Steve has passed away... it’s the system I use the most. It still feels right, even though there are other options out there.

Heck, I tried Ubuntu and installed Omakub on it — many things just clicked for me. There might be something there for me. However, right now, I don’t have the means to explore. In a way I am here, I have what I have, and I need to work with it. It’s not perfect. In fact, exploring other avenues, it shows me just how tightly everything is integrated with the Apple ecosystem. I’d love to get a Framework laptop, but there are things tying me to the Apple ecosystem that just don’t make it feasible right now.

I’m a minimalist at the core, even though sometimes it feels like chaos.

I miss typing on my laptop, I really do. It’s a 2018 Intel MacBook Pro and I love it a lot. It still delivers, minus the keyboard and battery — and I think this was still peak Apple. Apple make great hardware, I’m not gonna deny it.

I was super close in throwing in the towel with a lot of things. The summer certainly didn’t plan out as I wanted — even if I had super low expectations and goals.

We’re also on a new school schedule and that has really thrown a spanner into a lot of things. I am thankful that I have a choice of my work hours, even if I’ve been a little unreliable with some of my client work — however I am so grateful that over the years I have made such great relationships and that I can be open about a lot of things.

I want to thank Manton, David, Michael and Raoul for sticking with me. You know that I always go above and beyond no matter how shit my day might be. I am here for you, as always!

OK, I think I’ll keep it at that for now.

Also, want to thank you the folks asking me to return to Mastodon (ActivityPub) over the past months. Maybe one day, but that day is not today. You can find me on Micro.blog and X.

Thank you all for following me and I hope to have a better update the next time we meet here. Now that I have a keyboard that works! That screen is terrible though!

— Vincent

Weeklog — August 30th, 2024

Well, it's been the last week of summer holidays, school starts next week — great for the kiddo who is rather excited.

Micro.blog

This week saw me working on getting Docker set up with the development flow for first timers — and I gotta say it works an absolute treat. Historically I avoided Docker because it brings my computer to a crawl, however I found OrbStack, thanks to the power of the people I follow — and I couldn't be happier. It just works and doesn't bog down your system.

It's been a great learning experience even if I don't understand everything that's happening — however it just works. I'll let my brain handle the background job of understanding it better.

There is more here we need to do, but feel confident we'll get there and let's see if this ultimately makes its way to production also. Funny enough, the docker set up is pretty similar to how it's run. One puzzle piece I want to figure out is to also get the static pages building locally so that everything just works (and can be tested).

Anyway, happy with the progress and the learning done! Even if it's just Manton and me working on it right now, it'll be super easy to get set up for anyone else.

Apart from that... I reworked the way push notification registration works on the Micro.blog app and hope that'll fix a few issues that some folks had. It also introduces a new "Push Permission" prompt — instead of when the app first starts, it'll only do it when you're navigating to the Mentions tab. A good quality of life improvement.

Shameless Plug

Apart from the new logo, which is fantastic and certainly anything better than I could ever come with, with Sublime Ads, I made a conscious effort to replace some of the React code snippets, that some parts use, with just a pure Turbo Frame. The effect is great and hope to make more progress on that as time progresses. The ultimate goal is to remove any React based code.

On top of that, it's a much better experience for users that can be brought across the customer portals also — excited to see where I can take that. Not to mention developer happiness.

Whilst not mentioned before, I completed the billing implementation that I took from all my other projects and adapted it to Shameless. Happy with the way it works. We're using Lemon Squeezy for handling payments.

Because of my new found love for Turbo, now that I have a somewhat grasp on it, I'm hoping to pepper this across a little bit to check for usage and update you on how you're doing with the free API usage credits you get.

More to come.

Scribbles

Over the weekend I introduced auto-saving... and I think it's pretty awesome. When you start writing a new post it'll start auto-saving it, so that when you loose your page, or disaster strikes, it'll be available to you in drafts. You can read more about it and watch a little video I made here.

As of today that works across new and draft posts, plus a few fixes have been made where sometimes it did the wrong thing depending on the blog settings.

There were many other little changes and bug fixes that I worked on — one of them is the functionality to stop you from posting your post if you're still uploading your image or video... that had happened a handful of times and I'm super happy to have this in there now.

There are some abstract ideas floating in my head on what to add next, so colour me excited for when my brain finishes the background process.

Thank you all that have given me feedback on auto-saving — it means a lot!

Other stuff

I'm having problems with Apple Development, especially Xcode — it's horrible and slow. In contrast, Android Studio just seems to work these days. Android Studio built the Strata production build in less than 10 seconds after I loaded it up yesterday. Colour me surprised! However, for no good reason and zero changes, everything just failed to load on the Apple side — no simulator, no projects.

I was so frustrated that I installed the Sequoia beta to see if it would fix anything. Upgrade went smooth. The OS is good and feels stable — I had zero interruption to web development and Android dev continues to work. Xcode beta seems to launch faster, so kudos for that. Before that it was a 30 second wait time before the little project picker came up. I'd say it's less than 10 seconds now. However, still issues remain, but happy my simulator is running now.

Anyway...

I've been feeling super inspired after listening to Lex Fridman interview Pieter Levels (@levelsio). Great episode and worth a listen. It inspired me to do the following:

  • Drastically simplify my server and business needs (already made great progress this week — going from 5 to 3 servers).
  • Drastically cut down on beer and alcohol (starting yesterday).
  • Get back into shape (as it's on and off for me, although I am quite fit as is).
  • ... just ship!

Oh and I'm feeling inspired to bring more videos and "how-to's" across my projects. Nothing concrete yet though.

Thanks for reading.

— Vincent

Weeklog — August 23rd, 2024

Finally some NEWS... not. Just an update on all things "projects". The summer holidays has really thrown a wrench into the routine of writing and shipping. I am surprised I actually got anything done. Although it's clear to me that for now client work has to be top priority during this period.

Tinylytics

Ever since I started with Tinylytics I wanted to bring the ability to record unique hit data to everyone. There was an option that allowed you to turn this on if you were subscribed. What that did was pass back a random string of characters to the script, when it loaded, and store that in the browser temporary session storage. That worked great and I was happy with it! With that string I could track the same user (or random string) across multiple navigation visits to your site, if they kept the browser and your site open — once they closed it, the browser would then automatically delete that random string.

However, there was always that itch I wanted to scratch to make that better (because it was sometime unreliable) and also... well... remove an extra line or 3 from the script as it loaded — because why not? So I set about building a super simple way of making that happen without ever breaking privacy using the data I already had as the hit was recorded.

I already wrote about it on the Updates blog, so read it there for a longer winded explanation of what I did.

To sum it up real quick though, it'll use all the incoming data when it's recording the hit, create a special "hash" of multiple data points, and encrypt that (so you can't decrypt any of the data) using a special salt key. That salt key is automatically rotated every 12 hours and will be deleted after expiry.

It works pretty great and I'm super happy with the way it works.

That means every hit now automatically has this data available to use and if you're subscribed you can access the data. There is also a new graph that will show you the combined data. It's pretty nice.

The next thing was to explore exposing the usage data for your account. Tinylytics has a free tier, which I think is very generous and has enough features for most people. However, I never got around to actually showing this — so now you can see your usage data on your account page (or billing page).

Right now I don't really enforce the limits although have started contacting people that are way above the limit. In addition there will be a little button at the bottom of the page if you're at a limit of 98% that will ask you to upgrade.

Usage data is calculated on an average of your last 3 months — I think that's fair and also allows the occasional burst, which happens.

Right now I am unsure what the next step would be if a user doesn't want to upgrade. My plan for now is to just disable the admin interface and redirect to the billing page. Hits will continue to be recorded for some amount of time I guess. I'd like to make sure though that the hits data can always be downloaded no matter. Hmmm.

There were many little changes throughout the site and how data is loaded — especially improving responsiveness when you have a site with a lot of data. Again I am super happy with the way things are working.

I did give the homepage a little refresh too. I like it more now. More to do here, especially on wording.

Shoutouts

What is shoutouts? Yes, very good question. Not going to lie here... but it's been sitting there humming along just nicely and making not very much money at the same time. It's pretty niche as is and the reach is low and is very specific. I love it a lot because, whilst simple, it taught me a lot.

As always I have a long list of ideas that never get any attention because I am happy with the way it works... and then I just work on something else.

Recently I switched the old domain of .lol to shoutouts.page — it's automatically redirecting and everything should be working as it should. I much prefer the .page handle because it'll work better for what I have planned.

Other stuff

I'm reassessing a lot of things now and would love to provide free products as best as I can — however at the end of the day I still like to make a living from my little projects.

Tinylytics makes the most in terms of a more stable income, although things have been super slow and also had to deal with some errors by my payment provider that paid me double for each subscription that used PayPal (urghhh). There are usually 2 - 3 paid sign ups a week — now it's around 1 - 3 a month (and a few cancellations also — the natural order of things). Gonna blame the summer holiday for this. Hopefully I'll make a small dent here again!

Shoutouts income barely covers the server bill, which isn't that much at all. So it's basically running at net zero. So that's a positive I guess. If I can get 1 or 2 paid sign ups a month, then that would be a good target for the next year.

Scribbles saw a decline of 60% - 80% of active users, although it's been picking up again very slowly in terms of people blogging. A lot of folks like to experiment with different blogging platforms. To this day it was the best short term success of any of my projects. Great to see so much enthusiasm around blogging. I am happy I built something that I wanted, especially that I have a very unique use case for my updates blogs. Paid sign ups are far and few between. Scribbles has been the most expensive service to run, to date, too. Great eye opener.

Saying all that, I need to concentrate where I can make the biggest dent in terms of sustainable income and fun. So I'll focus on Tinylytics and Scribbles as priority.

I haven't had any regular payouts since May...

As always I do love working on many things at once and, now that the summer holidays are nearly over, I'm hoping to get back into a more stable routine again. Working for the web gives me a lot of joy and always love to share what I'm doing.

Thanks for reading.

— Vincent

Weeklog — August 2nd, 2024

Well, I guess we're fast approaching Christmas again...

Last week saw me missing the weekly update as I've been mainly busy with client work, and also some things I've been working on with a friend of mine — more on that later.

Gluon and personal apps...

A few weeks ago I announced that Gluon is going to be discontinued and that I am no longer going to concentrate on native app development for anything personal ("personal" — key word, doesn't affect client work). I wrote about this topic over the past few weeklogs so I won't link to it here.

The long story short — creating apps for the two platforms (Google & Apple) is just not worth it for me anymore. I don't like either company, they both alienate me, and they always add roadblocks to just shipping software.

I grew up around Apple hardware and software for the past 38 years... and the last 5 - 10 years have just been sad with no end in sight. I miss Steve.

Don't get me wrong, they still make great hardware, even though my keyboard doesn't work at times, and my TouchBar flashes at me (which I have fixed by putting tape over the top of it). However, something is amiss and my interest and hope has passed. They had plenty of opportunities here.

So... I am out.

My Apple developer account is now fully expired as of the 1st of August. Google will follow in October because I won't fill out the required forms. Apple was quick to remove my apps from their store, which solves the "30 days grace in case you change your mind" period (not). You can still use Gluon if you've have it installed (I think). Funny enough, I can't re-download it now even though I previously did — so that answers the question if you're able to download it again at a later stage — nope :(

Some people have asked me what will happen with it. Will it still run? I guess it will run, but I can't tell you for certain because I can't install it anymore — so I have no idea. It's a shame really.

Gluon relies on server sided components, that I run, for example pushing some of the feeds to a CDN (Bunny) so it's super fast to grab discover feeds and some others. That also includes push notifications. I built that because I wanted to better control it as Micro.blog doesn't (yet?) support webhooks when you receive a mention, which I could then work on. I don't know if they still work and get delivered. I do know that the server is still working to make that happen and they all seem to be delivering nicely.

Right now I don't know how long I will support the server side component. Maybe until the new year... maybe longer. I don't know.

Saying all that, this has been great for me because I can use my time elsewhere... like...

Micro.blog

Yesterday I wrapped up a major rewrite of the app to use the new navigation library. I'm happy with the way it has gone although there were some steeper learning curves than anticipated, but it's all good. Life is about learning and that's why I love coding.

Because now I don't have to worry too much about Gluon anymore I can fully concentrate on the MB apps. Having this rewrite done gives us all a level playing field without too much difference between say Strata, Epilogue and the main MB app.

Once the PR is merged I'm going to work on some little finer details around composing.

A new major task that I want to explore is around deployments around the web app, and also getting some sort of docker based local dev environment going. It's been on the list for a while and is way past due.

Scribbles

This week I worked on adding support for comments using David's excellent Komments system. I really love what he's done and you should check it out. The documentation is here if you're interested. It's super easy to add and just works as you expect it to.

Expect a few more things around comments. I'd like to add the Micro.blog conversation.js integration at some stage soon too.

I do have a few things planned for Scribbles, and they're in my head for a while, so hopefully will get to them soon.

Sublime Ads -> Shameless Plug

When I created Gluon I wanted a super simple way to implement ads in a way that I controlled, so I created Sublime Ads. It worked great and felt good to work on it. It had its ups and downs though with interest strongly tied to "ads" in general. The last time I did anything new was last year October, 2023. But it has been stuck since. This was a product for myself and I hardly did any sort of marketing around it. I really dropped the ball on this, but I can't change the past.

My friend Michał approached me several times over the past years about Sublime Ads and wanted to work together on it. I always said many things which then never came true (a character flaw of mine). This year though, things were different. I finally committed and let go (I hold onto projects like they are my children) and let Michał handle it.

So what's going to happen? Sublime Ads is still running, but will not get any more updates and will eventually be shut down. I will send an email to all that use it before the year ends telling them of this.

I practically gave the codebase (NOT DATA) to Michał. A new lease of life. We're going to work on it on the basis that I will keep working on the code bits and improve the product and add features as he sees will benefit the platform. He'll manage everything, including me. We talk about many ideas in general and also what I wanted from the original Sublime Ads.

Rest assured, no personal data or database has been given during the process and only the code has been handed over. We both didn't really ask or talk about it — because we're on the same page on these matters (even though we are friends and try to meet in person when we can).

It's still super early days but hope that I'll be able to blog about it more as we add new features and make the app better. Can't wait to see where this goes.

It's called Shameless Plug and if you're interested in creating your own ad network for your apps, I suggest you check it out. There are things that need doing, like implement billing and some other things before it's officially ready.

We felt a total new start and name was the only way.

I want to thank Michał for saving this project and believing in me over the years.

Other stuff

I added support for the ?ref parameter on Tinylytics so that they show up under sources. Thanks Jamie!

Sublime Feed is humming along, although there are issue where the background jobs just seem to fail — keeping an eye on it. Truth be told, I probably won't work on anything new here until after the holidays.

As always, I have a lot of things I'd like to do, however it's the summer holidays and I have been mainly concentrating on the freelance side of things — keeping me busy.

August will most likely be quiet on the blogging front, however feel free to e-mail me. Hoping to keep the update blogs lively though, so let's see.

Until next time.

— Vincent

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

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.

A moment of pause on the Fediverse

Update: Note that my fediverse address has been deleted and I am no longer discoverable there. Check out my feeds page to find ways to follow me (RSS or others).

I’m going to take a break from the Fediverse for a while. I’m going to try and go down the RSS only route for some time and see how it goes.

I’m incredibly inspired by Manuel and Amit.

Please have a look at my feeds page and pick up one that suits you. If you don’t have a feed reader, please get in touch and I can give you access to Sublime Feed. You can read about it here. Of course you can just visit my site and read here.

I’m also planning to restart my podcast. Suggest you subscribe. I will most likely share some project related stuff and small updates on those in a changelog style.

I probably will be back at some stage. I am done for now.

My interest lies in building software... so please follow along — this may just have a negative impact on everything I do — I have to be OK with that.

Here is to building, and blogging first (even if it's just for myself).

Please also feel free to email me at any time if you want to converse (in private).

✌️❤️

An introduction to Sublime Feed

It's my birthday this week (apparently I am turning 38 on the 8th according to my calendar reminder — I never know my exact age), and June is generally an awesome month, and so I am planning a few things to kick things off.

Today I am giving you a small breakdown of Sublime Feed, my feed reader I am building, what it does and doesn’t.

Let me just say this is how I personally want a feed reader to work and look, which means it's absolutely bare minimum right now... no bells and whistles. Just a feed of posts that automatically get fetched (no manual refresh button), no unread count (just a nice little "hey, this is new since the last time") and a love for the web — that means, for now, all posts you see will always link to the respective website.

I really love the web, well... most of it anyway (minus the ads and whatever cookie things), and seeing each personalty of each site really brings it home for me (especially if they are personal ones). I totally get the appeal of having a dedicated reader view, and that is something I will work on — but not today.

Exposing you to the real website also invites exploration, and I think as a default this is what I always want to have — yes, many reader apps have taught us otherwise — I am here to say that it’s OK. Some apps do this so very well and have real good taste.

I’ve been using Sublime Feed for the past week, and I am really happy with the way it already changed my habit of reading. If you want to have a feel for it there is the Scribbles Explore feed that displays posts in a very similar way — hey, I gotta copy where I can.

I’ll say this now. It’s not for everyone, and it never will be.

The Feed (My Feed)

So this is your very own, minimal, feed. It displays posts for all your subscriptions that you have, with an easy to see accent colour (which you can of course customise). Right now there are no favicons or website icons that you can override — I’m gonna work on that soon.

The motivation for accent colours and allowing you to override things is that it’s a personal experience for you. Your reading habit is yours and I think it’s nice to be able to tend ones garden.

"My Feed" shows a maximum of 50 posts per page, with up to 500 total posts. It’s all paged. If you want to read anything beyond the 500 you can always go to each respective feed and go crazy.

Here is my "subscription" page for the Scribbles Explore feed:

It gives you a quick overview of options enabled (more on that in a moment), and when it was last fetched. The fetching happens automatically.

Subscriptions

I had a hard time with naming this... because what is a "subscription"? Well, it’s just a feed, right? Yes... but it’s a feed you’re subscribing to... so I don’t know, maybe the wrong name, but that’s what I went with for now.

You subscription list is sorted by the latest you have added — I’m gonna add more filter options at some stage. Don’t forget I am only 1 week into developing this.

There is also an option to pin feeds/subscriptions (see what I mean?) to the top, donated by the paperclip icon (again, probably the wrong icon here). Pinned feeds also have their own dedicated "Pinned Feed" section, similar to "My Feed" — it’s just all the posts for all pinned subscriptions.

The idea is also allow a quick access to your favourite feeds from within the little menu (the logo has a dropdown like Scribbles).

I also wanted a bit of playfulness here, so I added some hover animations... so things just pop — here is Kev’s site jumping out at you as I hover over it:

Each subscription shows the last post date (again, not the best icon). Originally I had the time when the feed was last checked, but that felt a bit too much... and again FOMO inducing, so I got rid of it. Just know everything happens in the background.

It would be nice if I sorted that list A-Z or by last post date.

Anyway, one week in and that’s where I’m at for now.

Each subscription can be edited, minus the feed URL. You can add a name that suits you because sometimes I can get it wrong, the feed has incomplete data, or you want something that works for you. Then there is the accent colour of course. I went to each website and picked out the most prominent colour and added those as and when I added them — again I am tending to my own garden. Right now, when you add a new feed, it’ll choose an accent at random. I may offer a "suggested" accent for popular feeds.

On top, I am planning to surface a favicon and also allow you to upload your very own image at some stage this month. No idea when.

Then we have some extra options. Something that will hopefully set this apart from other readers.

First: You can surface author data, for feeds that have multiple authors and it’ll show next to the "subscription" name on the feed timeline.

Then there is an option to hide posts from your feed (My Feed) for a specific subscription... and this is what I actually really wanted for myself. I would love to follow a blog, but not have it show up in my general reading routine. This is for various reasons. There is a similar option in Gluon where I can "Pin" a user profile without actually following. Great for feeds that are more dynamic and have a lot going on. Or they can be on a subject you want to keep an eye on without wanting to have it show during your normal reading time.

And of course, you can pin a feed which then pushes it to the top of your subscription list and also appears in the dedicated feed.

One thing I want to add soon is have an option to get an email when a specific feed posts, for example Hypercritical. That’s one I want to read each time John posts, and I don’t want to miss it because I took a few weeks off from an otherwise busy feed.

Some tidbits

Of course everything is very basic right now. There are many feeds that I did not yet try and will probably fail. Posts that only contain an image with no post title or any other content don’t yet work.

There is a simple marker that shows your last read position — it’s updated every 15 minutes as you view the site and eventually disappears. I didn’t want to do anything too clever, just have a small indicator where the last latest post was. Because you loaded the feed page, it’ll know what the top most post was, and it goes from there — there will be ways to make this work better... but it works for my needs right now.

Feeds are automatically fetched in the background. When you add a new feed, it checks if it already exists in a global table, if so, you should immediately see some posts — if it’s new, it’ll go ahead and fetch posts within a few seconds. It’s then kept up to date every minute or so — something I will keep an eye on to see how it works out with more feeds.

I haven’t thought about "private" feeds yet that require some sort of login. And I probably won’t. I also don’t know about Podcast feeds, I need to experiment with that... it would be nice if I could surface a little player on the post itself.

As I said earlier, the post links straight to the website. I do store the text of the post so I could potentially use it for more than just a little preview. That will come and I have some great ideas already.

I have also worked on a "Mute" list last night, but decided to scrap it for now and will work on it on another weekend. The mute list just allows you to add words, which in turn filters out those posts in your feeds. Great when you agree 80% with the posts, but don’t like some of the other hot topics.

There is also no concept of "unread". I don’t need that in my life... and I know some of you do. I think having an unread count isn’t healthy. Each time you load up your feed it’s a snapshot of this very moment in time and you can just pick and choose. I think it’s easy enough to remember the post you just read and move onto the other.

I also understand that a lot of people don’t need another "service" for their reading needs — that’s OK too.

So...

... well, considering it’s all super basic and things are surely going to break... and that you have been warned... and that you understand that I won’t be able to cater to everyone just yet... you can email me here to get a registration link. Just don’t send me an empty email (makes me sad).

Sublime Feed will be paid, but not that soon — there are things I want to get in before I open it up. I am not sure about the timeline, but know it will be the same $5/month like everything else I do. I am still working out the details on how that looks, maybe a trial period or 10 free feeds — I really don’t know.

I would of course appreciate any bugs you encounter with adding feeds so I can make sure that I handle a diverse set of feeds — crazy how different each feed can be!

I don’t think I’ll be able to respond today with invites, but know it will land in your inbox by next week.

Worked on a rudimentary "last post" marker for Sublime Feed. If you've visited the feed page, it'll try and get the latest post that was at the top and set that in memory (using Kredis) — that is then used for subsequent requests so the marker stays at the same spot for 15 minutes.

Hmm, so my web app for Sublime Feed is nice. Need to figure out how to refresh the post list when you open it though — maybe through a service working perhaps. I can see myself doing an app for this though.

Standalone web "app" for Sublime Feed — gonna give this a test over the weekend as we're away. Love it a lot already! Best thing? No pull to refresh... it just does everything for you for that moment in time.

One of the things I wanted to do for Sublime Feed is have a dedicated "pinned" feed, so you can just read all the important subscriptions you have in a separate view. There is also the ability to just hide posts in your main feed — great if you just want to dip in every-now-and-then.

A list showing a few "feeds", 2 of which are pinned and one that has a hidden icon, meaning it will be hidden from the main feed.

Further on the subscriptions in Sublime Feed, when you navigate to any of them, it will give you a list of posts and of course bring across the accent colour — it's nice. Missing favicons and your own uploaded image if you don't like it hehe (soon).

Super happy with the way the subscription page is starting to look on Sublime Feed. It's got the latest post date and also when that feed was last checked.

Micro.blog is more than a pretty good blog hosting platform. It’s the distillation of everything I know and care about for the web. I hope to be working on it for many years to come.

— Manton's updated about page. Great stuff!

Was working on a few Sublime Feed bits this morning. Bringing across accent colours that are randomly set or you can add your own for each subscription. They are also reflected in your subscription list. This is just super basic and needs way more work. Happy it's pulling feeds & updating.

Well, happy that the super duper basics of feed subscribing and background fetching works for Sublime Feed. Here is some super basic feed with Manton's and mine posts from the feeds ✌️ So much to do 😅

Just some minor tweaks to choosing a feed screen for Sublime Feed. It adds what type of feed it is and also does a better job of handling feeds that don't include the hostname (DF for example 😱) — not to mention missing titles (sigh). Anyway, good exercise. Looks nice.