Previous Post

Focusing on what matters

Next Post
Focusing on what matters
DESCRIPTION

Firstly I want to say thank you for believing in Futureporn and the vision of creating the galaxy's best VTuber hentai site.

This month I'm having to make some difficult decisions due to my ongoing financial hardship. I'm at the point where I have to either get another job or become homeless. Obviously I don't want the latter; I enjoy hot showers whenever I want, and having a place to cook food.

I'm taking a break from my youtube channel to focus on finding a job. I asked myself if I should take a break from Futureporn as well. I'm not going to. Futureporn is what keeps me going. I love the software integration grind. I love the challenge. I love the progress and the results.

Futureporn is my second priority in life right now. First priority is my health. I'm doing good in my health, so Futureporn comes next.

I'm going to continue to run Futureporn until the sun explodes. That's the plan. Obviously I probably won't live until then, so the point is that I'm going to run Futureporn for the rest of my life. Or I guess if someone offered me 1 Billion dollars, I might fold and sell, but then I'd immediately use the funds to launch 100 companies to compete with Futureporn.

The last month I spent trying to make IPFS fast by implementing a private, Futureporn.net exclusive IPFS gateway. The first step in making that happen is coming up with a way to password protect a regular IPFS gateway. IPFS does not have that functionality built-in, but their documentation recommended using a reverse proxy.

For a viewer to gain access to the private IPFS gateway, they must first authenticate with the reverse proxy before it gives them access.

This seemed very doable in theory, as there are many reverse proxies out there with ready-made authentication plugins. I'm most familiar with Caddyserver, so I looked into a plugin called caddy-security which helps create an authorization gateway.

Unfortunately, caddy-security did not offer Patreon support, so I coded that functionality myself.

Next step came integrating the Futureporn front-end with the authentication scheme provided by caddy-security. This step took weeks longer than I anticipated, and I ran into a hurtle which I could not overcome. Video served with IPFS was still slow as shit even with a private IFPS gateway.

I was crushed. I was depressed. All that work and I still didn't have a way to speed up video for patrons. In theory I know it's possible to speed up IPFS. Maybe 10 years from now everyone will be using IPFS because it's the fastest way to serve everything. Right now, that's not the case, and I think speed on IPFS is going to take a massive investment of time and research.

It's likely the case that the way I'm going about streaming is a bottleneck. I think it would be faster to split video files into chunks like most streaming platforms do, replacing the direct link to a .mp4 file with a direct link to a playlist of video chunks. I think it's worth looking into and iterating on, but I think I'm out of time.

If I want Futureporn to succeed, and if I want to spend as much time on it as possible, I have to have the bio survival tickets necessary to do that. Futureporn has to become a product or service that solves problems for people, to the point where it makes sense for them exchange some of their hard earned cash.

I've been thinking about goals, milestones, and mission statements, and I came up with a two phased plan for Futureporn.

Phase 1 is solving the viewer's problems. Solving the problem of viewers missing their favorite hentai vtuber's latest stream. Solving the problem of slow/laggy VOD playback. Solving the problem of not being able to watch on mobile.

Phase 2 is solving the streamer's problems. I haven't thought deeply about this yet, because Phase 1 is incomplete. Initial thoughts are surrounding streaming platforms and user experience. "Better Chaturbate" comes to mind. Whether that's an extension like BTTV, or an entirely new streaming platform is up to the imagination. Right now, either one of those things is a big, hairy, audacious goal, but it's not the focus until Phase 1 is complete.

Phase 1 will likely take another year. I am slow, I have setbacks, I have struggles. However, I'm setting my sights on December 30, 2023 to complete Phase 1. This deadline will ground me in reality and serve as a reminder that I don't have all the time in the world. I need to solve problems that people have now, not only problems that people might have 10 years from now.

Let's talk about progress. This April, I made some drastic changes to Futureporn's backend. I took some advice from a friend and simplified the crap out of my spaghetti code. Instead of using something completely bespoke, largely undocumented, and riddled with reliability issues, I switched to Strapi.

Without going into too much detail, Strapi is a graphic user interface for a Postgres database. It also helps developers handle user authentication and authorization, and it has great API support for requesting data destined for display in in a website frontend.

I think this change is going to be really good for the management aspect of Futureporn. Strapi lays out all the VOD data in a web browser kind of like a wordpress site or other content management system. Previously I would have to be on desktop and log into the database using PgAdmin. Now, I can edit VOD data from anywhere if I have to. Additionally, this opens up the possibility for team members to add new VODs if I can't.

That brings me to a big issue which came up during the past 30 days. Chaturbate made some big changes to their infrastructure which prevents me from recording VODs how I have in the past. What CB did is they increased their Cloudflare protections settings to block cloud-based IP addresses from accessing their systems. This means that it's now very difficult to watch streams on Chaturbate via a VPN, or via a VPS, which is exactly how I was recording streams.

I haven't found a way around this blockage, because it's not just my recording software being discriminately blocked. It's the actual origin IP address of my Virtual Private Server that is being blocked. Any requests at all from a blacklisted IP address are not able to connect to Chaturbate's servers, and this completely threw me off.

An obvious workaround is to record VODs from a residential internet IP address. These IP address ranges are generally able to connect to Chaturbate's servers. I looked into this and did some testing. I recorded a CB VOD in 720p, then watched it back. There was a lot of skipping in the video playback due to my limited bandwidth. I determined that 720p recordings are not possible on my home internet in rural America.

Next I tried recording in 240p. A friend noted that it could be a good thing to record the 240p stream. It would reduce one repetitive task if I could record in 240p and upload that to Futureporn, rather than later creating a 240p encode from the source.

Unfortunately in my testing, even though I select 240p in the excellent ctbrec, Chaturbate automatically upgrades the stream to the source resolution, and I was back at the problem of not having enough bandwidth for that.

The past several Futureporn VODs have been provided by the community, who individually have recorded Mel's streams via their home internet. This is the only solution for the CB blockage I have right now.

Relocating for work is looking really attractive right now. If I moved to a major city, I'd definitely have access to high speed residential internet. And hopefully a new job would give me more funds for building Futureporn.

Anyway, I've been pondering on what Futureporn could look like in the future. More sexually explicit Vtubers. All of them.

I know from experience that it takes an incredible amount of time and dedication to track down and archive every streamer's past CB livestream. It gets more difficult as time goes on, because most content gets lost over time. There is no possible way that I can do what I did for Mel's streams for every H-streamer out there.

However, the crowd can. My focus has been ProjektMelody, but there are people out there who have a similar level of dedication to another streamer. With our efforts combined, we could log everything.

So here's what I'm thinking. Just like popular video sharing sites, I add an upload button where users upload their copy of a vod, add metadata details like streamer name, date, time, title, etc. I would tweak the frontend to have a page for each streamer, which lists their vods in chronological order.

I love completing things, which is why I have various progress meters on futureporn.net/goals. I would implement the same thing for every H-streamer, as well as implement a method to add a timeslot for a past livestream, even if the vod itself is nowhere to be found. This way, Futureporn becomes a historical archive of everyone's favorite sexytime events.

This might be feature creep. But I think it's good to think about. There's a lot of things that need to happen before I can open the floodgates and allow user uploads. Obviously money, performance, promised features, yeah.

Speaking of performance, I have great news in that department. Another thing I implemented recently is a patron-only CDN! This is completely separate from IPFS, tried, tested and true. It's a subscription service from a provider called Mux. It's fucking fast! I'm really pleased with it.

Of course there's always a downside. The downside is that the good-looking Plyr.js that I've been using on Futureporn is not compatible with Mux. Instead, I'm stuck with video.js. It's a mature project, very feature rich and reliable, but I have yet to find a CSS theme that looks really good. Of course this can be something to iterate on and improve over time, but I think for now the fact that videos load and play quickly via that player is good enough!

And there are caveats, too. Those being completely on my end due to having no money. For each video hosted by Mux's service, I am charged a usage fee. To keep cost low, I'm planning on only hosting only a few videos at any given time. I'm choosing to host the n latest VODs, where n is a variable determined by the amount of active patrons. I'm starting small and scaling up with community support.

I have an update ready to go which uses an icon to display the presence of VODs with a public (IPFS) video, and those with both a public and patron-only (CDN) video. This way it's easy to see from the home page which vods have the fast video available. Logged-in Patrons are given the option to select between the public and patron-only video player.

Speaking of logging in, what a wild ride learning about Oauth2 and JSON Web Tokens (authentication & authorization) has been. I spent many days lost in the minutia, and absolutely loved it! I got stuck many times, but there were always forum resources, documentation, etcetera. With time and pressure, each time I figured out a way forward.

Implementing auth & auth has been an eye opening experience on something I have taken for granted. It's helped me understand one of the reasons why people use javascript for user interfaces. Without it, processes would take multiple steps, multiple page loads, and maybe even copy pasting access tokens. Javascript simplifies the user experience.

I've gone through several cycles of adding complexity in exchange for features, only to realize the complexity is harmful to the developer or user experience. I've done a lot of backtracking in order to delete a part that is causing friction.

Last month I was looking at using Svelte to implement some reactive features like IPFS gateway switching. I've since removed that feature because I don't think it was useful, and I don't think it was performant.

I've since opted for no reactive library such as React, Vue, Preact, Svelte. Using any of these requires that I add another step to my build system, one that renders reactive components into plain old javascript. Instead I grabbed what I think is the simplest, most intuitive javascript library out there, Alpine.js.

It has been amazing working with Alpine. It integrates extremely well with my existing HTML templating engine, and eliminates the need for creating reactive islands that I've talked about in the past. I'm kind of infatuated with Alpine's simplicty, and I think it can help Futureporn grow.

Let's talk about next steps. I need to remain housed and fed so I'm getting a job. I need more money to use Mux's Content Delivery Network so I'm re-allocating patron funds. Instead of running 3 IPFS nodes to serve public content, I'm going to run just 2. The money I save from that third server will go towards Mux bandwidth cost.

Sound good? Got any feedback? Got any ideas or inspiration? I'd love to hear about it.

As always, I track website issues, goals and milestones on https://github.com/insanity54/futureporn/issues. If there are any issues you know about and want to track more closely, the issue tracker is the place to subscribe. If there are issues you know of which aren't tracked, I'd love to have then entered into the issue tracker so I have a good picture on what I have to work on.

Of course, Github might not be everyone's cup of tea, and if not, I'd love to hear about any issues you have via the comments below, twitter DM, or Discord. https://discord.gg/wrZQnK3M8z

@CJ_Clippy PATREON 6 favs
VIEWS1
FILES1 file
POSTEDApr 15, 2023
ARCHIVEDJun 10, 2026