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.

I sure love dark mode in Mojave! It's pretty stable too. Development on it works without issue (web dev, Swift dev, npm, ruby etc). As is normal, it's a bit slow at times. Really happy with it so far though.

Our daughter had a successful operation yesterday and we are heading back home today. Totally thrilled. She’s a total trooper and has taken it really well.

Today is WWDC day. Really looking forward to it this evening (in Europe). To celebrate, Apple has charged me for another year as an Apple Developer.

My Stack

Something I always enjoyed reading was about the different set ups everyone is using day to day for their development needs. That includes their code editor of choice to the way they set up their servers, to their use of task managers.

The point of this post is to get into details of how I run my server infrastructure for my own things and a select few clients. I’ll also include the things I do to monitor and keep it all up. Not to mention critical response if something would go wrong.

This set up works for me, and only me. Your milage will vary and I urge you to seriously research best options for you.

It’s probably best I segment this out a little so that, in the end, you’ll have an overall picture of what is keeping everything going.

Servers

Let’s start with the most important, servers.

All my servers are hosted with Linode [referral link, non-referral link]. I tried Digital Ocean many years ago but eventually moved to Linode. I have this thing in my head where I think “Well, EVERYONE is talking about [insert cool new service/startup]… so let me try something different”. Probably not the best way to go about choosing a service.

Linode is and has been great. Their performance of their machines are way more consistent than Digital Ocean’s have been (when I used them). Sure, Digital Ocean were cheaper but that isn’t always better. Linode’s support is flawless and they really do help if there are problems, even when their system is having problems - their online management portal straight away lets you know with an automatic ticket. I don’t have to call them and ask “Do you have a problem?”.

I have 6 various Linode’s running. They all have their own tasks/functions (in general).

My main server, this one the site is hosted on, hosts around 7 sites including one client site and Simple Schedule. These talk to another server, which is a dedicated database server.

There are three dedicated instances for two clients. These are more powerful instances all designed to host one or two sites, each, well. They usually handle massive amount of traffic to them. One site generating up to 1 million views a month. By keeping them separate I can be at ease knowing that the engine runs smoothly without affecting other clients.

There is one more server that basically runs as an IKEv2 VPN server. I don’t use it much, but useful when I’m out and about with my phone and I want to connect to a VPN. I did, initially, have a OpenVPN instance installed on the database server. That turned out to be a bad move. On top, OpenVPN never really played nice with out of the box integration on both macOS and iOS.

The VPN server is also used to log into my servers, like SSH and SFTP. If you’re wondering, yes, I have SSH keys set up for each device.

Recently I decided to host static sites (around 10), that are based on Jekyll [link], on Netlify [link]. I’m really happy with it. So happy that I’ll be hosting the UI for Sublime Feed there, with the data layer back on Linode. It really removes any special set up or tweaking that I would otherwise have to do.

So that pretty much covers servers. I don’t use load balancers, yet, because I had no need so far.

Server management & backups & logging

All the servers are set up using the Laravel Forge [link] service. I really like the visual aspect of it and it works for me. On top, it allows me to quickly deploy a server with great defaults without much thought or headache. I don’t have to dabble around with config files or anything like that (except where I need to). It does a great job! Even for a Ruby based app, it works pretty well after some additional configuration.

Forge is optimised for Laravel apps. I wish something like this would exist for Ruby on Rails apps. Heroku doesn’t fall into that category as they run the servers… and I prefer to host myself.

Every server backs up daily via Linode’s built in backup service. You pay a small fee for a full snapshot of your server. Great if I had to restore the whole machine.

Each website backs up at different intervals, independent of the server, depending on the client/site. Each site’s user generated content, if not hosted via AWS S3 [link] with a CDN, backs up either hourly or nightly. Databases are also backed up at different intervals, usually nightly or hourly.

Backups, for now, are kept on AWS S3. I’d like to move this functionality to Backblaze B2 [link] - but am not ready to do that yet. I can grab anything from these backups when I need them via Transmit [link].

I keep backups, for any client, for a minimum of 6 months. So if they were to make a mistake now, they’ll probably notice next month that something is missing. If there were only the past few days of backups that would be hard to recover.

Each site repo has it’s own ‘backup’ folder that includes shell scripts that I then run as cron jobs depending on the needs of client/project. Or I just set my own defaults. In general, every site backs up to its own folder on S3, separated out by ‘assets’ and ‘db’. I don’t backup code files that are already in the repo.

For server logging I use Papertrail [link]. Until a few years ago I didn’t do any logging… Papertrail makes it painless and allows me to search through everything that goes on with the servers. If I wanted I can also have website errors be written out on the logs (which I do for some). Papertrail has saved my skin a few times, allowing me to react to a client query. Their UI is easy, their set up is easy. Highly recommended.

Uptime monitoring

With clients comes responsibility. Being independent I don’t have a massive budget for expensive uptime monitoring and I was looking for something besides Pingdom.

I came across updown.io [referral link, normal link]. It’s run by an independent developer, doesn’t cost the world and it’s really awesome! I’m happy I found it and I never had any problems with it. Support is also great!

Updown.io serves several purposes for me. It checks site uptime, checks SSL expiration (amongst others) and is really great at alerting me when something goes wrong. On top, it allows for public status pages which is really helpful. I usually send these to clients too (not that they use them). You can see mine here [http://status.vincentritter.com].

If there is a problem I usually get a Slack notification to my phone and watch. It is the only reason I have Slack installed on my phone, because it works really well. I have the option of an SMS message to my phone too; I don’t use it though. It also sends out an email, to whomever needs to be notified. It’s really flexible.

DNS

This one is important, because without it, nothing would actually work. Years ago I was a huge fan of CloudFlare… I had everything there. However I stumbled upon DNSimple [referral link, normal link] and started moving a select few domains over there. It was and is great!

Cloudflare was good, but I couldn’t shake this “MASSIVE CORPORATION” feeling. I prefer the little guys, that are growing, that are personal about their service. Whilst Cloudflare is free, DNSimple really blew me away.

It’s hard to explain, I really like them as a company. All their support staff are super nice. They all work remotely. Their site is simple to use. Their service is really ace and I never had any problems with it. They are there when something happens to their service and don’t hide.

Yes, you pay for the service, but to be honest… it’s worth every penny. As I said, free isn’t always the best.

I recently started moving my domains away from Gandi to DNSimple and hope to add more over the course of the year.

Just yesterday I was taking care of a site migration, including pointing a top level domain to a new server. DNSimple always amazes me on how quickly changes propagate. Something I found that Gandi, Linode or Cloudflare are usually slow to do. Even adding new records like A or TXT show up pretty much instantly - which other services see quickly too without waiting hours (for example validating MX settings or TXT validations).

Bringing it all together

With everything above, I make sure stuff stays up (where possible). I can rely on all these services and am happy to give them my money. It’s worth every penny.

If something went terribly wrong, I could spin up another server, transfer the IP address and be back up and running within minutes.

I run a tight ship for all sites irrespective of size or traffic, that’s how I would do it for myself and don’t skimp to find the cheapest solutions.

Let’s see where I’m at in the next few months with setting up Sublime Feed, with a multi server setup. Sure will be exciting.

If you found this article useful please feel free to use my referral links, which will support me and the awesome services.

My 2018 WWDC Wishlist

If you’re following the Apple universe, you’ll know that the Word Wide Developer Conference is happening next week! So I thought I’ll write about things I’d like to see them announce. Of course there are rumours, but let’s not get into detail here. There are also a few points that don’t really fit into the “dev” perspective. Anyway here we go, in no particular order:

Xcode Lite

This came to me during the weekend, however I’d like to see Apple come up with a lightweight version of Xcode, or let’s say a Text Editor, something like Visual Studio Code, Atom or Sublime Text.

I’m not expecting a cross platform app (Windows), but I do want to see this live both on macOS and iOS. Something to get you coding quickly on any Apple device. Hopefully, but probably not, based on ‘Marzipan’. We’ll see.

As Apple are mainly focusing on App development, it doesn’t necessarily have to support web dev - although that would be super nice! Which brings me to my next bit.

Better support for Swift on the Server

I really like Swift! When it came out I was all over it. Seeing it expand to the Server side of things really floats my boat. I’ve played around with it, however the tools really don’t exist to make this easy. Xcode doesn’t really allow web development, which is fair enough.

It would be great to see better Swift on the Server support in Xcode or a new editor to take the throne here. It’s got real potential and I want to see it grow!

Live App tiles

To quote myself:

Would be nice to see more 'live' app icon tiles in iOS 12. For example the Activity app could have active activity rings on the home screen. Would be cool.

iCloud for Business

Would be super nice to see custom domains being used with an iCloud account. Something like Google Apps offers, but Apple-y.

Updated MacBook Pro’s

It would be great to see a spec bump, at least, to their MacBook Pros. To be honest, I’m in the market for one so would like to see something here - not a big deal. My Mac mini is great and does the job (yup!), however it’s not very portable - a situation I find myself in often (being away).

Better iTunes Connect iOS App

This is on the wish list… I like their online portal, however their iOS App… lacks hugely. A nice update to bring it up to scratch to a level like AppFigures or something will be super welcome. I have the app uninstalled as it was really bad, often not working or failing to do anything.

Disconnect major apps from iOS release cycles

I’d love to see Apple disconnect major development on Apps like Music. We all know they can do it, just look how awesome Clips is.

It will bring faster release cycles to keep up with the likes of Spotify. However, I do appreciate the deliberate slow approach Apple takes. At the end of the day their apps, for iOS, are certainly way better than most apps put in the store (comparing Spotify and Apple Music).

Be good to see faster release cycles though, to do something awesome and generally improve the experience without having to wait. I’m unsure how they do it with Android at the moment, suspect it’s just as slow.

Why wait for the whole OS to update before shipping? Sure, keep the UI similar - to keep within the current OS guidelines. A few nice updates throughout the year would really work well.

Some apps that could benefit from this:

  • Apple Music
  • Photos
  • TV
  • Books
  • Podcasts
  • Notes
  • Maps

I do appreciate they are one big machine, so having everyone focus on one end goal to ship is probably better.

Other notes

Last years WWDC was full of amazement. Blown away during every step. It’ll be hard for them to do it this year again… in a way I think they will do though!

For this year, I will actually be travelling on the day… so after many years… I might miss it. However, I am planning to arrive in time for the keynote - so let’s see.

Currently troubleshooting my Mac Mini that somehow forgot how to even connect to a wireless network. Had to move it into another room last week for a meeting, been playing up since I moved it back to the usual spot.

I've updated my Code Challenge page to make space for Sublime Feed and also add a bit more information. Also archived the Simple Schedule posts here, for easy access.

Didn't feel too creative today, however it will do me for now.

I've noticed a lot of sites now employing MASSIVE cookie warning messages and other things that look wrong. I'm really happy that "Reader View" exists in Safari. Just bypass all the noise!

Would be nice to see more 'live' app icon tiles in iOS 12. For example the Activity app could have active activity rings on the home screen. Would be cool.

She certainly can go fast on it without loosing balance. Pedal bike upgrade coming up soon. Loved the way the colours came out. Pink is her favourite!

Opened up Steam today... to be presented with a warning... didn't know it was a 32-bit app on macOS! Wish they updated it too. Doesn't feel very native.

One thing I like about Spotify that Apple Music should totally copy, is the ability to sync playback between devices. Just stopped listening on the Mac, heading out... and here you go... Spotify can resume where you left it on iOS. It's the little things.

Any recommendations on a small, portable and good quality podcast microphone? Not looking for anything too expensive. USB-C is a plus.

Close