Vincent Ritter


All my blog posts for your viewing pleasure.

Initial Gluon 2.0 alpha release

I’m feeling a bit under pressure to release Gluon as the older TestFlight version has run out. So in an abnormal move, I’m just going to release what I have to my lovely TestFlight testers. Rather have that away from my mind so I can concentrate on other things too.

It’s far from complete and it has more features missing and many bugs compared to my last public build. However, it now has incredibly strong foundations for a great future (so I hope).

The coming weeks and days will be busy getting it ready with feature parity with the old build… so give me a bit of time to work on those.

Biggest things missing from this new build:

  • Replying (end of next week)
  • Account/Profile screen (end of week)
  • HTML feed (the posts, they still need tweaking and sometimes miss a few things - this week for trying to sort that)
  • Gallery view (maybe this weekend)
  • Post actions eg: reporting user, favour post etc (no timescale)
  • Discover categories (no timescale as I’m implementing a custom JSON feed for the categories, so I don’t have to push updates out when there are new things)

There’s probably more…

Android version will also be released in the coming weeks.

The last app build was between 22Mb and 26MB. This one is going to be ~5MB 🤩

It will hopefully hit your devices as soon as Apple review it:

Feedback is always welcome (

Gluon - a new beginning

It's been 5 steps forwards, 6 step backwards, a few missteps and then back to square one. That pretty much sums up the development for Gluon the past few weeks.

It wasn't as such as a standstill, it was more a question of how and finding a perfect middle ground. Not to mention coming to the realisation that I am only one person, that also has clients, and that I won't have time to learn big new frameworks from scratch without spending considerable amount of time. I want something I can develop using a workflow I know and am comfortable with. I also want to be reactive to change and be able to make changes with ease across both platforms, reasonably quickly. I don't want to duplicate my work and I certainly don't want to be behind the drag curve (aviation nerds will like this saying!).

I realise that I said a few things about my gripes with certain frameworks and workflows, but the truth is... I work with them every single day! I feel like I'm in a unique position to make this work for me and get better at what I can offer for clients and of course for pushing forward with my very own ideas that I want to work on. So for me the developer happiness is that I work and continue to improve with the tools I work with every day... even though sometimes they don't line up with my personal standards or just annoy me.

Anyway... there are personal objectives and views and then there is reality. I'm happy to accept reality.

So, I can only apologise to be a flag in the wind the last few months!

A new beginning

The first version of Gluon ran across multiple platforms using React Native, which allows you to build native apps using Javascript. That's pretty cool (notice the change of tone).

Unfortunately version 1.0.0 was riddled with wrong doings since step 1. The official way to install React Native and get started is using a third party framework called Expo. Expo, on paper, is amazing. However, once you realise what it actually installs and how it locks you in... you don't want to ever touch it again. Last year I built a React Native application for a big client, using Expo as the starting point. It's a regret I/we have to live with! Sometimes the "quick" way isn't the right way, and it's certainly true here.

Gluon 1.0.0 weighed in at roughly 26MB on iOS and Android... and that's out the box!!! I haven't even added any single line of code at that point. For me this should have already thrown a red flag.

When using Expo, they'll add loads of unnecessary Android permissions that the app wants out the box. Yup, you can remove them... but the problem was that there were still many areas of doubt! This shouldn't be the default out of box experience. I don't need to know any precise information on location, or phone status, or access to contacts and and and. I'm not building a shady app. I'm building an app that users can trust!

Anyway, I took time to work on a super clean React Native build using the "old" way of installing a project. The installation and getting it to run was surprisingly easy. However setting the right direction on how I wanted to code and keep it all modular and easy to work with took a few trial and errors. It was painful and I did loads of researching!

I'm going to share some screenshots in a minute, which has some code running already, however the most important part is the build size of the app...

My pure native iOS Swift version that I shared a screenshot of the other day, weighed in at 12.8MB out the box with a few navigation controllers and the login screen. Not bad! Less than most websites for sure, ha!

Now, I've got the build down to 3.8MB! This makes me happy! I know that many people probably don't care about things like this... but I do!

Introducing the start of Gluon 2.0.0

Version 1.0.0 was a playground... I should have called it Version 0.0.1. Anyway, 2.0.0 is fitting and it marks a new beginning for Gluon. One that I'm happy with and I'm hoping that users will be happy with too.

I can re-use most of the codebase for Version 1.0.0 and bring it across to make progress quickly, however I'm reworking the lot. It's a great opportunity to do just that. Version 1 was built super fast in pretty much a solid one week (for most of it), which served its purpose! The code isn't bad, but it's not the best it can be. Sure, nothing is perfect but I can see how it can be improved greatly. Developer happiness, right?

There will also be finer enhancements with the UI and a better integration into the real native navigation controllers for both platforms. Version 1 used something called 'react-navigation' which is the recommended standard (again). Unfortunately it only emulates the navigation behaviour found on both platforms, there is nothing native about it. That means that speed and, most importantly, accessibility was and is, crap! Well... no more. Now I'm using the excellent 'react-native-navigation'. It was a bit painful to set up but well worth the time!

Screenshot time

Now that I hopefully set the tone... here we are at the humble beginnings once again. I spent the weekend working on getting the base screens set up, with their real navigation controllers. I had a few problems, but I finally managed to get past that hurdle... build and compile errors and what else not.

Here is the tab screen, after log in. Yep, get a shock, there is nothing there!

Android left, iOS right. Notice the difference in the tabs on Android? Yep... those are native and react as you expect on Android. That made me happy!

Something that wasn't possible before was listening for "viewDidAppear" events or "viewWillDisappear", you'll know them from native iOS development. Pretty handy! Out the box you would have to listen for "onFocus" or "onBlur" events on the window DOM, which was painful and never really was that good to rely on to clean up stuff like cancelling network calls or other things.

I also now have the ability to cache the current screen, the whole lot of it. So when you come back to the app, after it has been killed in the background, you'll get the most recent cached version which is followed by whatever I have to do to fetch updates and refresh the UI in a meaningful way.

With this set up, I worked on the login screen next - I took the existing design and ideas and tweaked it ever so slightly. I'll probably make it a bit more sparse.

The colours at the bottom are the shades of orange. However, I'll probably just create a small button under login that says "Create an account" or something easy like that.

That's the design done, so now I just need to reintegrate all the API calls and logic. I already have a solid way of doing it, so I'll probably use most of what I did.

Next steps and timelines

The next step is to work on the login and a nice way of displaying what is happening as you log in, something that I didn't really think about too much in v1. Hoping to have this done in the next few days including creating a solid foundation for calling the API.

Then, step by step, I'll be working on getting everything (mostly) into the app again. I'm conscious that the current TestFlight build runs out in about 26 days... and that there is no version for Android available at the moment.

It's my hope that I can get a build out that displays the timelines nicely and profiles within a few weeks. It won't have 100% of the functionality as per version 1.0.0 though. However, I'll be able to build them out relatively easy. Replying will probably be missing, but not for more than a week or so. Settings will also not be there for now as I rework some of the UI logic that plagued v1.

Anyway, just a huge thanks for all the nice emails and notes I received. I'm hoping that the app makes a meaningful contribution to the community in the long term.

Thanks for reading.

Gluon - Android update

The past few weeks I took time to look at all my options with getting Gluon back on Android.

I wasn't happy at the end of last year on the whole process of developing the app with React Native... Starting from scratch with the bare minimum that is required to get the app running has been a breath of fresh air.

The app size went from ~27MB down to around 3 - 6MB depending on the device. On top, performance has been improved by some crazy number. I managed to remove all the bottle necks that crippled the earlier builds. I'm happy with this.

Also, when I first set it up it added CRAZY amounts of permissions that it wanted access to out of the box. If you noticed that in the Play Store listing then you know what I'm talking about. No more!

Saying that, I have a working build... unfortunately I'm having problems with the production build to run on a new device. Because... don't know!

I'll be starting a new round of "internal testing" in a few weeks, so if you'd like to get back onto the list please please please let me know as I'm starting fresh.

On top, I managed to add support for Android 7.1 upwards and have tested it all the way down to API 25.

Here are some screenshots of the build in action, enjoy them.

Invisible Cities - new website launch

I'm happy to announce that my friend Chris and I launched a new website for a client of ours earlier this week.

Invisible Cities started as a social enterprise in Edinburgh, Scotland, that trains people that have experienced homelessness to become tour guides. It now covers many more cities and is growing.

With that need in mind we re-wrote the website from scratch... well, Chris did anyway 😁 The original site, developed by myself, was only designed to have one city in mind... with other cities wedged in - so we made it super flexible using the only true and awesome CMS... Craft CMS.

Chris took the old design and some of my sketches/ideas and turned this into a beauty. I'm super happy with the result.

This site is the first of many that goes under the "Two Peaks" label, which is our little agency that we're slowly building. I'm hoping to announce more as we go.

Next stop is a custom booking engine for Invisible Cities, which will be based on Simple Schedule. Can't wait.

Thank you Chris.

Visit the site.

A week in review - Week 1, 2019

With the first week of the year coming to a close I thought I'll do a little write up of what I've been doing. The purpose is to guide me on my journey to becoming calmer.

I'll start from Wednesday, as I was still in holiday mode on Monday and Tuesday.

  • Wednesday: I started by looking at a few emails and writing down a few things that I want to concentrate on. Took care of a few tiny coding related things. Also started work on Vorto, just to get me into the mindset again - bit of Ruby on Rails fun. Then it was already time to pick up my daughter at Kindergarten. Had a bit of 'fear of missing work' (FOMW) in the evening. I played Stardew Valley until 03:00 AM.
  • Thursday: Took some time to work on Vorto and also make some personal plans on what I want to achieve with it on a timescale front. I then looked at alternatives to building native apps on Android, specifically for Gluon. I mentioned that I don't want to write my app with Javascript. So I installed Visual Studio for Mac and had a very quick play with the Xamarin framework. Looks promising. I'll have to write C# but that's fine with me, it's what I used to do in a past life. Had more FOMW in the evening...
  • Friday: Had to go to the dentist at lunch time, that ruined my day. So went out after and ate Sushi at the local Japanese. Thankfully they changed the music so it wasn't a pain to sit and eat. In the evening I worked on Vorto a little. FOMW was over the roof! Watched The Hobbit (part 1) in the evening.
  • Saturday: Had a chilled day. Didn't open my laptop until the evening. Spent time playing and being with my daughter and wife. Lego building! Also stayed in to watch a few movies together. Was nice! Had the urge to code in the evening, so I opened up the laptop and booted up Xcode... however I stopped myself from writing any code, that would violate my new calmer approach to work. Watched The Hobbit (part 2) with my wife and had a glass of home made wine (Thanks Michal!), or two. To my amazement I picked up a book (fiction) that I wanted to read. I read 5 pages of "The Windup Girl" in bed. I haven't read much fiction in my life (maybe 5 books, but never to the end!), I usually prefer factual/science books.
  • Sunday: Today was relaxed, we all woke up at 10:30 and had a relaxing breakfast. My wife and I finished the movie from last night whilst our daughter was playing in her room nicely. Always great when she manages to play nicely by herself. We usually have to play with her. We left at 13:00 and went for a nice walk along the frozen river. It was too cold to make a snow man, the snow was too icy. I then cooked something for us on our return at 15:30. My secret passion is to cook simple meals (Asian/Japanese inspired). We watched Moana with our daughter, followed by playing 1.5 hours with Lego - although I wasn't allowed to use all the parts, she was giving me specific instructions. I didn't work at all today.
Walking along the river next to our place. My wife pulling our daughter whilst I took the picture.

Overall, I think it was a slow week. Though slow enough to take notice of my mood and other various things like the fear of not working. It was great to be able to take notice and stop my urges to go to my laptop to "work".

The week ahead I'll be ramping it up a little, however I'm happy that I took a slower approach this week. I'm feeling happy, except that tooth business...

Tonight I'll finish off by either playing a game or reading a book. My old passionate gamer in me is calling though... so it's probably already decided what I'll do.