Vincent Ritter

Hey, I’m Vincent. I’m a dad 👨‍👧, husband 👫 and an independent programmer 👨‍💻 that also freelances.

Browse my blog timeline below and use the menu to find out more.

Timeline Subscribe...

Today I’m thankful that, in my wife’s family, we have a little place in the countryside that we can escape to. It’s only 20mins away, in the car.

Enjoying the sun, nature and the sound of no urban surroundings.

Finally got to bed at 06:00 this morning. My mind was way too active…

5 AM...

04:00 AM and I just finished the VAT logic for Sublime Ads. What a pain… but ultimately worth it. Works both ways, between Stripe and the web app itself. That was important for me.

As a business in the EU I have to make sure to charge relevant Tax/VAT/GST if subscribers are based in the EU. A bit of a pain to implement. Although super important, and I want to get it right.

Trying to display it nicely, if you are in the EU:

Has been lovely and warm the past few days. ☀️ The evening sky has been lush, and hearing more nature than cars is a breath of fresh air.

Cleaned the windows. Cleaned the ceiling lamp shades. Cleaned the place. 🥵

I’ve been trying out Stimulus JS today. I kinda like it. It's the correct amount of magic, without a massive headache.

Sublime Ads - Choosing, and then changing, payment providers.

So yesterday was interesting. I spent all morning and afternoon integrating Paddle into Sublime Ads, but then it dawned on me it’s not really developer friendly and there is no way I can separate test orders with real orders. Turned out to be such a massive pain. I had to use my very own card, although with a free token. Eventually it just refused my card...

Then I figured out that all their invoice emails have click tracking and spy pixels. They’re using Postmark for sending emails, just like me. Click tracking is off by default… and that is how it should be kept.

I wanted to use Paddle because they act as a “Merchant of Record”, which is great for someone like me based in the EU. It means they are a reseller, as such, to my service/software. Which means they are responsible for accounting and declaring correct VAT and Tax collection with the tax man.

EU tax and VAT law is super complicated, heck I even have an accountant to do everything for me for my small client list. So having a service like Paddle would be great, as I don't have to deal with writing a program to generate correctly formatted invoices for my accounts.

Unfortunate that it didn't bring me developer happiness and also super unfortunate for a bad customer experience with the emails (tracking pixels and such).

So, what now you ask? Well, I'm using Stripe. They opened up to allow Polish based businesses to use the service last year.

I'm working on integrating it at the moment, with PROPER nice test payments and test cards - allowing me to trigger different scenarios.

On top, I decided to use their Checkout integration, which suits me super fine and I don't have to deal with extra implementation steps and headaches. As this is an MVP I'm building, I don't want to mess around. Stipe has super awesome developer tools, that work.

As you can guess, I was up for a very long time yesterday.

What works already:

There are more things I need to integrate, especially for EU based customers, however I'm happy I got some of the basics done now - even though I died a little inside when I figured out Paddle just isn't there yet.

And if you're interested, here is the Stripe hosted checkout page:

I allow you to add your payment details at any time. So any trial days remaining will be passed to the payment screen without a fuss as long as you have more than 2 days remaining on your trial (it's a Stripe limitation, but I get it!).

As I'm EU based, I have to charge the correct VAT amounts for EU customers, so I will need to work on that next and make sure it all works as expected. Something I was hoping to avoid, but I'd rather do the work and get it right and not worry about shady business practices.

Whilst billing is super hard, I'm hoping I will have that section completed this week at some stage. Which means I can start work on the actual functional aspect of Sublime Ads... which are the ads.

Having second thoughts on using my chosen payment provider, Paddle. Looks like they use Google Tag manager in their little payment pop up and other tracking scripts. Hmmm. Not to mention 3 separate resources injected onto my billing page...

Made some nice lunch 🤤

Two days now without checking the news. Only checking a site with stats on it, but no news! I slept better last night. Hope to continue that trend for tonight.

One more screenshot of the Settings page for Sublime Ads. Fully functional, except password changing - working on it over the weekend. Super nice to work with Rails and Tailwind. It just works. Developer happiness!

Now that I finally announced Sublime Ads, I'll share some screenshot of the UI, specifically the Profile section in settings when you want to change your email.

Just looking at stats about mortality percentages and other things about “you know what”. Those odds are much lower than what I had when I signed off on my lung operations in my earlier life. Just for my own perspective of course.

Introducing my short MVP project challenge, Sublime Ads.

Let’s talk about taking your mind off things. Last week I had the itch to start a long standing idea of mine. Not only to take my mind off things, but also to get out of my creative block with another project of mine.

Without further ado; Sublime Ads is a platform that allows you to host your very own ads within your apps, websites, or wherever else.

Think of it like the Overcast Ads platform that Marco built for his very own app, but for use for everyone - especially developers that want to have something like this, just like me. It can even be content creators or other creative folks - it really doesn’t matter.

Not only that, it is privacy focused from the start - from database encryption to only tracking (which can be disabled) taps/clicks on the ads. This data is just for your purpose, that you can communicate back to your potential advertisers. Apart from that, zero tracking. It’s built solely by me, has no funding and isn’t owned by a VC corporation!

The MVP challenge

There are many things I have planned, however my focus for the MVP (minimum viable product) are the total bare minimum features to make it useful for myself (and hopefully others).

Namely:

This is very bare and there are many things that I want to add, like a JavaScript drop-in for websites (that is privacy conscious and super lightweight!). However, the above gives me enough features that I need right now for my own things.

Achieving the above already is a full product that I would be happy to ship. Afterwards I can move where the puck is skating and play it by ear on what customers would like to see (like payment pages or Team accounts).

Timescales

I started last week and copied across the login and registration code that you can find on Picard.sh. Initially I teased at the idea of “one week” but it totally dawned on me that it’s way too short! I’m already obsessing over small details, which I’m totally trying to avoid now and writing down every single detail that I don’t need for the MVP. Although, I want to make sure it looks good at the same time.

It took me approximately a week to work on the Settings page, as there is a lot there to manage your account. So gauging from that, I want to say roughly one week for each section. That means the “Ads” screens, “Categories” screens and a basic homepage/dashboard.

That gives me 2 - 4 weeks to launch this. Which I think is a good balance between everything that is going, client work and other commitments.

I think that is a reasonable timescale to say the least.

Testing

Initially I want to open it as a beta, for a few people to try and give feedback on. Even if you’re not interested in the product itself, but you feel like giving it a try and have a keen eye for things.

Just like Gluon, I envision Sublime Ads to be built in similar light with help from the user base and community.

So, 2 - 3 weeks… and I hope I can start inviting!

Another project?

Yes, I’m aware I wanted to have another web app project out the door already. However I’ve been busy with client work and then immediately fell into creative block on the project. Not only that, it dawned on me that Picard.sh is a very complex project. We’re all in a very complex life change at the moment and the thought of having to work through Picard, with many unknowns and super complexity, would just not sit well right now.

Saying that, it’s not all wasted. I already took most of the Login and Registration logic from Picard and am using it in Sublime Ads.

With Sublime Ads being built out, I’m hoping to use the general design and transplant that back into Picard. So in a way I’m working on both projects at the same time. Sublime Ads gives me a more immediate remedy of something I want, whilst also giving me the direction and drive I need for Picard.

Technicals

Sublime Ads is built with Ruby on Rails using your classic server side HTML rendering (like it’s supposed to be), with a bit of tiny JS sprinkled on top for niceness. At this point there is no JS outside of the out-the-box that you get with Rails. The front-end is built on Tailwind CSS. I can only recommend it because it gives me flexibility and speed - not to mention cross browser peace of mind. Payments will be handled via Paddle, just to make it easier for me as I don’t want to deal with the headache that is accounting and tax/VAT/GST!

Find out more

Enough reading. You can find the Sublime Ads website here and you can sign up for a beta invite if you want to give it a try when it’s ready (even if you just want to tell me how bad it is!). Don’t worry, no third-party email list and zero marketing. It’s all handled in-house by myself.

There is also my usual dedicated development blog, which you can find here. That will be updated regularly… and you can see a few posts there already.

More updates soon with juicy screenshots.

Splashed out on iA Writer because it’s a nightmare to export anything useful from Apple Notes.

Gluon for iOS, 2020.3, was rejected by Apple... because... drumroll... the Gluon.app website includes the Google Play Store download link and references to Android.

I’m going to announce my little side project a little later today, doesn’t mean you can’t go to my website and get a good overview of what it is. I’ve been working on the web app all week and have loads of blog posts to share already.

Here we go. Now I can sit back and wait.