Vincent Ritter


All my past blog posts for your viewing pleasure.

Gluon for - TestFlight

The time has come, the TestFlight build for Gluon is now available. I’m excited to get this into the hands of people.

This initial release is available for iOS. I’m going to be getting an Android build out next week and will announce this separately.

I have created a Trello Board for anyone interested to see what I’m working on, bugs and features. Here’s the link:

If you find bugs, please email me at… or They both work.

There are many things still outstanding and I will work on them in the coming days and week.

If you have messaged me with your details, you should now have the invite. If not, you can sign up to it using the public TestFlight invite URL:

Happy testing and please let me know what features you really want or where I can improve. Please remember this is an early build and has a few missing features.

Here are the notes from my TestFlight build:

-- -- --

Thanks for testing this early version of the Gluon.


Replying and composing is not yet implemented.

Favouring posts is not implemented.

Please test the following:

1. App login with both email and/or token.

2. Browse feed, mentions, favourites and discover.

3. Tap on profile images to load info and posts.

4. Check for overall performance on loading each screen.

5. Navigate to other users followers.

6. Follow or unfollow (if you want).

7. Pull to Refresh on any screen - should update the feed/section in question.

8. Open links within posts.

9. Tap on a post and it will take you to a conversation view.

The app includes a settings screen, this is for test purpose only. You can do the following:

1. Logout - this will clear the secure storage of your user credentials and all posts data. This will also reload the app.

2. Clear posts - this clears all posts in your home feed.

3. Clear All Storage - this will clear all data stored on the device but will not clear the user token - this will reload the app.

4. Update build and reload - this will try and fetch the latest build and download it, it's magic, and I may ask you to do this sometimes if you're having issues which I'll hot fix. Note: this will only be available for the TestFlight builds.

-- -- --

I’ll be working on getting replies working and/or perhaps image viewing.

Happy testing.

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.

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.

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.

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.