- jaypeters.dev
- Posts
- Final Features, Sycophancy, and Push Notifications
Final Features, Sycophancy, and Push Notifications
The Weekly Variable

The Weekly Variable
The “push” for notifications was the main focus this week.
A service layer laid the foundation last week, so I’m building on top of that in a few ways.
Plus YouTube growth and an AI downgrade.
Topics for this week:
Final Features
The scope creep battle continues as Wave draws closer to a release.
Last week I outlined a service layer approach and I’m still in the process of working on building that with push notifications but more on that later.
At this point I see 3 features left that will be necessary for go-live.
Since I’ll have a service layer now, I think it’s worth leveraging a few simple services that can’t run on directly on the app.
Push notifications are one of them, but the other 2 are moderation and video/image compression.
Luckily I found out last week that OpenAI’s moderation API is free so I can at least have OpenAI do a first pass on every image and text post from all users to make sure they aren’t posting things we obviously don’t want on the app.
So that checks the box for basic moderation.
As for video and image compression, this can also be handled fairly easily with one of my favorite tools, ffmpeg.
A simple service should be able to have ffmpeg scale down all videos and images uploaded by users first, then save them to the database.
Storage size isn’t so much the concern, but the serving (egress) is the problem.
Right now, with just me or one other person thoroughly testing, the app already hits 25GB out of our 250 GB limit of serving videos and images through Supabase.
This ffmpeg service should be really cheap to operate and save tons on egress costs in the future as more and more users swipe through videos and images.
Plus, with an ffmpeg service, I could create a rudimentary system to automatically moderate video as well.
OpenAI’s moderation doesn’t support video, but ffmpeg can cut screenshots out of a video at every second and provide a minimal process to check if the video contains any obviously inappropriate content.
Luckily these services should not be nearly as much work as push notifications have been, but always more work to be done.
Hopefully the scope is finally settling for the next few weeks.
Halfway There
The YouTube channel is still plugging along slowly but surely no matter how much I neglect it.
This week I hit my first milestone of 500 subscribers!
Given how much I’ve backed off in the last few weeks, I’m still really impressed with the progress.
It would be easy to fall for the “passive growth” trap at this point considering I’ve grown 30+ subscribers in the last week with 0 uploads or posts.
But I’m still thinking at about 1000 subscribers I’ll consider the Skool community approach.
I get a few questions a week on the current videos at this point so I would imagine there would be some interest in helpful AI Automation content.
If I get a few more posts out and growth continues at the current pace, it should only take about 6-8 weeks before I’m at 1000 subscribers.
Expect more uploads next week if you’re following along.
Sycophancy
For a stretch there was a trend of a new leaderboard topping model dropping every week.
Technically I think I saw AliBaba’s Qwen 3 came out this week but it hasn’t been climbing the charts.
Gemini Pro and o3 still sit comfortably at the top and remain my main sources.
On the flip side, OpenAI actually rolled back GPT-4o for being too “sycophantic”.
Apparently it had gotten too agreeably and overly positive, enough so that OpenAI saw it as a problem and rolled it back.
I glanced over the article, but I haven’t been using 4o too much so I didn’t see it for myself, but I could understand how that would be a bit of an issue.
Not too long ago I was highlighting how Gemini Pro pushing back on ideas was actually really helpful, at least in coding, so I could see why OpenAI would be quick to rollback overly friendly advice.
It was concerning enough that they published 2 separate blog posts about it so clearly it was important to them.
More on it here and below:
More “dotdev”
Part of the slowdown with YouTube content has been trying to limit the scope of the channel to strictly n8n content, but I’ve been debating expanding into full AI and development topics as well.
Since I spend most of the time vibe coding with different AIs, and that’s a hot topic right now, I’ve been wanting to talk about that process as well, in addition to the n8n automation.
Chatting with o3 about the situation, it recommended I use Wave development as content inspiration.
One awesome idea it had was to use Git commits as a source of content which I had never thought about but is a perfect example of where AI really shines.
It could easily take a huge code comparison and turn it into an outline for a video.
Something that looks boring and unintuitive into something informative and maybe even entertaining.
o3 also highlighted the path I was already heading down by using automations to help generate more content from existing content as well.
Much to do, much to record, lots of potential!
Time to really lean into that “dotdev” aspect of the channel.
Push Notifications
I had a feeling push notifications were going to be a challenge.
I didn’t completely know how they work mechanically, but I knew they were going to involve multiple processes.
At this point I have finally have a flow working where I can manually send notifications to the app on my phone, I just need to shore up the process so it can happen automatically after a new message is sent in the app.
Not the most straightforward path in getting there though.
I decided to use a Go microservice to handle sending the notifications, and luckily there is an unofficial Go library for connecting to Supabase which has worked fine so far.
Getting that up and running wasn’t too bad, only a minor rework of some syntax but it seemed good to go.
After that, I had to dig through Apple developer settings on the API keys and existing certificates to allow for Push Notifications to the app, then generate new certs for Apple’s Push Notification service specifically to allow for my Go service to connect to Apple’s servers to send push notifications to an Apple device.
Once all of that finally lined up, I was able to manually push notifications to the app which was great.
But then I had some trouble with handling the app state.
The app should have been checking if there was an unread conversation and then decide if it should clear the push notification because there aren’t any unread conversations, but it wouldn’t always happen.
It would take opening and closing the app twice to get the notification count badge to clear.
After some rework, I was finally able to get the app to reliably clear the notification after opening the app.
Only a few steps left after this.
I don’t have a proper trigger yet so I still need to kick off the whole process when a user has a new unread conversation.
And I also need to move the Go service to AWS because unfortunately it can’t run on my laptop, so I’m expecting some more config issues with getting the service running and connecting in the cloud properly, but it’s nearly there.
With that, a little moderation, and some ffmpeg, this Wave app will be fully prepared for a production release!
And that’s it for this week! Another newsletter all about the future: streaming, AI, crypto and divs.
Those are the links that stuck with me throughout the week and a glimpse into what I personally worked on.
If you want to start a newsletter like this on beehiiv and support me in the process, here’s my referral link: https://www.beehiiv.com/?via=jay-peters. Otherwise, let me know what you think at @jaypetersdotdev or email [email protected], I’d love to hear your feedback. Thanks for reading!