Hello, Taha here!
I'm a computer science student @ UoG
SKILLS
Python
I'm fairly new to Python but I've found it very useful because of its simplicity. I used it to program a backend in Flask for one of my projects. It's libraries made it really appealing to do a web scraping project in it.
Java
Java was the first language I learned. In my High school CS courses I learned about variables, functions, data types and Object Oriented programming. I would say I'm the most experienced with this language over others.
HTML
I first used HTML back in grade 10 in order to make a webpage for my computer engieering assignment. I recently came back to it so I could learn how to scrape html pages off the web for my project. After that, I used it to create this site along with CSS!
PROJECTS
ScholarshipScraper
Languages/Technologies: Python, JavaScript, React, Flask
Description:
Work Experience (WT1/2)
Cisco Systems, Inc.
What is Cisco?
Cisco is a technology giant that designs and manufactures networking, communications and security products for businesses big and small. Founded in 1984, Cisco has grown to become one of the world’s leading providers of IT products and services. Cisco offers a comprehensive portfolio of products and services that enable businesses to securely connect people, information, and processes. Cisco’s products are used in over 10 million businesses worldwide and are designed to help organizations thrive in the digital era.
Job Description
Languages/Technologies: Golang, Python, Kibana, Jenkins
As a software engineer at Cisco, I was responsible for developing and maintaining software applications to support our products and services. I was part of a cross-functional development team that works on a service creation and delivery platform. My role involved a mix of software development, test automation, manual verification and debugging issues. For development I built features for our backend microservices in Golang and created automated tests for them in Python. Along with coding and testing, there was alot of collaboration involved to coordinate with teams on features that had external team dependencies.
Goals
Golang
One of my main goals for this work term was to learn Golang and its surrounding tools. This is because Golang was becoming a prominent part of my team's software stack at Cisco. And considering that the language's popularity has been growing in the backend development space, I thought this would be a goal I could benefit from in the future. The first challenge I encountered was wrapping my head around interfaces that weren't related to OOP. Another challenge was dealing with errors without exception handling. Because of this, I had to learn to check for errors returned by every function. After many months, I had grasped a better understanding of these fundamental concepts of Go.
REST APIs
Properly learning about REST APIs was another goal of mine. I wanted to learn what they were and how to correctly implement them. The biggest reason behind this was that REST APIs are a standardised protocol for communication in a client/server architecture. I thought this would have major carry-over to other development co-ops I would do in the web/internet space. I learned how to implement APIs such as GET, POST, DELETE, etc. Another thing I learned was when to use query parameter vs path parameters when making a RESTful API call. Path params are to be used when making a call specific to a resource, while query params specify properties of a resource in the backend.
Time Management
This goal was very important to me since I have always struggled with it in the past. Time management is crucial in large software projects, because many things are being worked on simultaneously. Vague requirements, internal dependencies, and deadlines are all problems that get worse if you have bad time management. To work on this goal, I would clear up any vague requirements right away when assigned a task. I would also scope out the problem ahead of time to determine any external dependencies for finishing the task. I would work on those first to make sure there aren't any unexpected delays in the completion of the task.
Conclusion
Acknowledgements
While at Cisco, I had the pleasure to interact and learn from many people including developers, product owners, architects, and directors. But I would like to thank my manager Oussama for guiding me and helping become a better developer.
Work Experience (WT3)
Amazon
What is Amazon?
Amazon, founded by Jeff Bezos, is a global technology and e-commerce powerhouse. A significant dimension of computing science associated with Amazon is its influential role in cloud computing, spearheaded by Amazon Web Services (AWS). Under the leadership of Andy Jassy, AWS has emerged as a leading global cloud services platform, fundamentally reshaping how businesses approach their computing requirements. Headquartered in Seattle, Amazon maintains a sprawling global presence, offering a diverse product portfolio spanning e-commerce, artificial intelligence, streaming services, and smart devices. Recognized for its commitment to innovation and customer-centric principles, Amazon has left an indelible mark on the landscape of computing science, particularly in redefining the parameters of cloud infrastructure and services.
Job Description
Languages/Technologies: TypeScript, JavaScript, React, Node.js, AWS
During my time at Amazon, I spearheaded an intern project, where I was tasked with developing a web sandbox for a React Native UI library. This project aimed to provide internal customers with a platform to interact with and configure components in real-time. The primary languages leveraged for this project included TypeScript and React, and the project was hosted on AWS infrastructure. In addition to the development work, I conducted design reviews for my implementation, which underwent several iterations before reaching the final solution. This experience not only deepened my technical skills but also honed my ability to navigate collaborative projects within a dynamic environment.
Goals
React
During my internship, a primary goal was gaining proficiency in React, crucial for my project which involved building a web sandbox for a React Native UI library. Grappling with React's component-based architecture and concepts like state management and props posed initial hurdles. Immersing myself in the React ecosystem, addressing challenges related to state management, component composition, and routing became focal points. Seeking resources, engaging in pair programming with teammates, and reading established React code bases helped me learn. Consistent engagement with React-centric tasks, feedback incorporation, and active participation in the web sandbox project met requirements helped me develop my frontend development skills.
TypeScript
My second goal was to acquire proficiency in TypeScript, which was essential for the web sandbox project. Navigating TypeScript's static typing paradigm was challenging, requiring a shift from dynamic languages. Immersed in TypeScript, tackling complexities in type handling, implementing interfaces for APIs, and integrating TypeScript with React components became focal points. I sought out help from my teammates who had been experienced in TypeScript longer than me to get up to speed. Consistent involvement in TypeScript-centric tasks, feedback incorporation, and participation in the web sandbox project met requirements and equipped me with valuable frontend development skills, especially in environments prioritizing strong typing.
Maintainable Code
My last key focus was improving my proficiency in writing maintainable code at Amazon. Adapting to a diverse codebase, I prioritized consistent naming conventions, clear documentation, and modular code structures for maintainability. Actively engaging in code reviews, seeking feedback, and incorporating industry best practices refined my approach. Progressing, I incorporated principles like code modularity, encapsulation, and adhered to design patterns. Recognizing the role of code documentation and self-explanatory code, I aimed for functional and comprehensible contributions. My goal ended up having a good results as my average revision count on my Code reviews steadily descreased during the internship.
Conclusion
Acknowledgements
While at Amazon, I had the pleasure to interact and learn from many people including developers, product owners, architects, and directors. But I would like to thank my manager Roi for guiding me and helping integrate into the team and Amazon as a whole.
Work Experience (WT4)
Arctic Wolf
What is Arctic Wolf?
Arctic Wolf Networks is a cybersecurity company specializing in providing managed detection and response (MDR) services to organizations. Their platform offers continuous monitoring, threat detection, and response capabilities to help businesses defend against cyber threats effectively. Arctic Wolf's services are designed to help organizations of various sizes enhance their security posture by providing expertise and technology to detect and respond to cyber threats in real-time. They typically serve businesses across different industries, including healthcare, finance, technology, and government sectors.
Job Description
Languages/Technologies: Golang, Python
During my time at Arctic Wolf, I worked on many tasks that contributed to the codebase. One of them being developed automated deletion of churned customer data. These scripts would collect customer names and scour the database for any entries of these deleted customers. I also developed new UI interfaces that allowed you to interface with the sensors and configure networking information. I ended up using both python and golang to develop these backend solutions.
Goals
Python
During my internship, a primary objective was to become proficient in Python, essential for my project involving backend development tasks. Initially grappling with Python's syntax and concepts like object-oriented programming and handling data structures posed challenges. Immersing myself in the Python ecosystem, addressing difficulties related to data manipulation, algorithm design, and handling various libraries became focal points. Seeking out resources, engaging in pair programming sessions with experienced teammates, and studying established Python codebases were instrumental in my learning process. Consistent involvement in Python-centric tasks, integrating feedback, and active participation in backend development projects enabled me to meet requirements and enhance my programming skills in Python.
Testing
My secondary aim was to become proficient in automated testing. This shift involved understanding testing frameworks, configuring test suites, and interpreting results effectively. Collaborating with experienced teammates, I accelerated my learning curve. Through consistent engagement in automated testing tasks and iterative feedback incorporation, I successfully fulfilled project requirements and cultivated valuable skills. This experience equipped me to contribute effectively to projects prioritizing reliability and scalability.
Security
During my tenure at Arctic Wolf Networks, a primary focus of mine was enhancing my proficiency in implementing robust security practices. Immersed in a diverse codebase, I dedicated myself to establishing and adhering to stringent security measures. This included prioritizing consistent security naming conventions, thorough documentation of security protocols, and structuring code modules with security in mind to ensure maintainability. Actively participating in security-focused code reviews, soliciting feedback, and integrating industry-leading security practices honed my skills. Progressively, I incorporated principles such as code modularity and encapsulation, while strictly adhering to established security design pattern
Conclusion
Acknowledgements
While at Arctic Wolf, I had the pleasure to interact and learn from many people including developers, product owners, architects, and directors. But I would like to thank my manager Conor for guiding me and helping integrate into the team and Amazon as a whole.