Knife City
Uploaded on April 30, 2023
summary
Knife City started out as an extension of my personal site that has grown to become its own website. Originally it was supposed to be a micro-social media app, but it has turned into a blog that I use to collect data on myself that is visible to all – this is in opposition to how current social media sites (Twitter / IG / TikTok) latently collect data on its users and form the content of the app around the interests of the individual users.
These apps use opaque feedback loops that use machine learning to feed content to the users. If you pay attention, the algorithms will show you things about yourself and make you realize that you’re interested in things that you wouldn’t have realized by yourself.
However these apps also try to convince you that you are into things that you actually aren’t a lot of the time – ie. YouTube trying to get every man to watch Joe Rogan / Andrew Tate content – because these topics are “engaging” and drive profits for the apps.
Knife City is a site that doesn’t use any machine learning, but rather consciously provided data from its users, in order to relay autobiographical information to themselves and others. Over time this data will reveal trends and information about users that will provide for greater self-understanding.
HISTORY
I have been working on a website that is currently called knife-city.com since around 2018. The website has evolved a ton in that time – it has changed domain names three times, from abdelrazaq.com to barbarian-encampment.net (which still runs the infrastructure of Knife City), and finally to knife-city.com.
The website started out as a place where I would put all of my coding side projects that I would work on while I was in college. I’ve always enjoyed coding and I would make little games and apps, most of the time to learn new technologies that I would read about on Twitter.
At some point I realized that I would often show people images that I had taken pictures of or old memes that I wanted to share. I felt like I would fumble around in my photos library in the middle of conversations trying to show people something I had seen or provide context for something I was talking about, and sometimes come up empty handed, which was frustrating.
The solution was to build an app where I could upload pictures to a server that I own (so that I’m not giving monopolistic dickhead tech companies my work for free).
I built the site at the very beginning of the COVID pandemic, when I couldn’t leave the house. Building the site was pretty simple – I built it on the existing stack – MySQL db, Express backend (API + CDN), React frontend. I originally made the React app with Create React App. I would source control the app via git and have a script on my server (Barbarian-encampment) which I would run that would do a git pull
on master, and then npm run build
to create a directory which would rewrite whatever was at var/www/html/image-uploader
directory. I also set up a VirtualHost config rewrite rule to enable subrouting via React-router at that url via Apache2.
To interact with the site, you need to create an account. A couple of friends have created accounts over the years but no one has contributed in a meaningful way to the site. I’ve considered removing the ability for anyone to contribute – at this point the site is mine and I like it that way – it’s a way for me to keep track of myself, but it wasn’t always like that. I was originally hopeful that it would be more similar to a 1980s university shared directory structure where a few people would use the site to organize their links, images, and notes. However the UI was always too clunky for this to be simple for people to use, and the days when people remember to go to websites or blogs instead of opening up an app are long gone.
I started out mostly uploading memes and screencaps that I found interesting – because that was largely my life at that point. I had by my current view, a pretty boring life at that point. I wasn’t doing much skating, and wasn’t doing any traveling. Originally I was thinking that I could create an automator script that would automatically upload screencaps every time I took a screencap, but I never implemented this because I figured on screencap it would have to take me to my own url where I would constantly have to create a title/description/tags for every screencap, which sometimes I wouldn’t want to do (taking screencaps of financial information, etc).
The image uploader didn’t get used much originally, and it’s almost embarrassing to look back at the images that I uploaded in 2020 and see what I thought was interesting or funny – however this documentation is what the whole site is about. I hope I grow in sophistication and my point of view develops to the point where when I look back on my perspective in 2026 I have to laugh.
Once I started using the image uploader more, it made me want to document and organize stuff I thought was interesting more, so I made the same way of organizing content for links and text. Over the past couple years I’ve barely used these anymore, as I didn’t want to post short form writing anymore, and I use the computer recreationally way less now than I did when I made the tool.
I’ve also added other tools more recently – I created a proxy server named “What the fuck is a cookie” that can be used to bypass sites that make use of cookies to paywall or limit information – ie. you type a url into a text field, send it as a form to my server, the server takes the url and uses cURL to make a request to the resource. The site then takes the raw html response and sends it back to the frontend where React pastes the response right into a div on Knife City.
Finally, I have a mood tracker that I use almost every day to track how I’m feeling – the idea being that it’s hard to know how I was feeling at any point in history. Sometimes recounting my actions or telling stories requires giving people context for where I was at in my life at a certain time, and I’ve found myself contradicting myself in recounting these moments to people. I wanted to create a greater source of truth for my general mood, so I created a tracker that uses a linear sliding scale to document this.
CONTENT OF THE SITE PRESENTLY
Currently, I’m focused on the development of three key portions of the site – Image Uploader, Mood, and What the fuck is a cookie
- Image uploader
- As I began to travel more and understand how I could use the image uploader more seriously, I began to use it more. It was less “look at this stupid image” and more “look at this interesting thing”. At this point, the site is almost all original images. I’m writing this on April 30 2023, and in the past 6 months I’ve uploaded two images that aren’t photographs I’ve taken or graphics I’ve created.
- The content of my photography is mostly travel pictures, skate spots, and stuff I see on the street that tells a story about the place. I use it to document my travel and provide context for what I find interesting – visually, aesthetically, and topically.
- Functionality around tags and dates assist in structuring the content and being able to paint more of a focused image of my perspective around specific topics.
- Mood
- I try to remember to upload my mood every day – most days I remember.
- Days that I don’t are actually a lot of times the most important ones – these are days where I’m stressed, intensely focused on things, or out of rhythm. The fact that these don’t get tracked are a big deal and result in an inaccurate image of my mood getting published.
- What the fuck is a cookie?
- This is the portion of the site that gets used the most by far, because it actually provides utility to people that aren’t me.
- Over the past month Apr 2023, the site has unblocked 359 sites. I’ve used it less than 20 times this month.
- There is a url that shows the sites that have been unblocked. It’s mostly tribune articles, I think either my mom or other friends use it to unlock Chicago specific articles because it was originally a tool *just* for the Chicago Tribune. I recently added a user-agent rule to the header of the cURL requests which allows articles from WSJ and NYT to be unlocked.
PLANNED UPDATES
- I want to create a subroute under the image uploader that allows you to sort images by location, ie. country, state, city, neighborhood.
- I want to add better filtering around content, and be able to combine any filters – I’d like you to be able to search by color. (You can right now, but only by specific hex color codes – which is completely useless). You should be able to search “blue” and it returns 500 pictures, or search “light blue” and it returns 200, for example.
- I want to add better information around uploaded data. There should be graphs that show the frequency of upload around tags, specific words, locations, colors, etc.
- This would provide a greater bird-eye view of what I find interesting and when, and what this shows about me.
- I want to create more “inter-connectedness” around content on the site. You should be able to see information about my mood and how this relates to the common colors in pictures, or the locations that I am in when I have an uptick / downtick in my mood.
- Rewrite — The current site is hosted on Netlify and is written in Next.JS because I wanted to learn it. I hate NextJS, I think it’s totally over-engineered, and there’s waaay too much Javascript. I think I want to rebuild it with Ruby on Rails – consistent, easy, and all the content should be built on the server instead of the client.