a person standing on their back on a wooden floor in front of a window

    Where did the idea of building a social networking platform come from? How does one make an app that attracts a billion users? Why would anyone in their right mind go against giants like Musk or Zuck? Before going into the story behind Swipekick, perhaps you'd like to watch a movie about it first. It took me an entire year to make this film! That being said, this feed isn’t a repetition of the story. I tried to use both mediums to provide a little extra something for this story.

    7 months ago

    Creating a social networking platform wasn’t the initial plan at all. The story begins so far back that I’m not even entirely sure of the year, but I’m 87% sure it was 2016. Nonetheless, I remember sitting in front of a fireplace at a summer cabin when the idea of a new kind of to-do app came about. For some reason, I believed that if a to-do list was public and had a social sharing aspect, perhaps people, including myself, would feel a greater sense of responsibility and motivation to complete tasks. I was hyped.

    7 months ago
    a person standing in front of a projection screen

    Back then, I knew nothing about UI design and even less about coding. However, I was so deep into filmmaking at film school that I thought to myself, "Hey! I know visuals. How hard can it be to design an app?" So, I discovered Sketch - the leading UI design app of that time - and learned it. Once I started playing around with shapes that formed the user interface, and could preview them on my phone, I felt literal butterflies in my stomach. It was that cool.

    7 months ago
    a couple of men standing next to each other

    Although I was dabbling with design, I still didn’t know how to code. Fortunately, I knew Sander, who had just recently started studying computer science at university. So I reached out to him, and we met to discuss the idea. He was in, fortunately. This is a guy who is not only extremely smart, but also musically talented. In fact, while pursuing his CS degree, he was also pursuing a musical education. Not only was he involved in numerous bands, but he was also active in university coding events, competitions, and already working as a part-time software engineer – all with an ease and a smile on his face.

    7 months ago
    a man sitting in front of a laptop computer

    In the early days, our focus was solely on developing a mobile app. If I’m not mistaken, initially Sander tried Xamarin and hybrid write-once-run-everywhere solutions. That wasn’t too pleasant, and at a certain point, we opted to go iOS-only. After many unsuccessful tries of getting Hackintosh running on his computer (I remember we literally tried adjusting specific low-level system files), we understood that we can’t get around of getting a Mac. Fortunately, we were able to get an older MacBook from the sister of a girlfriend of mine back then, and that thing ran perfectly. Except for the extremely bulged battery that was nearly exploding. Now, everything left to do was to actually code the darn thing. The only issue was that Sander had never written an iOS app or Swift before (it might’ve still been Objective-C back then, not sure), but with some use of his dark powers, he was able to bring the views to life. This is when Sander first said that: “In IT, anything’s possible”. Once we saw it on the phone (btw, we had only one iPhone between the two of us), it was exhilarating. It’s a real thing!

    7 months ago
    a drawing of a bear on a blue background

    I also remember creating the logo in 15 minutes. I had recently read "Hatching Twitter" by Nick Bilton, which tells the crazy story of how Twitter came to be. I then somehow stumbled upon the new Twitter logo, the flat blue bird, and read that it was created from only circles. Naturally, I was very inspired by it and decided to make an owl using a similar strategy. Back then we called the project Whoodoo, which sounded like a hooting. That’s where the owl came from. The logo is the only thing that has remained the same throughout all those years. It was the beauty of that simple moment, those magical 15 minutes, where something just clicked without trying too hard – the perfect way of creating something. And to this day, it reminds me of how it all started, serving as the symbol of the story behind it. That’s why the logo is still an owl.

    7 months ago

    Things started changing when one of my friends brought up, “Tarvi, this thing can’t be too shackled to one idea. It has to be more… abstract?” And it clicked in my head. The main aspect of a social to-do was sharing your goal and then showing the progress of its completion. It made more sense to fully remove the to-do part and simply allow showing progress on “something”. That’s how it turned into a micro-blog.

    a person's hands reaching for a pile of social media icons

    Back then, Instagram didn’t even have stories yet, I mean, they hadn’t copied that feature from Snapchat yet, let alone multi-photo posts. Our idea was still different enough compared to Stories, because the content itself was in the form of a good old “blog post”. It was never even an option for us to clone something already existing - if we’re actually doing this, then how would we approach it? However, that change for the app itself meant that we were delving more into the social network game against Instagram, Twitter, etc., and the thought of beating Zuck first appeared.

    7 months ago

    All of that meant redesigning and rewriting the code. We also ditched the idea of a native iOS app. If Sander was going to rewrite it anyway, then we might as well go with the web platform, which meant that it would be accessible from pretty much anywhere, regardless of your operating system or device. That didn’t make it any easier, though, because both in terms of code and design, you had to take into account anything from narrow phone screens to ultrawide desktop screens, low-performance cheap Android phones to high-powered PCs, different browser engines with different web technology support, etc. There were lots of variables to consider.

    7 months ago

    It was 2018, about two years since we started this journey. We knew we needed extra help because there was simply too much to do. Sander had a colleague named also Sander, who joined the effort, and additionally, my high school classmate, Jürgen, came on board.

    a man in a white shirt and bow tie
    a man with a beard and glasses is staring at something

    Interestingly, back in high school, during a local movie competition, Jürgen and I found ourselves competing against (the other) Sander’s movie. At the time, we didn’t know each other, but both of our teams ran bots to manipulate the rankings – we pushed our film higher and theirs lower, and they did vice versa. Well, we all got disqualified, but one thing was now certain - we now had the ultimate hacker team for Swipekick.

    7 months ago

    We really went after it. I handled the design and creative direction, both Sanders engineered, and Jürgen brought some order to the chaos by structuring the work into tasks, sprints, and a roadmap, providing us with a path to completion. However, I believe my lack of confidence led me to constantly redesign the entire thing. Nothing seemed good enough or special enough to justify anyone joining the platform. I couldn’t quite pinpoint or explain to someone's grandma why they should care or become a user here. In hindsight, during pivots it’s easy to lose sight of why you started the thing in the first place. It’s tough because we were about to enter a war with the biggest names: Zuck and Meta, Evan Williams and Medium, Jack Dorsey and Twitter, Evan Spiegel and Snapchat. It was daunting. Yet, nothing felt like it was going to disrupt these platforms. Users are ruthless, and if they don’t understand something or see value in it, then they don’t care. It’s not like making a movie where you can physically put people in a cinema to watch it - something I was more used to. Even if moviegoers don’t like the movie, then the ending could make it worthwhile if they sit through it. Here, if users don’t get it, then you've pretty much failed instantly as they click away. That led me to redesign a lot, which created a lot of extra work, and that trickled down to constantly pushing the finish line farther away. Looking back, I couldn’t have explained why someone’s grandma should use Instagram either. My brain didn’t think about that perspective, though.

    7 months ago

    It was 2020. A couple of years had passed, but we reached the minimum viable product. In another news, worldwide pandemic was happening. In addition to worldwide health crisis, I was struggling with my own mental wellbeing - I was creatively burnt out and I couldn’t put out any more creative ideas. I still worked in the film industry back then and had the greatest opportunities I could dream of alongside with the coolest people, yet I wasn’t able produce anything of my own. I looked at Swipekick, and although I was proud of the effort and the team, I couldn’t put my finger on why it didn’t still quite feel right either. I was a toast.

    7 months ago

    Obviously, not a single soul started using it. How do you plan to make an app that you want everyone to use when you don't even know what you would use yourself? I sincerely believe that, no matter what creative pursuit you're undertaking, whether it's a screenplay, song, or an app, it's important that this work of art has heart. And at that point, nothing I tried or did had it. It came from a very wrong place because all I could think of was making "the next big thing”. That's why it never felt right or finished. Not only with Swipekick, but with movies too. It was a tough lesson to learn. Of course, at that time, I didn’t know it yet.

    7 months ago
    a person holding a red pill in their hands

    What I did know was that sometimes you're smart enough to understand how stupid you really are. Then you have to decide whether to stay stupid or to learn. But.. it never actually is a choice. I knew that I had reached the limit of my current knowledge, and if I wanted to continue, then I needed to learn. There were only two things that I was able to latch onto at that time: Sander’s enthusiasm about coding and the feeling I got when designing UI. So I thought, what if I could become a front-end engineer myself?

    7 months ago
    a couple of people that are standing on a balcony

    I pulled the plug on my filmmaking path and enrolled in a software development bootcamp instead. Back to day zero. Back to being a noob. The camp was merely 6 weeks long, after which I went straight to work as a full-stack Node.js and React.js developer. Looking back now, it’s insane that I actually succeeded. I worked my ass off for many years. It’s a hazy time, but I did become “good enough”. Swipekick was pretty much dead the entire time, but it still weighed heavily on my shoulders. I knew deep down that the true power of Swipekick is hidden somewhere. In order to really crack it, I needed to become great. And in order to achieve that, I needed to start fiddling with it.

    7 months ago

    And that’s what I did. I occasionally fiddled with it, both with design and coding some UI components. The problem was that I never had a clear goal or deadline for it. But then something finally happened: I turned 29. Turning 29 wasn’t a big deal on its own, but it was the realization that the year after that I’d be turning 30. Did I really want Swipekick to remain unfinished business on my shoulders as I entered this new era? No. I needed to finish it somehow, elegantly - in a manner that the time and effort everyone had put into it had actually been for something. I had to dig in and find the heart of Swipekick.

    a man taking a picture of himself with a camera
    7 months ago
    a man sitting on a couch in a living room

    That being said, the idea of becoming the next big thing wasn't really on the map anymore. So to be fair, already at that point I wasn’t after Zuck or Musk. But it does create a nice title, right? It was more about creating something that you're happy with. Something that feels right. Something that has heart.

    The concept of Feeds and Swipes was already there, but the devil is in the details. I have a quirk: I want to give it a native app feel - something reminiscent of Apple's design ethos with superellipses, roundish edges, a comfy, minimalistic style, and seamless animation using spring physics. Programs consist of ones and zeroes, and it's essential to give them a human touch from the real world. However, it's quite challenging to achieve this on the web, as it's essentially an app within another app (web browser). And that, in itself, is sub-optimal.

    a person typing on a laptop on a table
    7 months ago
    a man sitting in a chair in front of a mirror

    The challenge was actually pulling it off. I had a full-time job, and this project couldn't interfere and negatively affect my work. I had just read "Atomic Habits," and I pretty much knew that making just a little bit of progress every single day could have a big cumulative effect. However, I understood quite quickly that working after work sucks. Another option is to wake up early, and that’s exactly what I started doing. I could clock in about 2-3 hours of working on Swipekick before starting my real job.

    a person standing in front of a window in a living room

    That in itself presents lots of challenges because, by 5 PM, you’re a vegetable. You start going to bed earlier too. I must admit that there were days I did some Swipekick even after my regular job. All in all, the days got very long, and at a certain point, I realized that minimum 12-hour days had become the norm.

    7 months ago

    I don’t want to sound like a lunatic, because the entire year wasn’t the same. There were intense periods, but there were slower periods too. There were times when I was more focused on my real job, times when I had a bigger emphasis on going out with friends, and times when I started focusing more on making a movie about Swipekick. In the summer, at Tuum, we have a 4-day work week, and I was able to use Fridays for this project too. That was also a big game-changer because I had an additional day with full focus and energy that I could use. I really enjoyed those fridays. At a certain moment, I started using my vacation days to take additional fridays off.

    7 months ago
    a man sitting on the floor in front of a window

    I designed and programmed at the same time. Then I immediately saw whether it felt right or if I had to go back to the drawing board. I re-did some things about 20 times. Usually I ended up where I started.

    7 months ago
    a graph paper with a picture of a circle on it

    Superellipses aren’t natively supported on the web. This is something that is native only for iOS and macOS (maybe for Android too now?). In order to achieve that effect, I need to measure every element so that I can cut the elements out with a superellipse algorithm. That poses many challenges. First, I have to skip the initial render in React. Although I’m using Next.js, which means my pages are rendered server-side, it’s only useful for SEO and Googlebot purposes. In reality, the site has to be hydrated with React before the user can use it and see it. Second, I also sometimes have to toggle the effect off when animating it. Third, due to superellipse itself, animations, and shadows, I need to create so many additional wrapper elements. All in all, this is actually plain stupid. It’s painful. Nobody is doing it. I would never do it in my actual job. But I love it here. I love how freaking smooth the end result is.

    7 months ago
    a person is holding a cell phone with the screen open

    For profiles and feeds, I actually wanted to have different themes, but the priority was default light and dark modes.

    a computer screen with a message on it

    The default theme bases its color scheme on the primary image, making the UI more dynamic and personal. To achieve that, every single photo that is uploaded to the platform is being analyzed for dominant color, darkness level, and other measurements, which are then persisted in the database. Additionally, I'm using AI to analyze and generate a caption for what’s in the image to use for the alt tag, which is necessary for accessibility and thus SEO.

    7 months ago
    a computer screen with a picture of a man sitting at a table

    The idea of a Swipe is to be a small unit of content, but the number of Swipes can quickly add up. For that reason, I made a custom-built slider to jump quickly between different parts of the feed. However, sometimes you simply need more space for your content, so it’s necessary to be able to expand a single Swipe. It has to be seamless, though. There’s no question about it. The real technology is not widely supported yet (View Transition API), so I had to hack myself around it. Currently, it's actually two elements on top of each other that switch to create that illusion. Let me tell you something.. it took me two months (!!) to get it on an acceptable level. I think I will rewrite it at some point to get rid of the Swiper.js library and custom build the entire thing with Framer Motion. That being said, I still made it possible to view the feed in a classical blog post or article view.

    7 months ago
    a close up of a computer screen with a keyboard

    Another part I completely underestimated was the content editor itself. One feed can have many Swipes. You should be able to add, delete, and move them. The content inside of the Swipe must also be editable. There can be text, images, videos, subheadings, all of which you must also be able to add, delete, and move. The difficulty comes with images because as the Swipe is a JSON schema, there’s no relation between storage, JSON schema of a Swipe, and processed photo entities in the database.

    a computer screen with a program running on it

    I don't want to store images that aren’t used anywhere, but I should never-ever remove the wrong stuff either. Yet, I need to process through the images to get the dominant color, generate alt tags, compress, and resize them. So my strategy was to put UUIDs to a great use and map through the JSON to keep things up to date. It was a true mind-bender for sure.

    7 months ago
    a man standing in front of a computer desk

    Pretty much everything I did turned out to be more challenging than I expected, thus taking more time as well. I mis-planned the development many times. First, I was expecting to finish the platform before summer. Then, I planned to finish it in the middle of summer. Next, I aimed for the 1st of September. After that, the goal was to finish it right before my Portugal trip at the end of November, because I wanted to use it there as my trip journal. And finally, the ultimate deadline was my birthday in December, just before Christmas.

    a man standing on top of a lush green hillside

    No matter how hard I tried, the work just didn’t seem to end. As I made progress, more stuff appeared. As I’ve become more skilled, the standard has constantly risen that I need to top even more. At a certain point you don’t see it with a fresh set of eyes anymore. How can I ever finish it? It truly felt that this thing cannot be finished.

    7 months ago
    a book with a blue logo on it

    Swipekick hasn’t simply been Swipekick for a long time. It’s a symbol of the story behind it. At a certain moment, I realized this, and started putting more and more thought into making a movie about it. I half-assed it at first, but the thought of it started growing on me, and soon enough I had bought additional lenses for my camera and went all in. I tried sketching an initial outline of the story and even edited some “coding sections” of the movie with placeholders, just to see if it could work. And it showed promise. Perhaps I went too far into it, because there were many months in total when I was solely focused on the movie itself. But you know what’s the craziest thing of it all? I started rediscovering my love for making videos, and I felt my creativity started to come back. Looking back, I’m not sure which turned out to be a bigger challenge - making the app or making a movie about it, because the sheer amount of self-reflection it took was staggering.

    7 months ago
    a man taking a picture of himself with a camera

    Making that movie was ultimately the thing that helped me figure this thing out. I realized that while software development is a never-ending process, Swipekick as a movie could be finished. I finally demoed the entire thing to Sander. Actually, his expertise was needed to make it production-ready, so that there aren’t any dumb things that might have slipped through my fingers. In addition to Sander, it was time to reconnect with the other Sander and Jürgen too.

    a couple of men sitting in front of a computer

    Looking back, the best parts about Swipekick were me and Sander starting out and the four of us just going at it and building it. Once I realized it, then it was pretty obvious how this movie could be completed.

    7 months ago

    At a certain moment, you have to draw the line and accept that you have come a long way. And although there might be a long way to go, you simply need to release it. Not just in terms of software release or movie release, but a mental release from your mind and life. You need to make room for new stuff and new ideas to appear. So I decided to roll with it.

    a man sitting on a couch reading a book

    It’s actually funny how simple Swipekick is: it’s just a bunch of feeds, swipes, and posts. Anyone could do that within a month or two. On the other hand, that is the difference between cloning something and figuring things out on your own. To get to that simple conclusion, it took countless hours of experimentation.

    7 months ago
    a group of men standing next to each other in front of a tall building

    We didn’t beat either Zuck or Musk, and Swipekick has only one user: me. Will it ever go public? It might. There are a couple of things that still need to be polished. I have ideas to incorporate Swipekick into many upcoming YouTube videos as I keep improving it until it’s ready to be released to the wild. But! I have now achieved what I wanted to achieve. It’s no longer a burden on my shoulders. The story and legend of Swipekick have come alive. Here it is. I’m currently writing this on Swipekick, and you’re currently reading this on Swipekick. Now, isn’t that something?

    7 months ago