Vincent Ritter

Hello, I'm Vincent. I'm a dad, husband, geek and an independent software engineer. Check out the apps I make, personal ventures I'm currently pursuing, websites I worked on and other things like my blog posts and thoughts, my micro blog. There is also a now page, to keep me in check on what I'm working on right now.

It’s 19:26 here... and I’m going to bed. 1 hour 45 mins sleep last night/this morning. It’s catching up. My wife has been super supportive too ❤️

Hopefully when I wake up Apple will have approved the TestFlight build for Gluon, that would be really good.

I added a basic "Following" screen for now. If you load your own list of followers you will see all. If it's a different user then I'll only show you who you're not following. Going to add a website button too, if there is a URL available (I guess there always will be).

Added follow and unfollow functionality to Gluon. Also started with displaying follower count. This will only show people you aren't following though once you tap through, in reverse order...

Gluon - Progress Update 5

I'm going to keep this one short. A bit overdue from this very early A.M.

Progress has been steady, I worked a lot on getting the feeds to work better on initial load when logging in. Once you login, I used to call the 'posts/all' API endpoint to grab a bit more details for the user, here I said to take no posts as I didn't need them... however, as it was doing the call anyway I thought I should grab the posts there and then and save them. This reduces the amount of calls on initial login, plus it gives you your timeline fast once you are presented with the home screen! Before this change I called the 'posts/all' endpoint to save user data (like the avatar url) and then moved onto the home screen with your feed. Here I then load that exact call again but this time with posts. Inefficient.

Next I worked on getting images to load quicker across the board. All images are lazy loaded and cached locally. I'm happy I did this as my initial implementation was too slow and render blocking. I didn't like that. Android still needs a bit of work here but I'm happy it's actually working there too.

Another small tweak was how you navigate to a user profile, and then another one when you tap on a mention or something like this. When you tap on your own name, it actually takes you to the profile screen too.

Tapping on the tab bar icons, where you have any sort of feed, will scroll you to the top of the timeline. I know I know... every app does that anyway... so here we are.

To be honest, is was pretty early in the morning by the time I finished all of this... took me a long time, but was totally worth it. Anyway, I also started adding mentions, discover and favourites. So those are now in.

Here are some screenshots of the Discover section and Home Feed:

The Discover section is not final at all, I just wanted to get the API hooked up and the feed showing.

Another note about the Discover timeline is that it always grabs all posts that the API returns, this then saves it locally. When you reload, or it reloads itself, it will just override those posts with a new set - no flicker, promise. It's a bit limited but I guess that is the point of the discover section.

Also worth mentioning that the tab bar and icons are not final.

I have a TestFlight up that is waiting approval from the App Store team, I hope this happens between today and tomorrow so I can get the app into the hands of a few people.

My intentions for today are to work on conversation view and work on getting the images to show nicely. I'll also try and implement the favouriting to a post. I'm yet to figure out how to lay it out without messing around with the clean look. I do like swipe gestures but I feel the years of deleting email and messages just tells me swiping is for deleting stuff... Maybe just me going even more crazy. If you have suggestions or opinions, let me know.

And one more thing, I tested the app out in the wild today - seems to work nicely even with poor connectivity. I'll need to implement something that stops the loading bar from showing when it can't connect.

I made loads of improvements to Gluon tonight. I dramatically increased the speed of loading images and also the rendering performance. I fixed a few bugs and other things, which took me longer than I wanted.

Mentions and Favourites are all being pulled in now. I'll do a write up a little later. First some sleep!

Gonna work on getting a few bugs solved for Gluon and then adding Mentions and Favourites. I need to work on better error handling, for example when deleting your token and trying to fetch posts or other account related things.

One thing I want to try and solve with Gluon is to pull in posts that were missed or showed up later in the feed when initially grabbing the posts.

Would anyone be interested in trying out Gluon, via TestFlight, even though it's not finished and you can't do anything else except just look at your posts for now? I'm thinking of doing something by Thursday. I have the build up on TestFlight already, just need to submit it for approval.

Gluon - Evening 4 Update

Today I focused mainly on the profile screen. It's important and it's also important that it's up to date.

I rewrote some of the feed logic and also encountered a few bugs that I had to fix. However, I'm happy to report that I pretty much completed the profile section. There are bits missing like follow count and a link to the 'following' section, so I'll get to it at some stage this week.

So, both the logged in user profile is set and hooked up including anyone being mentioned in a post or anyone you happen to tap on in your feed. Right, here we go:

And one more for good measure:

It also works on Android:

Also looks great with a black and white profile image:

And a profile with a bigger bio:

Excuse the red. It's different. I'm planning to do something special with themes though at some stage. So if someone doesn't like seeing red... I understand. More a pinky red anyway 😁

All profiles you look at will have basic data locally stored, so it's quick to open if you happen to go back at some stage. I pull 10 posts (for the moment - I'll increase it to 25). I couldn't implement the loading logic for older posts as I think there is a bug in the API. I have raised this on the Slack channel. Anyway, as soon as you have loaded anything from cache, it will go ahead and grab the latest it can find - this updates any data and also updates all of the latest posts. It's pretty nice and seems to work quite quickly.

For the actual user profile (the logged in one, in the app) I'm going to add a settings header/icon that will open settings for you including some other settings. I know that in the image above there is a "Settings" tab. That will be gone! This is for me for testing purpose, allowing me to clear all cache, all user data (currently logged in user) and of course a logout button which takes me back to the login screen. It's useful as I'm making sure I start from a clean slate and that it loads and sets everything properly.

I have plans, in the distant future, to add something extra special to the user icon on the home screen. If there is a use case for it... I won't say what it is, but you can probably guess.

Ah yes, profile images. So... the API returns the avatar url without a problem, but when it comes to the Gravatar images, they seem to be super tiny. I wanted large profile images. So, I have to check if the URL is a Gravtar one and change the query string to grab a different size, if it's not from there I just leave it alone. Needs better testing though.

I also added link support to each post item. If it's a URL, I check where it goes and try and see if it's a user. If so, you got to the user profile page. If it's a link to something else I open up a Safari window that slides up. I'm planning to detect any links going to the Discover pages at some stage too, so that it loads within the app - might make that a user setting.

That's it for today. I'm pretty tired. I've had some weird head cold since Friday night and it's affecting my ability to sleep, hence I'm coding so late/early.

I'm not sure what I'll work on next, it will either be conversation view or I'll look at getting mentions and favourites working in the tab bar.

I'd love to get it up on TestFlight this week at some stage. It will certainly still be in active development but I think it would be great to get it into the wild to see what people think so far.

Working on the profile screen for Gluon now. Won't be too complicated. I found a few issue that I'd like to address, for example loading the profile image on first login - because I have a feeling it might not always be the correct one. I might be wrong though.

Nearly 5 AM... to go to bed or just to stay up to get my daughter to Kindergarten on time... hmmm. I'm also quite hungry now.

Gluon - Evening 3 Update

4 hours in and I'm happy to say I have made good progress. Well, at least I'm happy with what I managed. Although, it's not what I had in mind - but here we are.

First of, I took it closely to rewrite some of the data logic on how posts are grabbed from As I save them locally to device, for quick launch times, I wanted to make sure I do this in a quick way without having to check through existing posts. The API is pretty good, so I could grab posts after a certain post ID. So that is what I do now. So much better in my eyes.

I found a small bug on the login screen that would just keep trying to log in with an expired key, after opening an email, every time you typed a letter into the input. So basically it kept thinking I was providing that token that was loaded up from the email.

I did want to work on the profile screen and other sections like Discover etc... however, I started fiddling around with the post views. So, here are my very early preliminary results:

I'm yet to implement handling of the links within the post, although I have it set up to print to the console for now - at least I know what is incoming. With that I'm planning to just check what the link is and if I should open Safari (via app) or load a profile if it's an "@" to someone.

Images will also be dealt with. I didn't manage to implement what I wanted just yet for images. Basically I want to render them after the post in little squares, and size those depending on how many there are. Tapping on them will open an image view.

All images are cached and should only be pulled once to the device... this is only temp storage, so if the app decides to kill itself it may loose those cached images at some stage. Better than nothing. Oh and they lazy load too.

Oh, good point actually - I'm using square profile images. That's on purpose as I'm not a fan of circled images. Maybe I look at my keyboard keys too much... I'll probably make it a user option at some stage though, so you can customise that... plus some other stuff that I'll reveal as I go.

Another point of note is that I won't implement an icon/message of "new" posts that are loaded in (like TweetBot did - when I used it). I'd like to avoid the feeling of "OMG I need to read all of these". Rather have you in the moment instead of sitting in a coffee shop with your family/friends and trying to go through the full list, because you feel obliged. Personal preference to be honest...

When you first load the app you only get back 30 - 40 posts on an initial load of 'posts/all/' on, one thing I wanted to solve is, as you reach the bottom of the list, is to load in older posts and add them to the list. Happy to say, this works nicely. I grab 15 posts at a time.

I do need to figure out how to communicate this to the user, that I'm loading posts and that they are ready and that you can scroll down for more. My current plan is to show a loading icon at the bottom of the view, instead of top, and then check if posts were returned or not - if so just say: "More posts loaded below" or something like that.

I'll also need to figure out how to remove a post, if it was deleted... I don't want to think about that just yet though...

That's it for now. Tomorrow evening I'd like to work on the user profile page.

Midnight here, just. Going to attempt to re-write some API calls for Gluon. Now that I slept on it I found a nice solution to some of the problems I had yesterday with setting new posts coming in from

Gluon - Evening 2 App Update

Today I'm tired, and also feel I haven't managed to knuckle down as much as I wanted. I feel progress was slow today. However, I do feel that the time spent was just me getting used to the API.

So, where are we... Now that I finalised the login screen, here's a screenshot. I've added the bottom section to encourage people to sign up if they don't have an account. And I also added relevant error messages, that might be useful to the user.

That layout also seems to work across different screen sizes, so I'm happy with that.

Once you pass Auth, you get to go to the Home screen which will load "all" posts in your timeline. This is the exact behaviour as per website.

I've got preliminary data coming in, including the user avatar for the profile once login is successful. I haven't styled the posts in any way at all - I only wanted to get some raw data.

Another problem I wanted to solve is to avoid a blank slate when the app was closed or killed and it forgets what it downloaded. So, when we come to the Home screen it will check if we saved anything locally, if so it renders those posts and then it goes ahead and checks the feed for anything new, which in turn saves them locally.

There is an API call to that allows you to check how many new posts were since "X" id... however, it only returns a count and not the actual posts - that would be a nice addition. That means, I'm comparing the old list with the new list of posts that I grab from the server, check if the id is already in, and if so... don't save it.

Anyway, here is the not so glamorous view of the feed:

In the header you can see my avatar, that will link to a profile section and ultimately a settings section. Although... I'll probably tweak that ever so slightly. I'd like to keep the right of the header free, for creating new posts - when the time comes.

Also note the "syncing" icon at the top. That is nothing set in stone but useful for me as I work on it.

Plan for tomorrow is to style the post modules, so that I can re-use them nicely.

Evening 2 for building Gluon starting now. I'll work on the tab navigation, basic profile screen and perhaps basic styling for posts. Let's see.