Posts

Writing tests for Rust HTTP source | GSoC 2019

Image
Writing test is an important part of Plugin development in GStreamer or rather for all most all software development. There are several reasons which clearly tells us as why writing test cases are important.

To point out the defects and errors that were made during the development phasesTo check whether all features are working at every changeTo figure out unhandled scenarios in our software My GSoC mentor, Sebastian Dröge coded the skeleton of the test with a basic unit test case for HTTP source plugin (aka reqwesthttpsrc). Here is the link to the merge request. The test was to check whether we receive the data correctly which is sent by the server. Here we make a hyper HTTP server which respond with "Hello World". Then we use our plugin to receive the data and we compare both. Also the interesting thing here is the Custom test harness which can be used to initialize a HTTP server with required behavior and our HTTP element with required properties set. We can use this to c…

Making the 'httpsrc' plugin asynchronous | GSoC 2019

Image
GStreamer plugins are the building units of any GStreamer application. The plugins can be linked and arranged in a pipeline. This pipeline defines the flow of the data. 'souphttpsrc', aka HTTP source is a plugin which reads data from a remote location specified by a URI and the supported protocols are 'http', 'https'. This plugin is written in C. 'rshttpsrc' is the Rust version of the above said plugin. 



Although the Rust version of the plugin is working, it is not feature complete. So my task here is to finish 'rshttpsrc' plugin completely. Let me break the task into smaller branches.
Switching to async IO (Currently it is making request synchronously). Support for cookie/HTTP connection sharing between multiple instances. Making 'rshttpsrc' feature equivalent to 'souphttpsrc' (the C version of the same plugin). There are properties missing in 'rshttpsrc' which are implemented in C version of the plugin. Here is the list o…

The Journey Begins | Google Summer of Code

Image
Google Summer of Code (GSoC) is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school.

It has always been a wish of mine to contribute to open source community. I was ecstatic would be an understatement when I got the opportunity to contribute Gnome foundation through GSoC 2019. We go through an organized and friendly environment during this period which makes GSoC a great way to enter the open source community. More importantly each student gets a mentor to guide him/her through out the GSoC period. And I am the luckiest to have gotten Sebastian Dröge as my mentor.

I'm working on GStreamer based project of Gnome Foundation. GStreamer is a pipeline-based multimedia framework that links together a wide variety of media processing systems to complete complex workflows. The framework is based on plugins that will provide the variou…

Agile Development With Scrum

Image
Scrum is an agile way to manage a project, usually software development. We had a lecture on Agile with scrum Seminar by Pronto Software Ltd. Agile software development with Scrum is often perceived as a methodology; but rather than viewing Scrum as methodology, they wanted us to think of it as a framework for managing a process.
The process is fixed but room for flexibility is provided. It's all depended in scrum masters hand. The main point is that the employees should feel like they are working on their own decision and feel that it's their own responsibility to finish a set of given task. Even the task they are setting for a week is chosen by them self and time margin is also set by them. The system is very inclined to the employees side. For example, If two person says two different time margin for a same work, they are allowed to come to a common decision. If they fail to do so, Scrum master chooses the highest time. 
  It's all about keeping the employee at highest…

Smart Parking Lot 2

Image
Apps are now a mainstream, trusted way to deliver content and services. But in a crowded market, how does a mobile app become useful, relevant, and valued so it delights and retains users? The answer is User experience or in nerdy terms UX. User friendly Mobile app is going to make the project successful. So our team had to go through a lot of process to make the app smooth and meet most of the user constrains suggested by 'Android Developers', which is the official documentation of Android by Google. We have used more buttons and less text fields, so a user can book a parking slot in few taps. It is highly recommended by Android Developers to have more buttons in the lower half of the Mobile phone since it is easily reachable by the thumbs. We got many UX ideas from the Uber app which is a billion dollar business. Since lot of UX engineers have spend lot of time in making the app user friendly we can assure that those UX ideas of Uber are worth a lot for our app. 
White spa…

Smart Parking Lot

Image
Imagine you are having a meeting tomorrow in Kollupitiya and you chose to take the car. The first problem that bothers is "Will I get a safe parking space?". This situation led us to make an Automated Parking System in which you can Book a parking space and the system will handle the rest.

It's very simple to use, all you need to do is tap on one of the Automated parking lot show in the mobile app. Then it will automatically book a space for your car. You can cancel or extent the booking period using the app but it will be charged accordingly.
 Once your car enters the parking lot, it will be automatically detected and you will be guided to the exact place. System will automatically calculate the charge and deduct from your account for the parked time.

We have planned to use the GPS and Location Service in Mobile to get the location of the car when it is outside the parking lot. Once it enters the parking lot thick concrete does allow signals to pass, so we had to find a…