Favourite GitHub Repositories - bounswe/bounswe2023group9 GitHub Wiki

A page where we inspect our favourite GitHub repositories and APIs.


Doom is a fast-paced arena-style combat game released in 1993. The game became popular in a short time and millions of copies has been sold so far. Numerous films, comic books and board games which have been spawned boosted its popularity. Nowadays, many enthusiastic developers try to emulate games developed years ago. Doom is among them. You might have seen various electronical devices running Doom such as an oscilloscope or menu ordering screen of McDonald's. However, I think none of them was as interesting as a microcontroller which costs only 4 dollars. Graham Sanderson has managed to compress DOOM1.WAD shareware which is 4 MB big for Raspberry Pi Pico which has only 2 MB of flash storage and made it possible to run the game on the microcontroller.

I found it fantastic to run a game on a microcontroller which costs only a few dollars. It made me realise how computer hardwares have developed so far. Also, Graham Sanderson tried his best to develop a project which matches the original game experience. The game includes all sounds, cheats, demo playbacks, and a network for multiplayer options like the original game. The project is also well-documented, and many aspects of the code and the results are explained in README.md file. However, how the setup is done is not explained enough. I couldn't find enough resource about the hardware implementation of the project. Therefore, those who want to implement the project by themselves might encounter some difficulties. Also, it is stated that the project contains some code that is no longer needed, which means that the code is not clean.

A video about the project

Mehmet Süzer


Data visualization is one of the necessary jobs of the data science and artificial intelligence project(all projects which requires handling data). It could be used for presentation and also choosing of how to handle data. Lux is an interactive tool which create graphs, charts and other different visualization methods of the given data and attributes for both visualization and exploration. Compare to classical visualization approach, it can create multiple interactive charts with just few lines of codes and give us to choose better representation of data without thinking and trying all types of visualization. Along with the ease of use , it also enables exportation of graph both static HTML or programmatically access in Jupyter Notebook. Most interesting part about this framework for me is in addition to traditional visualization tools it supports geographically visualization for some type of data.

Here is short introduction

Ahmet Abdullah Susuz


lightning(or pytorch-lightning) is an open-source project created to make development of machine learning models easier. It has many features to ease the process of realizing models. It handles some usually unneeded parts of PyTorch so that users can focus on what matters to them. It also provides surprisingly easy use of distributed environments which is crucial when the model to be trained is large. It is built on top of PyTorch and doesn't include much abstractions on top of it so anyone who knows how to use PyTorch can use it with ease.

The project is open-source so everyone can contribute by opening issues and pull requests. It is maintained by a group of professionals and public contributors which I find great and is one of the reasons why I picked this repository. Another reason is the way it is documented, It has a nice getting started page, an easy installation, an understandable API reference(which is hard to find nowadays), and even a roadmap that starts from basic to expert. It also includes many tutorials not just about the project but also about general machine learning practices. They also have contribution guidelines to keep the project consistent(project has some core principles). Entire documentation is built using GitHub Pages. The discussions page is very active and issues get fixes reasonably fast.

I often use this framework when I need to test something fast because it really quickens the process. I also learned a lot from its documentation which as I stated is very comprehensive. It also has TensorBoard support which I think is an important feature that PyTorch lacks.

Hakan Emre Aktas


Tesseract is an optical character recognition (OCR) engine that is widely used to convert scanned images of text into machine-readable text. Tesseract is capable of recognizing text in more than 100 languages, and it uses advanced algorithms to analyze the shapes and patterns of text characters in order to accurately convert them into digital text. It is often used in applications such as document digitization, text recognition in images, and automated data entry.

Pytesseract is a Python wrapper for Tesseract, the open-source optical character recognition (OCR) engine. It provides an easy-to-use interface for developers to integrate Tesseract into their Python projects. With pytesseract, developers can extract text from images or scanned documents and use it in their Python applications. It supports more than 100 languages and can be used to recognize text in various formats, including JPEG, PNG, GIF, BMP, TIFF, and PDF. Pytesseract also offers various configuration options to fine-tune the OCR process and improve the accuracy of text recognition.

Oğuz Pançuk


Motivation
       Since we are supposed to implement a graph ADT in our project, examining an API currently used to satisfy similar software requirements may provide a better understanding.
Overview
       The Graph API is named after the idea of a "social graph" — a representation of the information on Facebook. It's composed of nodes, edges, and fields. Typically you use nodes to get data about a specific object, use edges to get collections of objects on a single object, and use fields to get data about a single object or each object in a collection.
What I liked...
       -Pagination becomes inevitable when single response contains many objects. Meta suggests a very lightweight, pointer-like method.
       -Batch requests allows multiple API calls within a single HTTP request. If it takes too long to complete all the requests within the batch, the result is a partially-completed batch where successful requests responded by status code 200 and unsuccessful ones by null.
       -Nested request is provided via the field expansion feature of the Graph API which allows programmer to nest multiple graph queries into a single call. This gives space to create sophisticated queries to execute various algorithms for information retrival.
What I didn't like...
       -Field aliases let programmer change the name of the field to be retrieved. Although this provides using fields already present in the application logic, great attention must be paid using because it's stated that many endpoints do not support aliasing (Programmer pays the burden finding out which are those by trail and error, documentation doesn't involve a list). An example query which results in an error is given below.
$ curl -i -X GET "https://graph.facebook.com/me?fields=id,name.as(my_name)"
Conclusion
       Graph API docs are very well prepared and lets you immediately dive in by providing special explorer tool. We can also notice that an immense number of properties arise from graphs which are just simple connections of nodes and makes us remember: Simple is the best!

Arda Arslan


With the growth of data and the development open source artificial intelligence applications like ChatGPT, many AI tools have become popular. This project addresses the visual side of artificial intelligence. ControlNet is basically the implementation of an article named Adding Conditional Control to Text-to-Image Diffusion Models and it provides various variations of an uploaded image. ControlNet is a neural network structure. It produces alternative images as outputs when a canny edge image and a descriptive prompt are given as inputs.

I really liked that the README part of the project has brief explanations and diagrams of the underlying algorithms and approaches. It is also really nice to list the news about the project and the dates of the added features. In addition, many example results are included. Demo opportunities are also offered to developers with sample scripts. On the other hand, I was not satisfied with the code files as they did not have certain structural groupings and explanatory comments.

Ahmed Bera PAY


Formula One is a high-speed, high-tech motorsport that requires teams to make quick and accurate decisions about things like tyre selection and car setup. In order to make such decisions, teams rely on vast amount of data about car performance, including engine power, tire wear, fuel consumption that they can collect thanks to the advent of new technologies. Fast-F1 is a python package for accessing and analyzing Formula 1 results, schedules, timing data and telemetry. Data is available after sessions, information and data from older seasons are also present. The ReadMe file in this repository provides clear and concise instructions on how to utilize and plot the data using just a few lines of code. The guide is written in simple terms, making it easy for even those with limited experience to understand and follow along.

Although we may not have access to the same level of detailed information as the teams and their engineers, Fast-F1 provides an accessible way for outsiders to comprehend the sport. Using the available data, I can manipulate, compare, and analyze things like different drivers' speed and lap times, aided by the visualizations tools offered by Fast-F1. Through this process, I gain a deeper understanding of the decisions made by the teams in addition to the strengths and weaknesses of the cars. Formula 1 distinguishes itself from many other sports through its extensive use of data and the need for quick decision-making. As a fan and a future computer scientist, having access to such a wealth of information and being able to explore and analyze it further adds to my appreciation of the sport. By immersing myself in the data from Fast-F1, I develop a deeper understanding and love for Formula 1, as I come to appreciate the immense skill, strategy, and teamwork required to succeed in this high-stakes and fast-paced environment.

An article with examples about how to use Fast-F1

Ali Mert Geben


Apache Spark is a unified analytics engine for large-scale data processing by The Apache Software Foundation. It provides high-level APIs in several languages such as Python, SQL, Scala, Java, R. It also provides an optimized engine for general computation graphs for data analysis.

  • Things that I like: The repository is built by the efforts of almost two thousands of developers. There are a lot of example programs to try the engine. In addition, given instructions to setup the environment and run the example programs are easy to understand. Also, some sample tests are provided and a guidance on how to run tests is shared. Code comments are clean and comprehensive.
  • Things that I don't like: Work flow is not apperant since the issues are not used at all. Contributors use JIRA platform to create and organize issues but this makes the repository unclear.

Zülal Molla


Oh My Zsh is a free and open-source framework that provides a suite of plugins and themes for configuring and personalizing the Zsh shell. These plugins offer advanced functionality, such as syntax highlighting and git integration, while the themes enable users to customize the look and feel of their terminal.

  • The README page is well-designed and easy to read. It provides a clear and concise explanation of how to install and use the product, including how to uninstall it, which is a valuable addition. Also, it includes a FAQ section and a section addressing common issues, which is helpful for troubleshooting.

  • Wiki page is automatically published from another repository which sounds cool. There are 23 well-designed pages and each has a self-explanatory name!

  • The project has around 4.5k (216 open) issues. However, only one milestone has been created for the project and it was completed over 10 years ago.

  • The issues are categorized using 36 labels but colors of labels are not distinct enough, and sub-labels share the same colors which might lead to confusion.

Leyla Yayladere


This repository of intel provides code and documentation to help programmers and hardware engineers to use multi-core processor + FPGA systems efficiently. It is very challenging to allocate and use the resources of the FPGA efficiently due to the latency and the bandwidth of the link between the two. Especially reading data from the DRAM slows down the system pretty much. The implemented rapid design methods in the repository enables us to allocate and utilize that resources very efficiently.

The repo has a really good documentation and wiki. Tutorials, reference guides, and even some comprehensive design examples are supplied. Therefore, one can easily learn how to set-up, use, and more. However, the repo has been archived and discontinued on Jan 7, 2023. It will not be updated anymore.

Ömer Şükrü Uyduran


⚠️ **GitHub.com Fallback** ⚠️