Vincent Ritter

Hello, I'm Vincent. I'm a dad, husband, geek and an independent software engineer that also freelances. Check out the apps I make, personal projects I'm currently working on, websites I made and other things like my blog posts and thoughts.

A calmer new way forward

Happy New Year to everyone reading this, it’s 2019 and I’m approaching 33 years young in 6 months. Most people make New Years resolutions, so I guess what follows will be mine. However, this is a long term resolution from now until I’m no longer able to work and well into my older self. I must admit, it’s a pretty big goal to set for a resolution.

It’s one I have been thinking about for a while now and re-confirmed by reading the book It doesn’t have to be crazy at work (https://basecamp.com/books/calm), from Basecamp.

The book touches on many points about working, and a way of working at Basecamp. However, I think all aspects of this book can also touch everyone at any level. Even as a solo freelancer. It certainly brought out what I'm longing for!

Given I had a 11 day break from touching code and projects, I had some time to reflect and turn this into something more concrete.

2018

2018 was a roller coaster for sure, with a bleak outlook, but my luck has changed for the better. Which I’m thankful for. During my most depressed start of the year I shipped Simple Schedule, which ultimately was worth it (even though it turned out to be a free product)… no matter how hard it was to keep going when I knew there might be no food on the table in a few weeks time. I only know how to do few things good enough to provide a living. Coding is one of those, flying aeroplanes is another.

After shipping, and after another few weeks of arms up in the air on what is happening, I started work on freelance work with one company (thanks to a very good old friend of mine). This was great and a fresh breath of air… finally! It was hard as I had to learn new frameworks and also try and fit in with their way of doing things. After a successful first assignment I was handed another one, and another, and another! This carried me until now and I will continue to do so, hopefully, for the next few years.

However, shortly after I started the first project I was offered more work from another company… this I blindly accepted. It was great to have the extra work to pad up our financial life. I took on 5 extra projects from this company. It wasn’t great pay, but I knew it was important to have a back up if anything went sour.

This ultimately led to many days and nights of working. Too much work. Not much sleep and not quality sleep at all when I had it. There is nothing worse than dreaming about coding a particular problem when you spent all day on it. Your mind doesn’t rest.

This was my fault… I pulled every single card I had on my deck to get work, I was desperate!

It doesn’t stop there as I also had a long time personal client come back to me saying they wanted a refreshed website. I hired my friend to do it and take away the pressure. I’m thankful I did that, otherwise I think I would have ended up in a hospital bed.

By the end of 2018 I had two smaller projects to finish which were confirmed projects in Summer. However I was completely out of energy, totally burned out. I tried a big push just before the holiday to make it. I got to 99%, 4 days later than I wanted. That meant 4 days of even more stress to finish everything in time for the holidays. In hindsight, it wasn't worth it.

Enough is enough!

The above pretty much sums up my life until this point. Working countless hours with little sleep, year after year. Enough is enough. It can’t continue this way. It will kill me if I keep going like this.

Bring on calm

It’s now time to become calmer and more resourceful on how I work. I have a great opportunity to make changes as I’m lucky enough to be able to work from home and don’t have a boss to ask (except my wife!).

So here are my steps that I’d like to stick to from now on, no exceptions unless where totally needed in short bursts (if the world is on fire). I should group these but they are universal to everything I do…

  • No more than 8 hours of work per day. 5 hours coding is long enough in my opinion and you can achieve a few days work in 5 hours working for yourself than being stuck to a chair in a company full of distractions and bosses.
  • One big thoughtful client project at a time. Thoughtful is important!
  • 70/30 split between client work and personal work which I’d like to shift to 60/40 and then 50/50 by end of this year. This split is allowed to fluctuate to more personal time if client work is somewhat slow or I feel the need to hold off a little.
  • If a client project is too big to fit into 5 - 8 hours a day (or the 70/30 split) to hit the deadline I will go ahead and hire outside help. I don’t want to go above my hour budget. This also means accepting the fact that the take home money is less.
  • No more tiny task management - I always longed for getting into OmniFocus or Things, but the less I have to manage the better. Bugs I’ll keep around in Trello for anything I work on (or probably something else), but I don’t want to micro manage anything anymore. The less the better. I see people all around making themselves busy with managing huge task lists - why?
  • No more statistics or tracking of things - I don’t track anything on my website or services already, so this particular point means no time tracking for personal stuff (and client things when not needed). No more activity tracking of workouts or steps or calories. I don’t use Screen Time for iOS… nor am I interested. I don’t have a need to track everything and anything I do. Just another distraction. I want to go to the gym, have a great workout, not be distracted and feel great afterwards - I don’t need a computer to tell me how well I’m doing - the feeling is more important.
  • No working on weekends. Zip. Done. Family time!
  • Take on engaging client work - nothing like flexing the brain muscles. I’m in a unique position to do this to most extend so I’d like to shape my future this way if I can. I love building things from ground up. I don’t want to get too comfortable with doing not so engaging work… I have a few things lined up already here, so I’m happy with that.
  • Letting go of FOMW - This is what I call the fear of missing work… it’s a problem and one that is hard for me to get to grips with. Just sitting here and writing this post I’m thinking about what I should be working on… getting a little stressed about it, thinking too much about it, worrying. I need to handle myself better. I need to keep an overview of the bigger picture and not so much the immediate. I need to get to grips with walking away and feeling OK to do just that.
  • More passive income. Something I'll blog about soon. You can get a taste of that here.

There is so much more I want to say here, but I want to keep the list simple and clear. I have a tendency to overcomplicate things, something I want to work on too.

I want to simplify. Be calmer. Be alive.

One of the great perks of being self employed: My daughter is supposed to be back in Kindergarten today, but she's sound asleep and looking comfy. I'll let her sleep. No pressure to get her there. She can stay. It's worth it.

We noticed you tried to play Black Mirror: Bandersnatch. Unfortunately, this is an interactive show that is only compatible with newer...

Then don’t show it to me! Stupid... what do these people think sometimes?

Gluon - An update for Android fans

Yesterday I sat with Michal (@michal on micro.blog) and we had a quick talk about Gluon and my recent blog post explaining why I’d like to discontinue it for Android.

Whilst most things in this article are true, I had a change of heart!

So, instead of dumping it I’m going to be creating a special build just for Android. This probably won’t have feature parity of the iOS version, but will have most of the Gluon DNA.

I’ll be starting from scratch with a minimal build using what I know. I’ll take to heart performance and also use the minimal build tools I can use to get the best out of React Native and Android.

With a fresh start I can also start looking into build size and actual frameworks that are needed instead of just blindly installing defaults that I used. This will make me sleep easier at night.

I’d rather have a slimmer Android version than a bloated app or, worst, no app at all.

My 2019/20 code challenges

I’m not sure if the term “code challenge” is actually correct, as I love creating these products. However I do learn from them on a coding level and perhaps also design.

Whilst this probably seems like a New Years resolution, it certainly isn’t. The timing for this is just a coincidence. Resolutions for me are things I look at every 3 months as I take stock of what I’m doing, what I’m not doing and where I’m failing. The past 6 months have been busy on the client front so I didn’t have too much time on anything personal.

Now that it’s quiet I thought it would be a great idea where I want to head towards within the next year or two, especially as I want to find a way of generating income from other sources that don’t require so much work. Passive income is the word. Not everything I’ll cover here will be directly for the passive income part of what I’m wanting to achieve.

So, here is a quick overview list of what I’m planning:

  • A homegrown CMS - my home built CMS (I’ve got a name for it… but I’m not ready to reveal that just yet). I've got a great CMS running this site already, however there is nothing like doing it yourself.
  • Gluon 2.0 - this will be a complete re-write of Gluon, the third-party app for Micro.blog.
  • Invoicing - a service for freelancers and small business, to allow you to issue invoices.
  • Simple Schedule 2.0 - coming back to this to add missing features and expand it a bit.
  • Stretch goal - Sublime Feed - a feed reader and sync service for the web, iOS and Android. (Yeah I know… this was a 2018 goal - plans are plans after all)

I’ll blog about each one as I find time. I’m going to attempt these in no particular order and will be sharing much more as I go. There needs to be a few tweaks on my website so I can display all these nicely…

Anyway, hope I wetted the appetite a bit of what's coming. I'm particularly looking forward to blogging about them.

I just registered a new domain name... the second one this week 🤨 I promise that they're both justified!

For giggles I imported all my posts from my current CMS (Craft via RSS) to a Jekyll based blog... hmmmmm. Life of this site started on Jekyll. Might return to it if I find the time.

I'm going to give BBEdit a run for its money for the next few weeks. Having used Electron based apps over the course of the past years, and also Sublime Text, I hope I can make it work. It's certainly different already, but everything has its own quirkiness and ways of doing things.

One week of unplugging myself from news and social. See you on the other side. Have a great holiday.

"Say no to node" - that should be a thing... Ok, I'll stop now. Frontend world we happen to live in...

I just cleared out 5GB of node_module crap across a few projects that I didn't touch in a while... there should exist a tool that does it automatically.

Gluon’s future, going all native and dropping active development for Android.

You may have noticed that the past few weeks have been super quiet on the Gluon front. This has been because of a few reasons, one of them being an influx of freelance work that I have to finish before the holiday… I have not been stressed and deprived of sleep like this for a while. It all seems to come in at once, when you least want it. However, there is another reason… which has taken me a few weeks to think about.

How Gluon is built

Gluon is built with [React Native](https://facebook.github.io/react-native/), which comes from you favourite company that everyone loves (not). React Native basically allows you to write everything in JavaScript using the “React” way, which in turn creates a fully native app. On top, I can probably share 90% of the code across iOS and Android. This, you see, is why I was able to move so quickly with everything. Not to mention the experience of a summer long job creating a big app for a German football club.

This is great and I’m happy I got something out the door that actually works well enough on iOS… and that renders something on Android without much work.

Dropping React Native and going all native

I wrote my first app for iOS just before Swift came out so I learned to write, and read, to some extend Objective-C… then transitioned to Swift as soon as it was announced a few months later. I vowed on that day that I will read the manual from front to back and know Swift like my life depended on it. After all, I always wanted to develop for iOS. It was great. What wasn’t great is that it kept, naturally and un-naturally, evolving at a super fast pace. Every year for a few years I had to update the app so it wouldn’t break or keep at the same big size over time, due to the embedded Swift libraries. The guide book also got bigger.

So 3 years after that I had a good knowledge of Swift but I had to relearn a lot of things. This was a bit too much to keep on doing every year, especially when your day job (at the time) programs in C# and you’re mainly stuck with that and on the side jobs trying to improve your skills in other areas.

However, I think Swift is great! Especially compared to something like JavaScript. Swift isn’t perfect, but it’s a 100,000% times better than JS. In JS everything can be anything and anything can be everything. A null can be a “null” on Android. A ZERO can be false, or actually “0” or a 0… depending how it felt on the day. Yeah sure, I can get around this easily, but you see my point hopefully (“OMG, he’s doing it wrong the n00b!”). Swift on the other hand is just plain type safe. I love that.

Anyway, digressing a bit.

Being stuck with mainly JS frontend frameworks (React.js) and React Native all this year… I think I’m totally over it for anything personal that I’m going to be working on. Things can get overly complex in a matter of weeks. However, I do enjoy using it at a small scale as you can do some really great things with. As they say… “Been there, done that, got the T-Shirt.”

So the main point is that I went down this road, can do it and was able to learn about this “hot” new JS framework of 2018. Not to mention living in the world of what is a 500MB node_modules folder per project… Who actually thought this was a great idea when they woke up one morning? When you freelance and work on several projects… that can become a problem.

Alright, so here is the nitty gritty.

I want to get back into the swing of full and native iOS development using vanilla Swift. This means coding in Xcode, building my interfaces like Apple intended and using their native API’s to do great things. I don’t want to rely on any third-party library. I don’t want to install anything via a POD. I want to know what my code does. I really want to embrace the eco-system that is iOS and also macOS. I don’t want to write another line of JavaScript for main parts of Gluon.

Not only that, I have looked closely at the performance of a React Native app, compared to a well written native app. If you want to drain your battery and spike your CPU, go the RN way for sure. Sure, there are changes coming to RN that will change this, but still… a great app should also be one that is mindful to the user resources. Performance on Android is just horrible for anything beyond basic. This is my personal experience. For sure, there are probably ways to do everything better.

Another contributing factor to my change of heart are these two nuggets from Daring Fireball: [This one](https://daringfireball.net/linked/2018/12/05/react-native-accessibility), and [this article](https://daringfireball.net/2018/12/electron_and_the_decline_of_native_apps)

Third party frameworks for creating apps like this are not first class citizens. They never will be. I had someone email me regarding Android and helping me look at the accessibility on Android. The first article above really speaks for the work that is involved to even get anything that is good enough.

Android

With the above, that also means that the life of the Android app will not see the light of day. The simple reason is… I’m not an Android developer and don’t want to be. Take a hard look at Android Studio and talk to me about developer happiness with a straight face.

Not to mention, we have a general “no Android” policy in this household.

Once Android becomes privacy first with better development tools, I may explore it in future. I don’t use Android day to day, so I have no clue what an Android app should behave like.

I think it’s wise to accept the fact that I don’t want to develop on Android. There are people that embrace iOS and people that embrace Android. In order to truly create something great, you should really stick to what you’re passionate about. Do not think “Meh, this works on both and is good enough”, without actually thinking about it. Or “let’s wrap this web app into an Electron app and be done with it”. No thank you.

So, for the tester on Android - I am truly sorry it has come to this. There are great Android apps out there and I would totally recommend you go with [Dialog](https://play.google.com/store/apps/details?id=com.dialogapp.dialog) for Android. I recently installed it to see how good it is. It’s great and was done by someone that understands, lives and breathes Android.

I don’t want to create a shitty “meh, good enough” app for Android.

At the end of the day, I’m concerned about the user and, of course, developer happiness.

The future

This is no easy task but I have set wheels in motion to start fresh, from zero. The current TestFlight for Gluon expires in 65 days. I may push another one out to keep that clock running a tiny bit longer whilst I work on getting it to the same state that the app is in now, with a few tweaks of course.

Android alpha will still be available until I ship the iOS version. You’re more than welcome to use it, so email me if you want to be on the list. It will, at some stage next year, go away.

I will blog about the process, as I go about re-building it.

For 2019, this will be my long running “code challenge” - re-write and ship.

It’s not going to be your usual attention grabbing app

Many social apps make you come back into the app by sending unnecessary push notification, badge your app icon with millions of red circles and white numbers… they badge your tab bar with icons to say “Oh hey, here is something new that YOU DID NOT READ… OMG STOP EVERYTHING”… or “Oh hey, you have a BILLION unread items waiting above”.

Gluon will not be like this. Gluon will sit there quietly until you open the app, ready for you. Ready for you in the now, the right here, in this moment of time. Not taking your time away from your family or other real social engagement. No FOMO feeling.

Too many times do I see people driving in their car, looking at their phone on some social network of choice, because they probably got a notification. Or teenagers chatting to their friends in front of them, looking at their phones because of some fake and created social thing they are in to at the moment.

Sure, that’s not my problem and sure… it may deter a few people away to another app. I don’t mind, because at the end of the day I know that I created a, hopefully, nice app that works great and has a few happy customers. That is all I want. If this reach is just me, then that’s good for me… if it’s 10 people, then I’ll be happy.

Life is busy. People are busy… busy in the wrong way, out of choice or habit. One reason I don’t use a task manager anymore… because I don’t want to be busy with managing it. Piece of paper for the day works for me for most things I do.

The official Mirco.blog app is great and love the way that notifications are just plain quiet. No sound, no attention grabbing tactics. At first, this was weird but I totally love this little detail.

My aim is this: Have a great working app across the Apple eco system, that is friendly and respects the user, doesn’t interrupt your time and which fully embraces the micro.blog eco-system.

And no, I will not make a [insert a really popular iOS twitter app here] clone.

When you load a website in the fastest browser available on the planet (Safari), on a top spec computer, and the site is so full of Javascript that everything comes to a crawl when you open a slide in menu. "I'm... going... to... open this... sl... ide... in... menu". Where did this web world go to? Do people actually think about this stuff?

It’s getting harder and harder to get our daughter to go to sleep. It’s approaching 23:00 and she’s still up. We read her endless stories in bed... but no luck. She doesn’t want to give up.

Ruby on Rails questions:

  1. Any suggestion on a multi-tenancy database flow? For example, create a new database per user account (can't remember what this is called - I think Basecamp do this?), or should I reference data by just the user_id (I did this for Simple Schedule)? I'm sure I've seen something like this in a gem - can't remember what it's called.
  2. Is there a library that can accept multiple subdomains and route the app correctly? So for example if I had subdomain.railsapp.dot, this will go to my main Rails app and in turn load user data for "subdomain" etc. Then another subdomain will load another user and so on. Just like Slack would load a different login screen.

Any help or pointers would be appreciated 😄

I wish you could disable the video trailers at the end of a movie or TV Show on Netflix... it's really annoying. This is one reason why I always prefer to just buy a movie on iTunes.

Close