intro

Hello, everybody,

I am here to announce that ft has just released its first version.

Whilst, I don’t plan on expanding this project any longer; I do plan on releasing a demo for people to try ft online.

You could check out ft’s source code on GitHub. Alongside ft’s source code, you will find all of the features that are implemented. I consider this feature set perfect as they cover what a remote file browser should do: modify files and sophisicated copy operations.

In this article, I’ll go over my plans for a demo and how I plan to achieve what I want in-terms of a demo.

ft’s extensible architechure

ft absolutely depends on the underlying OS filesystem. In testing, it uses a memory file system but in production it uses the underlying OS filesystem for all operations.

The reason it does this is because it is a lot easier to extend the underlying OS rather than ft’s abstraction. Think about how easy it is to mount a FUSE system:

  1. install the necessary packages
  2. mount the file system.
  3. profit $$$

Contrast this to how it would be implemented internally and you would notice why OS filesystems are better.

ft-demo

I want people to try ft. To give it an honest try and I don’t think I’ll have that without making a tailored demo for every page visitor.

The reason is simple: Nobody has enough time to download the go runtime, the node js runtime, build both and execute the program. These days people are too busy with news, social media or whatever than to try my silly app.

Add to that the dangerousness of running a program that modifies the file system.

However, I am not going to let something I have created go unnoticed simply because other people are not willing to try. Therefore, I must implement a demo for ft project.

technical-details

The idea is quite simple:

  1. Create a Go program
  2. Go program connects with ft through a unix socket
  3. Go program sets a random cookie per IP; with a max of 5 random cookies per IP per day.
  4. Any request that go to that Go program resets the cookie to an hour from the request.
  5. The Go program also modifies all paths to include a base path with the ID of the cookie.
  6. The base path now becomes a FUSE mounted directory with a maximum size of 1 MB.

Why?

  1. Disk Space > Memory(ssds so stuff shouldn’t matter)
  2. No login authorization > Login authorization
  3. (Rate+Size) limit for those pesky spammers

conclusion

The project should take about a week of my time. Though I am a fast coder; these days I am busy with other stuff so it should take a little while.