## Introduction to IV Kitten - Project by Team /dev/null
IV kitten is fully implemented in Golang which recursively searches for images in the given directory and prints them on the kitty terminal using Kitty Graphical Protocol as mentioned in the https://github.com/kovidgoyal/kitty-fosshack2024/issues/4 for FOSSHack 2024 by Team /dev/null.
The IV kitten is a highly productive image-searching kitten for Kitty Terminal for Power Users. It harnesses the power of Golang with the speed and security of code. We have taken references from Game Development and knowledge of Computer Graphics because of the highly dynamic parameters that change in the background. We have made use of multi-threaded programming to keep keyboard input controls and terminal window size responsive in the background with Golang's powerful Concurrency and Unix's system calls to interrupt the main thread with handlers.
### Concurrent Programming with Golang
We believe in multi-threaded code for faster performance in terminals like Kitty and made sure that we harness the goroutines. Since keyboard and window sizes are variable and have unexpected inputs at any time, having a handler to acknowledge these inputs and interrupt the main thread is necessary. So we did low-level interactions with kernel drivers for keyboard input as well as used system calls for interrupts related to resizing the window.
### Globally defined Data-Structures
Since we have taken inspiration from computer graphics and game development, we have heavily defined data structures to be accessible globally by any function where it's required which helps in acknowledging variations in the program. We have made use of structs for keeping track of various parameters like Grid Parameters, Window Parameters, Configuration files, Navigation Parameters, Image Boundaries, etc.
### Functional Programming Paradigm
Unix Philosophy is "Do one thing and do it right" and by adhering to the principle, we made all the functions to one task at a time. This allows almost all functionalities to have access to the globally declared data. Also, wherever we can (in future), can get these functions in goroutines.
### Grid Implementation and Rendering
Rendering had a huge deal of mathematics and geometry in it. We have tried implementing them in the form of code, which in 2 days was not feasible even for 4 of us. A large amount of work has been accomplished in this term, but we would be continuing the make efforts to ensure we complete it till the end.
### Future Development
This was a heavy project to complete in 2 days. So we have planned to dedicate time to further expand on and develop the current code base. Since it's MVP, we would be working on fixing bugs and issues, making sure that this kitten reaches the production environment.
Collective Efforts by
Swastik Sharma
Utkarsh Maurya
Mrigesh Thakur
Aditya Patil