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

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

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

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:

Unless otherwise mentioned in the post, those projects are side projects which I work on on weekends and evenings, and are not affiliated with my work or employer.

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

One year nomad - a review

Background

Today one year ago I decided to get rid of my belongings and live out of a suitcase. It started as an experiment I didn’t expect to be doing for long. However after 365 days without a permanent home, I have no intentions on changing my current setup.

To summarize the last year’s thoughts on why I want to stop having a lease:

  • Money: I only spent about 200 nights at home, making it unused for almost half the year
  • Routine: I don’t like having a routine when it comes places, subway and commute
  • Maintenance: I don’t enjoy spending time setting up my apartment & repairing things

Most digital nomads run their own business or are freelancers/consultants. I’m a full-time Google employee working on fastlane here in New York City.

How is the nomad life so far?

  • I enjoy the flexibility of changing cities and neighborhoods as I want
  • Living out of a suitcase & carry-on has worked surprisingly well: while I do have to limit the number of items I own, I haven’t had any troubles with it. Getting through the New York winter is a little trickier, so I keep one winter jacket in NYC, and one in Europe
  • Maintaining fitness progress is trickier, mostly due to the change of kitchen on every move
  • One time I stayed on a boat in New York 🛥
  • I got to stay in 8 different New York neighborhoods
  • I always have clothes for 12 days with me
  • I never forget stuff as I always have everything with me, there is no such thing as “I didn’t bring X on my trip”

Money

One of the main motivators of starting my nomad life was to save money. Today I did the math to see if it actually worked.

The last 365 days I:

  • Spoke at a total of 7 conferences, in Russia, Austria, USA, Serbia and Norway
  • Visited the SF Bay Area 3 times for team offsites and WWDC
  • Stayed with my family in Austria for a total of 2 months
  • Stayed at “home” in NYC/SF in Airbnbs for a total of 231 nights paying a total of $26,130 (63% of the nights of the year)

As mentioned in my previous nomad post, the average rent in Airbnb can be assumed to be about $3,000 for a studio apartment. Including utilities, furniture and other expenses related to the apartment, you can easily pay a total of about $40,000 per year if you want your own apartment in Lower Manhattan.

Meaning I saved about $14,000 by going nomad, while having far less responsibilities, as well as get to see new places and neighborhoods each month.

Airbnbs

Most of the times I lived in Airbnbs in NYC, my experience with it has been pretty good so far. The check-in usually works by picking up the key from a KeyCafe in a nearby Deli. This part is quite tricky, as I have to enter the Deli with all my stuff, and then climb the stairs as most older buildings in NYC don’t have an elevator.

My friends working at Airbnb are happy about the fees I pay on each booking :)

One thing that has proven extremely useful is using the best travel credit card you can get: By receiving 4.5% cash-back for each travel-related purchase, I get over $1,000 for free every year by living in Airbnbs and using my credit card.

For a few nights I stayed on a boat in New York through Airbnb, costing the same as all my other Airbnbs per night (note: it’s the small one in front).

One highlight was a 2 weeks trip to Taipei together with @taquitos to work together, instead of meeting in San Francisco or New York.

Conferences

When being invited to speak at conferences, the conference organizers cover the hotel during your stay. Every night they cover saves me about $100 (assuming the SF/NYC rent prices), as I don’t have to pay my lease during that time. I usually combine multiple conferences on one multi-week trip and cover the hotel nights in-between instead of flying back and forth.

Friends & Happiness

This is something I talked about in the original nomad blog post: If you travel to a new city every other week, it’s going to be really difficult to build up close relationships with friends. That’s why I’ve been a big fan of the current setup: I stay in the same city, but move within it, meaning I get to hang out with the same group of people and spend quality time with them, while still having the benefits of a nomad life.

Since February 2018 I’m tracking my mood & happiness level 3 times a day, here is the result so far:

3 times a day I answer the question on how I’m feeling on a scale from 0 to 6 using my open source Telegram bot

If today were the last day of my life, would I want to do what I am about to do today?” And whenever the answer has been “No” for too many days in a row, I know I need to change something.

As everything in life, things are an up and down. The overall trend is visible as the green line, which is clearly a wave going in cycles. I marked the I'm feeling average level as orange. Ideally I don’t want any of the other colored lines to go below it. One-off values below it are common as seen as the light gray dots. Looking at the graph, every time the blue line dropped below the orange one, something happened that affected my overall mood. It’s good to see the line usually recovering back to normal rather fast.

Fitness

I’ve been spending a lot of time working on reaching my fitness goals in the year of 2018, and it has worked surprisingly well:

  • The last years I did mostly power lifting, so I also gained a good amount of fat. As of February 2018 I wanted to work on appearance and wanted to focus on a clean diet as well as a different workout
  • I lost 25lbs (11 kg) within 6 months while keeping a good amount of muscle mass
  • I stopped cooking at home, as finding things at a new kitchen and setting everything up doesn’t work if you’re only staying for a week or two. Instead, 100% of my meals were from the Google office and eating out. This makes following a strict nutrition plan a lot more difficult, as I can’t track the exact macros, and don’t have control over the fat that’s used
  • I managed to drop my body fat percentage by 6%, to a total of 8.9% according to the DEXA scan (the only decent-precise way to measure body fat)
  • I travel my own travel scale to track my body weight every morning
  • I track everything I eat in MyFitnessPal. Tracking food is a game changer, no matter how well you think you eat, MyFitnessPal will most likely tell you otherwise if you haven’t tracked macros in the past (very thankful my fitness trainer @faronsalisbury convinced me to do this)
  • I usually stock up the fridge with a few essentials, being frozen chicken breast, frozen veggies, black beans, oatmeal and some diet sodas.
  • Having a routine, and your own place with your own kitchen would make reaching fitness goals easier

whereisfelix.today

A joke project I started back in February 2018: whereisfelix.today

As people in SF/NYC travel around a lot, it’s often difficult to schedule time to meet. Most conversations start with “Hey, when are you back in New York?”. I decided to buy this domain for fun, and have my travel schedule up there.

The reactions from people when I send them this link are great. I now even have a shortcut on my Mac to type the domain for me.

It’s a real-time dashboard of which city I’m currently in, as well as my upcoming travel schedule. Over the last few months I added more and more information to it, including my current mood (which I track with my open source Telegram bot), the macros I ate today, current time, weight and most recent Instagram pictures.

I used this project as an excuse to learn some things I haven’t used yet: TypeScript, node.js, Angular, and immutable deployments on Zeit.

The website itself is also open source on GitHub.

Downsides

  • Turns out, government entities and banks are not so familiar with the concept of digital nomads and are not happy when you tell them you don’t have a home address, nor a utility bill or lease agreement. I’m happy I opened all my financial accounts before this change, as it for sure makes things a little more complicated.
  • Moving around is exhausting, even if you only carry your suitcase + bag. It still takes about 3 hours to move to a new place.
  • Everything around fitness, from tracking, cooking to buying food in bulk, to meal-prepping would be a lot easier if I wasn’t a nomad
  • Media: I don’t watch a lot of TV, nor play a lot of games, but when I do, it’s annoying to get things up and running. Setting things up takes time, and is usually not worth it. I end up watching Netflix just on my phone, and the only console I have is the Nintendo Switch, as I can play without a TV. The same goes for the sound system: I ended up buying my own portable speaker I bring with me so I don’t have to deal with learning how each apartment’s sound system works.
  • It takes a lot of time finding good Airbnbs, lots of hosts don’t respond and you have to plan ahead
  • I miss having a proper working setup outside the office: Having an external monitor and a standing desk is something I really learned to appreciate. As shown in the pictures in this post, I carry around a mobile MacBook stand, as well as Apple keyboard, trackpad and mouse.

Conclusion

Living out of a suitcase comes with its challenges. You learn a lot about yourself, what you need, what you appreciate and how to optimize your life around not owning a lot.

I really appreciate the chance to re-invent your daily schedule every time you move. You learn a lot about different kinds of apartments and what you make use of most often.

Staying in one city, and moving within it has proven very efficient when it comes to being productive, getting to know new people as well as staying close with your friends.

It is possible to reach your fitness goals without a fixed routine, and without cooking, however it does make things a little more challenging. Having a gym membership with a chain that has multiple locations in your city is key 🔑.

I’m really happy I made the switch, it has been a great journey so far.

Unless otherwise mentioned in the post, those projects are side projects which I work on on weekends and evenings, and are not affiliated with my work or employer.

Tags: digital, nomad   |   Edit on GitHub

iOS-factor: A methodology for building high-quality iOS apps

iOS-factor was inspired by the famous twelve-factor app framework, a methodology to write high-quality web services. iOS-factor uses the same structure and similar principles, re-written and applied to the iOS app development processes.

Background

Over the past 10 years, the iOS development process has shifted drastically:

  • from supporting a single device to a wide range of available iOS-powered iPhones and iPads and various platforms like tvOS and watchOS
  • from manually including git submodules to using dependency managers
  • from iOS apps mostly running locally on-device, to iOS apps heavily relying on backend services
  • from iOS app review times of more than 2 weeks to less than a day
  • from installing an app on your phone using iTunes to distributing apps through the official TestFlight channel
  • from uploading 5 screenshots per language to iTunes Connect to 110 per language, as well as app previews
  • from plain Objective-C/C++ apps to a mix of languages including JavaScript
  • from slow releases whenever something is ready, to shipping every single week
  • from full releases to A/B testing, slow rollouts and automatic regression detection

What’s iOS-factor?

iOS-factor is a project I started in May 2018. It aims to provide a collection of best practices for building high-end iOS applications. Each topic is covered by a factor, which describes an ideal state of how a certain category of the iOS app development process could look like.

Due to certain limitations (like Xcode running only on macOS) not all requirements can be fulfilled. This project aims to define goals, as well as the best current approaches to solve some of the challenges we’re facing.

iOS-factor is all about the bigger-picture iOS app development processes and architecture decisions and will not cover any language specific challenges.

This is a living project, maintained by the iOS development community. You can find the full source on GitHub and update existing pages or add new factors.

Open iOS-factor.com

Unless otherwise mentioned in the post, those projects are side projects which I work on on weekends and evenings, and are not affiliated with my work or employer.

Tags: ios   |   Edit on GitHub

iOS apps should be inside a network sandbox

Background

With my recent publications, most importantly “Trusting SDKs” it became clear that hijacked or malicious iOS apps cause major security and privacy risks for users, and allow attackers to reach a high number of users through a single point of failure.

Most of the times, the consequences of those attacks are about data:

  • Usernames and passwords
  • Location data
  • Facial data
  • Advertising data
  • Address book entries
  • Payment information (e.g. credit cards)
  • Other personal information

Notice how sandboxes in software are designed to keep data inside that box (in the form of a filesystem), but for some reason they stop when it comes to network requests.

If an attacker manages to hijack an iOS app, the first thing they would do is sent the collected data to some server in their control.

Idea

Initially just tweeting my shower thoughts and reaching 300 likes & 50 RTs, this idea grew more and more:

App Transport Security

At WWDC 2016 Apple announced ATS, an iOS 9 feature to enforce the use of HTTPs across all iOS apps. It was said to be made mandatory by end of 2016, however the deadline was moved to an undefined date. The idea makes perfect sense: All the infrastructure and tools around HTTPs encryption people already have with their web browsers to verify the security on websites, don’t work on the iOS platform. If you use your banking or dating app, how can you as a user be sure the company didn’t mess things up? It’s not like it happened before.

Web vs iOS

On the web, browsers started marking HTTP websites as “Not Secure”, HSTS is built into browsers to force HTTPs for certain hosts, people use HTTPSEverywhere to enforce HTTPs connection across more hosts and people use uBlock to block certain tracking and ad widgets that slow down websites.

On iOS, you install and use an app, and hope that the app developer uses proper encryption, securely stores your personal information, and doesn’t use any sketchy SDKs that you wouldn’t trust yourself. If you don’t agree with something (e.g. an Analytics SDK), there is nothing you can do about it.

Proposal

Step 1:

Finish the ATS plans. It’s been 2 years now, enough time for app developers to update their apps. Allow developers to file for an exception, and mark them accordingly on the App Store page with a badge of shame (similar to how Chrome marks all non HTTPs websites nowadays)

Step 2:

Introduce the concept of network sandboxes. Each app should define a list of hostnames they are allowed to access.

Imagine a ride-sharing app having access to

  • my-ride-sharing-app.com
  • stripe.com
  • google-analytics.com
  • maps.google.com

This list serves multiple purposes:

  • The app can only access those hosts. Meaning if an SDK is malicious or your app got hijacked in some way, they can’t access the scary internet and leak the user’s data.
  • The app review team will see a list as they approve the app. At the same time, they can see a diff of the hosts between app releases
  • The user should have a way to see that list as part of the App Store page
  • In the future we could even put the user in control by distinguishing between primary hosts (e.g. twitter.com) that are needed to have the app running, and secondary hosts (e.g. random-analytics-service.com). This however would come with many implications when it comes to revenue models of the majority of mobile apps.

As always, exceptions should be possible, third party browsers should exist, and some apps might have to support so many hosts that they can’t follow those rules. And that’s okay, those apps will be marked as “Can access any host” as a little warning in the App Store.

While the above doesn’t solve all the problems, it is a good first step into the right direction. We’ll run into problems, and we’ll solve them. It’s a necessary change for the mobile ecosystem, catching up with where we’re already at with web browsers nowadays.

Unless otherwise mentioned in the post, those projects are side projects which I work on on weekends and evenings, and are not affiliated with my work or employer.

Tags: privacy, security   |   Edit on GitHub