krausefx.com Open in urlscan Pro
2606:4700:3037::ac43:81b1  Public Scan

Submitted URL: http://krausefx.com/
Effective URL: https://krausefx.com/
Submission: On April 29 via api from GB — Scanned from GB

Form analysis 2 forms found in the DOM

POST https://krausefx.us10.list-manage.com/subscribe/post?u=a84ca3495977afb89bf2b98fb&id=d9610c8987

<form class="subscribe-form" action="https://krausefx.us10.list-manage.com/subscribe/post?u=a84ca3495977afb89bf2b98fb&amp;id=d9610c8987" method="post" target="popupwindow"
  onsubmit="window.open('https://krausefx.us10.list-manage.com/subscribe/post?u=a84ca3495977afb89bf2b98fb', 'popupwindow', 'scrollbars=yes,width=600,height=620');return true">
  <label for="tlemail"></label>
  <input type="text" placeholder="Email Address" name="EMAIL" id="tlemail">
  <input type="hidden" value="1" name="embed">
  <button type="submit" name="subscribe"> Subscribe </button>
</form>

POST https://krausefx.us10.list-manage.com/subscribe/post?u=a84ca3495977afb89bf2b98fb&id=d9610c8987

<form class="subscribe-form" action="https://krausefx.us10.list-manage.com/subscribe/post?u=a84ca3495977afb89bf2b98fb&amp;id=d9610c8987" method="post" target="popupwindow"
  onsubmit="window.open('https://krausefx.us10.list-manage.com/subscribe/post?u=a84ca3495977afb89bf2b98fb', 'popupwindow', 'scrollbars=yes,width=600,height=620');return true">
  <label for="tlemail"></label>
  <input type="text" placeholder="Email Address" name="EMAIL" id="tlemail">
  <input type="hidden" value="1" name="embed">
  <button type="submit" name="subscribe"> Subscribe </button>
</form>

Text Content

Felix Krause
Blog Privacy Projects Archive About


FELIX KRAUSE

Founder of fastlane.tools

KrauseFx



instapipe.net


<
>



More about me

 * KrauseFx
 * KrauseFx
 * KrauseFx
 * KrauseFx

--------------------------------------------------------------------------------


howisFelix.today?

--------------------------------------------------------------------------------

Want to be the first to hear about more privacy and mobile related essays?

Subscribe


HOW I PUT MY WHOLE LIFE INTO A SINGLE DATABASE

Apr 27, 2022

Back in 2019, I started collecting all kinds of metrics about my life. Every
single day for the last 2.5 years I tracked over 100 different data types -
ranging from fitness & nutrition to social life, computer usage and weather.

THE GOAL OF THIS PROJECT WAS TO ANSWER QUESTIONS ABOUT MY LIFE, LIKE

 * How does living in different cities affect other factors like fitness,
   productivity and happiness?
 * How does sleep affect my day, my fitness level, and happiness?
 * How does the weather, and the different seasons affect my life?
 * Are there any trends over the last few years?
 * How does computer time, work and hours in meetings affect my personal life?



Since the start of this project, I collected a total of more than 380,000 data
points.

Naturally after I started collecting this data, I wanted to visualize what I was
learning, so I created howisFelix.today. Initially, the domain
whereisFelix.today (now renamed to howisFelix.today) started as a joke to
respond to friends asking when I’d be back in NYC or San Francisco. Rather than
send them my schedule, I’d point them to this domain. However, now it’s more
than my location: it’s all of me.

Rules I setup for the project

 * Use a single database, owned and hosted by me, with all the data I’ve
   collected over the years
 * Be able to easily add and remove questions on the fly, as I learn what’s
   beneficial to track
 * Full control of how the data is visualized
 * Works well for frequent flyers with mixed time zones
 * 100% fully open source, MIT licensed and self-hosted

I selected 42 graphs to show publicly on howisFelix.today



Check out howisFelix.today to see all graphs and data I’ve created with this
project, as well as details about how you can use this project for yourself. You
can check out the full source code on KrauseFx/FxLifeSheet.

Tags: quantified-self   |   Edit on GitHub


IOS PRIVACY: DETECT WHEN AN IOS USER HITS THE SAFARI SHARE BUTTON

Jan 2, 2021


SUMMARY

Whenever you hit the “Share” button in iOS Safari, a request gets sent to fetch
an iOS home screen app icon, which can be used to track the event.


SAFARI

Safari is a great browser, that puts user privacy first. However it could still
be better. In 2018 I published some details on how iOS Safari has leaked my
bookmark for the last 8 years to all ISPs, WiFis and VPNs I was ever connected
to. This was especially interesting, as I haven’t used the bookmarks feature in
forever, and those bookmarks pointed to OSx86 guides from when I couldn’t afford
a real Mac:




CONTEXT

Recently when working on some backend code, I noticed some extra requests that
were received by my web server:





Those requests (e.g. apple-touch-icon-precomposed.png) are being sent to get the
app icon that are used when the user adds your website onto their home screen.
All of this makes sense, however they are sent immediately when the user hits
the share button, instead of later in the flow when the user actually chooses
the Add to Home Screen option.

The proof of concept is available on GitHub at KrauseFx/privacy-share-button,
it’s a very basic Sinatra + plain HTML/JS website. The server keeps track of the
apple-touch-icon requests per IP address, and the client simply polls to get the
status of it. However there is no reason to render the status on the frontend in
the first place.


WHY DOES IT MATTER?

While this isn’t a big privacy problem, it still is an issue that could easily
be prevented by Apple. New social media apps like TikTok make use of sharing
behaviors on their platform, growth marketers care a lot about all kinds of
data, and this getting some extra context on if certain content is being shared
outside their platform is most likely very much in their interest.

This allows the website operator to also guess with good accuracy which content
the user hit the share button for, by looking up the most recent page they
opened up.


SIMILAR PROJECTS I’VE WORKED ON 

I published more posts on how to access the camera, the user’s location data,
their Mac screen and their iCloud password, check out krausefx.com/privacy for
more.

Tags: ios, privacy, safari   |   Edit on GitHub


INSTAPIPE.NET - DISTRIBUTE YOUR INSTAGRAM STORIES

May 22, 2019


BACKGROUND

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.


SOLUTION

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.

 * On howisFelix.today?
 * Integrated into krausefx.com (desktop only)
 * Plain live demo

Features

 * Design similar to instagram.com 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.



https://instapipe.herokuapp.com/stories.json?user_id=4409072

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)



--------------------------------------------------------------------------------


OPEN INSTAPIPE.NET

Tags: open-source, instagram, telegram   |   Edit on GitHub


WALKWITHFRIENDS.NET - STAY IN TOUCH WITH REMOTE FRIENDS

May 21, 2019

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 WALKWITHFRIENDS.NET

Tags: telegram   |   Edit on GitHub

Newer / Older
 * KrauseFx
 * KrauseFx



Want to be the first to hear about more privacy and mobile related essays?

Subscribe