intro

ft is a project that was near to my heart. I loved this project and the simplicity it offered. It had a real business case and it solved it rather elegantly in my opinion, I feel very proud of what I have achieved.

The ft-client was a very nice experience in developing with next js. It taught me how to properly write stateful code and how to seperate UI components.

Lastly, ft-demo was a lesson in simplicity. How one 500 line program can unlock a world of accessibility; allowing random users to use my project without installing it on their machines.

Today, I will not go over the trials and tribulations, nor will I go over why I made some technical decisions; Instead, let’s go over the developments and the idea behind ft-demo and how the journey of ft-demo went.

why another project?

Recently, I have relocated from the war-torn country I am from, Yemen, to the more peaceful and culturally diverse, Malaysia. With this change comes new requirements such as getting a new job or studying for university.

I have always wanted to work with a technical team and what better a time than now? I have several projects under my belt with more coming on the way and two projects that showcase my proficiency in client as well as server side code.

With this optimism, I started looking for jobs for a month straight without breaks. But, later, it dawned me, it would be much more useful if I could give the lovely recuriters and HR-people alike a real experience of my coding skills.

However, I was tired from creating ft and ft-demo and I wanted to experiment more with Common Lisp. Besides that, it would be too hard to re-structure the client from scratch to support Oauth authentication and that wasn’t an intended goal. Nor was adding more bloat to the elegant ft.

Instead, I thought: Why not create a middleware program that functions as a gate keeper for all ft requests. Since it is a middleware, it would just modify requests as needed and wouldn’t need much time to create.

Voila, ft-demo was born. Of course, the authentication part of the whole deal took some time, flacutuating between design decisions such as rate limiting or persistent connections per IP. At the end, however, I settled with the simplest of authentication: IP Authentication.

the nitty and gritty

This is my second time implementing ft-demo. The first time I implemented this project was rather cumbersome because it contains 500 to 1k lines spread out across multiple files with a microservices-like architechure. It was horrible but it worked.

I planned on releasing it, slept, woke up and I found my laptop broken unfortunately. Then, I had to reinstall my linux system with the project lost, I hammered to work.

Now, I could use net/http instead of gin. The original project used Gin but it was a pain to use because it was too overkill. With this project, net/http is just amazing to deal with.

Besides that, I opted for more sync.Map than map[string]interface{} because it is far cleaner.

conclusion

This project may now rest in peace as a completed project. I am glad I have finally completed a project with such substance.


bonus: the story of ft

Back in Yemen, my future was looking uncertain and I wanted to make some cash. I thought: “Hey, why don’t I sell some movies.”.

For those who do not know, internet in Yemen is like politics in America: expensive, slow and complicated for no reason. You have to pay a bonus for ISP employees to take your request seriously.

The movie business in Yemen was blooming; a customer would take a flash drive to the store and fill it up with all kinds of movies. I came in and I learned how to sell movies and everything but I knew I wouldn’t succeed lest I made something different.

What I planned to be different in was software. I wanted to have a full POS-like tracking system. How, you might ask? A remote file browser that only transfers files to the USB ports in the server.

Clients can connect and transfer files. At the end of the day, I’d use a regular expression to denote which category of films were sold and hold my employee accountable.

Sadly, I never got to see the idea come to fruition. Fortunately, I am busier with better and less shady things.