- Distribute your Instagram stories


You want to share experiences as they are happening in your life. Instagram Stories is a great way to do so, thanks to cross-posting to Facebook, Messenger and Instagram itself, allowing most people to view your stories.

However just like Snapchat, the platforms try to lock you in, with the content you create. Many of my family members and close friends don’t use FB/IG daily, but still wanted to stay up to date on what I’m up to.

Due to lack of an official API, and any kinds of integrations, the only way to access your stories is through the inofficial API the Instagram mobile- and web client use.


A simple web service that automatically downloads and publishes your stories on various platforms. It’s open source and fully self hosted, check it out on GitHub.

Embed into websites

Showing what you’re up to on the websites you operate is an easy way to make your online presence more personal.


  • Design similar to web
  • Arrow keys to go back and forth between stories
  • Support for photos and videos
  • Support for desktop and mobile browsers
  • Dismiss stories using ESC key, and clicking the dimmed area
  • Pre-loading of the next story for instant rendering
  • Basic features like rendering of the progress bar, the relative time stamp, as well as linking to your profile
  • Zero dependencies, plain JavaScript, CSS and HTML in a single file

Provide a JSON API

Of course it also provides you with a JSON API, that can be used to integrate your Instagram stories into any app or service. The API includes all relevant data, including the raw image, location and the exact resolution of the media assets.

Make sure to manually copy & paste this in a new tab to avoid the cross-site scripting protection

Telegram group

Many of my friends don’t want to check Instagram every day, but still want to stay up to date with what I’m up to. Since they all use Telegram already, I set up a channel that automatically shows the stories I post.

A Telegram group containing all my latest stories. In particular nice to get an overview over all your most recent stories. Join it here.

How it works

Instapipe is a simple server, that periodically fetches your most recent Instagram stories. As soon as a new story is available, it will

  • Download the highest resolution photo/video and store it on your personal Google Cloud Bucket
  • Store the associated metadata in a database you own, the data includes
    • 24 hours signed URL to the full-resolution photo/video of your Google Cloud Storage
    • The full path of the resource referencing your Google Cloud bucket
    • The user ID who published the asset
    • The height and width of the photo/video
    • The exact time stamp of publishing
    • An is_video flag
    • The location (if a location tag is attached)
      • Location Name (e.g. Das Gym)
      • lat and lng coordinates
  • Post the new story into a Telegram group (check it out here)


Tags: open-source, instagram, telegram   |   Edit on GitHub - Stay in touch with remote friends

Staying in touch with close friends requires more effort when everybody lives somewhere else on the planet. Scheduling calls to catch up certainly works, but it requires time-commitment, and time zones make scheduling unnecessarily complicated.

After living in NYC for a year, I ended up doing the following: If I walk somewhere for about 30 minutes, I’d text 2 friends or family members, asking if they’re available for a chat. Often one of them would end up calling me. This way, no prior planning was necessary, things felt more spontaneous and I was able to use my NYC walking time to catch up.

The problems

  • If I text a friend Hey X, are you free for a call?, chances are they’re at work, asleep, with friends or don’t look at their phone. They’d see my message 2 hours later and reply Yep, sure, calling you now. The problem here is that by that time I’m unavailable, as the message is from 2 hours ago.
  • If a friend doesn’t know about this setup, they’d think I want to discuss something specific or urgent, however those kinds of calls are just to catch up and stay in touch.
  • Often, either none of my friends were available, or multiple responded, so it was always a tricky balance on how many friends I’d text, with the risk of both of them replying Yep, I'm free now
  • If one friend is never available, you kind of “forget” to text them, as you already assume subconsciously that they won’t be available

The solution

A Telegram bot that manages the communication and revokes messages as soon as you’re unavailable again.

🔰 Start using the bot 🔰

Why Telegram?

  • It works on every major platform, including iOS, Android and macOS
  • It supports revoking of messages and notifications, even from the lock screen
  • They have a solid bots API
  • Registration for new users is easy & fast

More details on

Tags: telegram   |   Edit on GitHub

Ending my fastlane chapter

I’ve built and published iOS apps for over 8 years now. Back then the App Store review times were over 2 weeks, iTunes Connect would allow only uploads of a single screenshot at a time, there was no CocoaPods… and code signing was pretty much the same as it is today.

In 2014, I sat in my dorm room and started working on a tool to solve some of the challenges I faced as an iOS developer. It started out by just automating the upload of screenshots and binaries to iTunes Connect. After publishing the initial version in November 2014, the iOS community seemed excited about it. It slowly went from just deliver, to more tools like snapshot to generate the screenshots and pem to automate iOS push notifications.

Fast-forward to today, I’m so humbled by what fastlane has grown to be. It has changed the way large iOS teams work every day, how they release their app updates, and how code signing works. It even enabled founders to start new businesses using fastlane as their core foundation.

I’m so proud to see how the community has grown around it. When fastlane initially launched, it supported only 10 integrations. Today there are over 570 different integrations, from code coverage reports, beta testing services to build version management. All of this wouldn’t have been possible without the all the 922 contributors of the fastlane main code base, all the authors of the 355 third party plugins, as well as the fastlane core contributor team.

It was great to see fastlane evolving from a small side project, into a stable, self-sustainable open source project with a strong community of contributors around it. I have no doubts that fastlane will continue growing stronger in the next years, with the support of Google, as well as other companies and individual contributors.

📯 After 4.5 years it’s time for me to step away from fastlane, and with that leave Google.

As for what’s next, I don’t have any specific plans yet. I’ll be taking a vacation and then figuring out what problem I’m excited to solve next :)

As always, you can stay in touch on Twitter and Instagram.

What does it mean for fastlane?

Google will keep investing in fastlane. There will be no changes to fastlane and its support system. To get help with fastlane, submit an issue on GitHub. At the same time, we will continue accepting new fastlane core contributors, meaning you can get full push access to the fastlane code base.

Thank you

I’d like to thank everyone from the Twitter Fabric, Firebase and Google Cloud teams for taking fastlane where it is today. I’d like to specifically call out all the contributors and the iOS community for welcoming fastlane and continuing to support it. In particular Hemal who believed in my vision and helped me grow personally and professionally.

Tags: fastlane   |   Edit on GitHub

How I silently changed my profile picture every other year

Ryan Hoover hasn’t changed his profile picture for about 10 years now.

He talks about it on his blog “Why I Never Change My Profile Pic”:

People recognize you by your avatar. Once changed, followers need to re-associate the new photo with your person.

I very much agree: whenever someone changes their profile picture, it takes time to get used to it, and start recognizing their avatar in timelines again.

Back in 2014 I took a photo at the local photo studio Die Fotogräfin:

Felix Krause in 2014


After a while, I didn’t like the fact that the profile picture isn’t updated at all, but also I wanted to follow Ryan’s advice. The solution?

Let’s take the exact same picture again, same t-shirt, same light, same background, and same pose:

Felix Krause in 2016


I silently changed the profile picture on Twitter and GitHub, and almost no one noticed, with just a few tweets calling me out.

It even went that far, that Peter Steinberger covered my profile picture story in his conference talk about personal branding.

Using this approach, you can keep the recognition value, while making sure your current profile picture reflects on how you currently look like.

Following the “Continuous Delivery for your profile picture” approach, I took another one this year.

Felix Krause in 2018


Again, almost no one noticed, with only one tweet mentioning it.

So here are the last 6 years in profile pictures - I plan on continuing this strategy and take a new photo every second year:

Tags: profile, picture, personal, brand   |   Edit on GitHub