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:

  • Created a React-Flask app to find local scholarships by scraping business directories in user's area
  • Developed web API to parse small business websites from said directories for scholarship
  • Integrated Asyncio into the API to send asynchronous GET requests to reduce scraping time of 10+ websites from 20 to 10 seconds
  • Returned scholarship websites to React Front-end and displayed to the user
  • 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

    By the end of my 8 month work-term at Cisco, I felt that I had achieved the goals I had set many months ago. I have gained alot of knowledge of how large software projects are built by distributed teams. I learned the importance of communication while working on a big project. I also learned the importance of making connections in the industry. Overall, I had a great time working at Cisco and would recommend others join the company as well if given the opportunity.

    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

    Concluding my 4-month stint at Amazon, I'm happy to say I achieved my goals. The experience immersed me in the intricacies of developing large-scale software projects within distributed teams, emphasizing the critical role of effective communication. Building connections in the industry proved invaluable, offering a broader perspective and enriching my understanding of the tech landscape. Amazon's collaborative and innovative environment have made these months both challenging and rewarding. I highly recommend others to take advantage of the opportunity to work at Amazon, I believe its worthwhile.

    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

    Concluding my 4-month internship at Arctic Wolf Networks, I'm thrilled to share that I learned alot in this coop. This experience deeply immersed me in the complexities of developing large-scale software projects within distributed teams, underscoring the pivotal role of clear and effective communication. Establishing connections within the industry has been immensely beneficial, providing me with a comprehensive view of the technological landscape. Arctic Wolf Networks' collaborative and forward-thinking atmosphere has made this internship period both demanding and fulfilling. I enthusiastically encourage others to seize the opportunity to intern at Arctic Wolf Networks; it's an experience I wholeheartedly endorse.

    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.