Hey, my name is Jyotirmay Shelly and welcome to my About me page.

{
         "name": "Jyotirmay Shelly",
          "age": "21",
        "email": "jyotirmay.shelly@gmail.com",
      "Address": "Edmonton, AB, Canada",
       "School": "University of Alberta",
 "current year": "Third",
}

Interests

My main interest is in Software development, with specific interests in Low-level network development, Embedded development, Web Development, Mobile Development, and Application Development. I also have prior experience in the aforementioned fields.

Furthermore, I have a great interest in programming language design and implementation. I believe that knowing how a language is designed (and implemented) – hence knowing whether it is compiled, requires a runtime, is garbage collected, knowing its underlying memory management model, its type system, etc – can greatly boost the programmer’s efficiency and also lead to some rather insightful considerations. After learning Rust (I love to program in Rust) I learned a lot not just about Rust but also about other programming languages. I realized that, as programmers, we often take a lot for granted (like which Data structure to use, whether the language requires a runtime, etc) which can have great implications when designing code for scalability or when working under constrained environments (like embedded systems). Incorporating these considerations also lets one know when to not worry about these things.

I also love open source software. As a Linux and (neo)vim user for the past two years, I have gained great appreciation for open source software. I have also made my own contributions to the open source community.

Skills

Programming Experience

  • Java: I have a very good grasp of Java, OOP, and design patterns. I have used Java to create a Multiplayer Android QR Hunting game in a team based environment.

  • C/C++: I have used C/C++ in compiler development. I have also used C/C++ in a systems programming class where I used it for the following: Interprocess communication (using FIFOs, pipes, sockets), multithreading, TCP communication over sockets, process synchronization (using concurrency primitives like semaphores, mutexes, etc).

  • Rust: Rust is my favourite programming language and I am still learning it. I have over 1 year of experience in programming in Rust. I have implemented the Snake game on a microcontroller using Rust (embedded development). I am also currently working on making a multiplayer terminal based client server uno game implementation in Rust.

  • Python: I have over 5 years of experience in python programming. I have experience with PyGame and using it in a OOP manner. I also have experience in integrating SQLite and MongoDB to create simple terminal based database management interfaces.

  • C#: I have extensively used C# and Unity for 2D game development. I also have a good grasp of OOP in C#.

  • HTML/CSS/JS: I am currently learning full-stack web development and will soon be learning different JavaScript frameworks.

  • Julia: I have some experience in programming in Julia in context of machine learning. I have used Julia to create and evaluate models.

  • RISC-V ASM: I learned Risc-V assembly in my ‘computer organization and architecture’ class in University.

Other Technical Skills:

  • Strong knowledge of (and experience with) Software Development Practices like Agile development, Test Driven Development, Scrum, Design Patterns, etc.

  • Solid understanding of Data Structures and algorithms, when to use which data structure, performance considerations, some practice with solving competitive programming problems.

  • Over 4 years of experience in using git. Experience of using git in a team environment.

  • Experience of daily driving and troubleshooting Linux and experience of using GNU/Linux utilities for two years.

  • Strong knowledge of Operating Systems concepts, programming in the POSIX environment. Multithreaded programming, Interprocess communication (IPC) between process using FIFOs, pipes, sockets (TCP). Both theoretical and practical knowledge of concurrency primitives.

  • Experience with Databases: Both SQL (SQLite) and NoSQL (MongoDB, Firebase). Experience with integrating these databases using APIs to other programming languages.