About myself

NameKrish De Souza
Email[email protected]

Hello. Welcome to my blog.

This is my personal sandbox where I document some of the cool things I discover.

I am a senior software developer working at Xilinx, Cambridge. This is after graduating from Imperial College London. After completing my studies, I am eager to learn and apply my skills to contribute back to the wider community.

Currently, I am expanding my soft skills. At the moment, I am on a 732 day streak on duolingo for Portuguese. I am also actively pursuing a drivers license. This is in addition to a variety of personal projects including this website. My current project is to build a rust based Nintendo64 emulator. Please feel free to contact me for questions. I am also actively preparing patches to submit for Hacktoberfest 2019.

If you would like to contact me, please feel free to send an email above or send a message on LinkedIn. For those who wish to speak privately, my PGP public key and email can be found here.

Thank you for taking the time to visit my site and I hope that you will visit again sometime.

Krish Self Portrait

Technical Skills

So far, I have acquired experience across variety of languages and technical stacks. This includes C, C++, Java, Rust, Javascript and Python. I am also familiar with Haskell and Prolog.

In terms of database languages, I have utilised and trained to use MongoDB, PostgreSQL, Redis and Neo4J. Each have been used in a variety of stacks. A lot of the web projects listed on the project part of this website were constructed to utilise these technologies.

I have also gained some experience designing web sites using NodeJs and Express. I am also somewhat familiar with HTML5, Pug/Jade, CSS/SCSS. Front end web design is a rapidly evolving space that I am eager to learn. In particular, I am currently following the current advancements of WebAssembly.

Other technical skills I have acquired includes some proficiency in various scripting and build languages. These I have used to benefit the wider community by contributing to various projects including ckb-next, proton, and vlc. If you want to learn more about some of these skills, please feel free to puruse some of the projects I have contributed to. Some of hese can be found here .

Experience

Since May of 2018, I have been working as a software engineer at SolarFlare. My role at the company is primarily to aid in the development of Runbench. Although I have recently been moved to the Onload driver team.So far, I have managed to accomplish some success within the company. This includes the following:

  • Managed to improve/introduce unit test coverage by 50%. This project I have been rather proud as so far it has been the stepping stone needed to improve reliability of the project. It has also been one of the keystones for migrating the company code base to Python 3.
  • Responsible for redesigning and documenting the test RxeqNewRunbench. This test was designed primarily to check compatability of a pair of NICs with various cables and switches. Without this test, the company would not have been able to make the 18.2 target.
  • Responsible for testing the UEFI capabilities and modules for the NIC.
  • Improved the documentation practices within the company by introducing sharelatex company wide.
  • Improved the house network website bandwidth by 50%.

As part of my course, I was required to partake in a 6 month placement in industry. For these 6 months, I worked at a security company present in London. This experience was enriching as I had the opportunity to build a variety of projects for the company. This includes the following projects:

  • The first project that I was responsible for was designing a customer portal. This portal had some unique security requirements as it needed to serve the company's protected IP. For this project, I made use of various web tools including Bootstrap, NodeJS + Express and PostgreSQL. These were all hosted in a microservice system spread across various ESXi VMs. This project presented some interesting challenges in regards to client and server side authentication.
  • The second project undertaken at the company was a project designed to monitor and authenticate users based on keyboard patterns. This project was a useful experience in exploring some various debugging capabilities within Linux. For example, I learnt how to create and utilise shared libraries and LD_PRELOAD. Similar capabilities were explored using strace and ptrace. In addition, this task was useful for learning how to build projects that integrate with wider and larger projects. For example, I learnt how to use scons, the capabilities of named pipes in Linux and various challenges with serializing and deserializing data between C/C++. Additionally, I learnt how to use Google's C++ test framework to express the effectiveness of my program. Similarly, this project made extensive use of pthreads which gave a unique insight into how to design and overcome concurrency issues within C/C++.
  • The third and final project was to improve a internal time-tracking utility used within the company. The program was designed in C# on Windows so gave some unique perspectives and challenges which I hadn't faced before. I improved the code base by adding additional functionality such as checking whether a user is away from the keyboard. I also learned how to design UIs in XAML/WPF.

For more information about this internship, please contact me personally for references.

Education

Successfully completed my MEng course in Software Engineering with a 2:i. Below are some of the prizes I was awarded.
  • Awarded the Management and Business for Computing Engineers Second Prize for successfully leading a group of 7 to develop a business plan and presentation.
  • I was also awarded the Corporate Partnership Programme Award for outstanding achievement in my Individual project. My thesis can currently be found on the departmentwebsite under the academic year 2016-17. Below are the list of courses that I studied during my time at Imperial.
YearCourse
1Programming I (Haskell), Programming II (Java), Programming III (C), Computer Architecture, Computer Hardware, Databases, Logic, Reasoning About Programming, Discrete Maths, Mathematic Methods, Ethics of Computing, Logic
2Software Engineering Algorithms, Human Centered Design, Computer Architecture II, Operating Systems, Networks and Communications, Software Engineering Design, Compilers, COncurrency, Intro to AI, Models of Computation, Statistics, Into to C++, Intro to Prolog
3Business for Computing Engineers, Advanced Databases, Graphics I, Network and Web Security, Simulation and Modeling, Bioinformatics, Information Theory & Codes, Software Engineering II
4Privacy Enhancing Techniques, Cryptographic Engineering, Large Scale Data Management, Advanced Computer Graphics, Complexity, Software Reliability, Software Engineering III, Knowledge Representation

At school, I was awarded A*AAA in my A-levels in Maths, Further Maths, Physics and Chemistry. I also achieved 2A*, 6As and 2Bs for my GCSEs.
I was also active in Badminton, Rugby and Cricket. After school, I helped build a Caterham 7 as part of the kitcar society.