Showing posts with label collaboration. Show all posts
Showing posts with label collaboration. Show all posts

Monday, June 15, 2020

hexV


hexV is a little tool that I've been working on for a while.
It's a tiny viewer that shows the content of any file in hexadecimal.
Something like this:



I first thought about making hexV while I was working on another project that involved parsing and rendering large images without using any official libraries like libpng. I needed something that I could use to learn and understand how images are structured and stored depending on the type (PNG, JPEG, BMP...), and also that'd help me debug the parsers I wrote for that project.

hexV did the trick. Instead of having to go through endless console output to chase bugs, I could simply open the processed image with hexV and compare it to the values read by the parsers. I'm pretty sure that using hexV saved me a ton of debugging time.

The first version of hexV had builds for both windows and linux, but I recently added some deep changes to the linux version so I removed the windows build until I can make some time to add those changes to it.

I have some interesting features in mind, like file type detection, that I'd like to add sometime soon. 
Oh, and this is an open-source project, so if you find hexV interesting and feel like collaborating, take a look at the issues and hack away!


Share:

Sunday, April 19, 2020

Telescope 1.0

It's live!

Telescope 1.0 is up and running, and it's thanks to an incredible group of people who worked really hard to make it happen.

For this final release, I wanted to add some nice features to Telescope, but because of the situation we're going through right now, I found sitting down and working on stuff more difficult than usual.

I helped with some minor issues and some production related stuff, but I couldn't finish the features I was working on, so they were not included in this big release.

This is not the end of the road. I know I'll eventually add these features I was working on to Telescope, and I know I'll be helping with many other things, things we haven't even thought of yet.

Anyway, I really liked this project, and I'm sure I'll keep working on it for a long time.

What about you? Would you like to contribute? Join us, and tell us about your experience with Open Source!
Share:

Tuesday, March 24, 2020

Telescope: Elasticsearch and Automatic Deployment (Part 2)

I mentioned in my previous post that I started working on adding Elasticsearch and automatic deployment to Telescope, and because of some minor problems, I couldn't include them in our 0.7 release.
But yes, I managed to fix all the problems for 0.8, and now they're part of Telescope!

For 0.8, I also added a new nested query for GraphQL. This new query returns information about a feed and all the posts related to it, all in one request. I think there will be some cases once we fully implement a search functionality that will benefit from this new query.

I also had the chance to briefly work with @Silvyre on adding graphql-passport to Telescope. It turned out to be a bit trickier than we expected, but @Silvyre was determined to get it ready for 0.8, and thanks to his big effort graphql-passport is now part of Telescope.

Elasticsearch has become a core part of the project, and it was very important to add documentation about installation and deployment for this new piece. The main idea was to avoid blocking developers that are not familiar with Elasticsearch, so I added new documentation on the different ways to install and use Elasticsearch locally, and how to test it.

@c3ho and I spent some time working on our nginx settings so we could get nginx to serve Telescope's static content and also enable caching for our endpoints (for this issue). We managed to get those 2 pieces to work, but since I still wanted to review a couple of things I thought it was better to leave this for 0.9.


Share:

Saturday, February 1, 2020

Telescope: Nginx and Let's encrypt

So, Telescope is getting closer to become the successor for PlanetCDOT. If you still don't know what Telescope is (shame on you), check this out.

Nginx & Let's Encrypt
I spent this week researching nginx to add a reverse proxy to our staging box so we could add some cool features. Also, I worked with another contributor (@miggs125) to add Let's Encrypt so we can use SSL.

After dealing with some configuration issues, we managed to get it to work, and once we merge the necessary changes, we'll have Telescope using SSL. I think I've probably said it too many times, but once again thanks to Telescope, I had the change to learn new things: I got to learn how to setup a reverse proxy and how to add SSL to a site.

Feed endpoints
As I mentioned in previous posts, Telescope has a REST API and GraphQL. The endpoints to serve posts were implemented some time ago, but we were still lacking a way to serve feeds to our frontend. Since I collaborated adding the endpoints for posts, I thought it'd be a good idea to work on the same issue but for feeds. I added endpoints to request feeds and one feed, along with some tests for those endpoints.

GraphQL filters
I also did some work for GraphQL. Another contributor (@c3ho) is working on adding filters to our Apollo server, so our queries will be more flexible and efficient. It's a very tricky task, so I offered to help since I worked on the initial addition of Apollo to Telescope. We've made some progress and, to be honest, if he manages to include all the functionalities we want (taking advantage of some Apollo's features), the improvement will be significant. Seriously, really interesting stuff.


Share:

Friday, January 24, 2020

Back to Telescope

It's live!

Yes, Telescope is live, only its development version though, but it is live, and you can check it out here. If you have no clue about what Telescope is, go check my previous posts to learn about it. Go, I'll wait.

Ready? So here we are again, trying to add more features to Telescope, learning new things, and getting excited again!

It's becoming a very intense project, so I'll go right away to the things I've been involved with:

- GraphQL

 GraphQL is a query and manipulation language for APIs and a runtime for fulfilling queries with existing data. Adding it to Telescope wasn't easy, but it's done, and now we can take advantage of its features.


- Hashing and encoding IDs

This one was a bit trickier. It was my first time doing this so I had to get a bit familiar with crypto, a wrapper for OpenSSL cryptographic functions, but once I understood what had to be done (and with some extra help from others involved in the project), I managed to integrate it with what we had.


- Minikube and Kubernetes

Minikube and Kubernetes additions to Telescope are still WIP, but we've made some progress with them. I'm working with another contributor to run Telescope using a Kubernetes cluster, but due to our lack of experience, we're trying first with minikube. I think we're getting there, we did some testing and we hit some walls that you're supposed to hit when you're learning this stuff. If everything goes well, and our guesses are correct, I think we'll be able to get it run in a week or two.


- Deployment

This is another very interesting piece. Right now Telescope is running on port 80, but it'd be nice (and professional) to use SSL, right? Well, that's what I'm going to be doing soon. I just started researching Nginx to see how it works and how it can be used with docker-compose (which is what we using for our staging server), and once Ngingx is added to our docker-compose file, we'll try to convince Let's Encrypt that we're trustworthy.

That's pretty much what's happening right now, Telescope keeps growing at a pace that's almost hard to keep up with, but what we're getting out of it in terms of experience and knowledge is simply awesome.

Oh, and we're adding the fanciest toy in the store right now, Gatsbyjs.

Stay tuned!
Share:

Saturday, December 7, 2019

Telescope: Up and Running


Yes, Telescope is ready to start taking its first steps!

After a couple of weeks of hard work, Telescope has finally become a functional piece of software. All the elements, or I should say all the effort made by all the contributors, was finally put together and now it is possible to run telescope and see it do what it was created for.

This is really awesome, seriously. Running Telescope and being able to read posts on it is amazing. Here, take a look:





This has been so far a really awesome experience. The learning process, the collaboration, the enthusiasm from all the people involved... I'm very happy that this project exists, and I'm even happier that I'll be able to keep working on it.

As I said, the last couple of weeks were crucial to be able to get to where Telescope is right now. The components responsible for fetching feeds, process and store them in our database were connected to the front end through our web server, using 2 endpoints that I added. I had a lot of fun adding those 2 endpoints and tests for them. I had to learn about how to implement paging and adding link headers to the server's response, and a little bit of redis, which were both completely new to me, and added valuable knowledge to be used in the future. I also had the chance to get involved with the docker side of the project. 2 awesome contributors worked hard to add redis and SAML2 support to our docker workflow, and I was fortunate enough to have the chance to add some suggestions and comments here and there.

I think I have a better understanding of how redis and SAML2 can be incorporated to a project, and although I've worked with docker before, I feel more confident about using it now. That's also another part of this project that makes it so valuable. I started contributing to Telescope at the very beginning, and just by reviewing other people's work, I had the chance to learn so many new things. As an example, before telescope, my relationship with CI was almost non existent, but just by reading other people's code, their comments, and following all the steps they had to go through to add CI to Telescope, I'm ready to start adding my own contributions in this area. That right there is invaluable experience for my future in this industry.

So there it is, Telescope is really getting there. Yes, bugs will come up, adjustments will have to be made, but it is ready to see it work and do what it's meant to do. Isn't it exciting?

Good hacking and have fun!
Share:

Monday, November 18, 2019

Telescope: growing faster than expected

Telescope has been alive for 2 weeks, and its development couldn't get more exciting!

I mentioned in a previous post how the project seemed to be a bit chaotic at the beginning, mostly because of the number of people involved in it and the different sets of skills and experience that each contributor has.

Well, that was last week. This week, we have a very enthusiastic group of developers exchanging ideas, offering help, being passionate about their contributions, and all that with a surprising level of organization completely unexpected (at least to me) for a group this big, and we're taking about between 50 and 60 people. As I said before, it's been fascinating to watch it grow, and I couldn't be happier to be part of it.

But there's more. At a personal level, I've been able to contribute to many parts of the project, and in may different ways! Back-end, containers, documentation, testing, CI... all that in just 2 weeks! In some cases, I added features that will enhance the capabilities of the project, in others I just made small changes or suggested someone a different approach for what they were working on. It's been a very enriching experience because not only I had to review and refresh previous knowledge to be able to offer some help, but also I had to do a significant amount of self-teaching so I could take on certain issues and complete some tasks.

So far:

Also, I reviewed other people's contributions, I collaborated with other developers to add docker to the project and write documentation about how to use it, I gave some advice about how to add tests using mock responses... and this is only the beginning! In the next 2 weeks, I'll be able to do some more work, and the best part is that even if I'm not directly involved in some part of the project, I'll be able to review or at least take a look at what others did to solve some problem and learn a lot from it. What else could I ask for?

The only downside of all this is that I got a bit too distracted and I didn't contribute to another projects, as I was hoping to. My plan was to work on a PenguinV's issue, but since I didn't, I'll try to get it done this week, and hopefully take on another PenguinV's issue next week.

As usual, good hacking and have fun!

Share:

Saturday, November 9, 2019

Telescope: A tool for tracking blogs

Have you ever heard of PlanetCDOT?

Well, PlanetCDOT "is a collection of current blog posts by students, professors, and researchers at the Seneca Centre for Development of Open Technologies and related organizations around the world", and it has been around for a long time. The technology behind PlanetCDOT is Planet, "a feed aggregator application designed to collect posts from the weblogs of members of an internet community and display them on a single page", and according to the planet index page, it hasn't been updated in 13 years.

The good thing about software that hasn't been updated in more than a decade is that there's plenty if not all of the room for improvement, and now there's a project going on to create a new aggregator for PlanetCDOT.

This project is Telescope, and It's hard to describe what it is right now since what we have is a varied group of developers, with different set of skills, trying to put together a fairly complex piece of software. It started as a disjointed mess, but it's been fascinating to watch how the people involved in it started to file issues, submitting pull requests, reviewing other people's work, discussing approaches, all in a very organic and natural way,

I'm one of the lucky ones working on this project, and so far it's one of the most interesting collaborative experiences I've ever had. I must confess that I spend hours just watching the project grow, keeping track of how others review code, suggest solutions, help each other... and with watching I mean literally staring at the issue and pull request trackers to see the new additions. As I said, it's truly fascinating.

At the early stages of the project I thought I wanted to take care of .env files, using dotenv, but someone was faster than me and already solved that problem. My current intention (hopefully I'll be able to take care of this before someone else does) is to create a module that will fetch information related to a specific github repository/pull request/issue using GitHub's API. I have some experience with it, and since someone suggested that it could be a good addition to the project I thought it was a good fit for me.

I'm aware my description of Telescope is very vague, but I'd like to wait until a few more pieces get merged to the project, adding more functionality, and then I'll give more information about the features we'd like Telescope to have, and how the contributors are coming up with creative and interesting solutions.

Being part of Telescope is great, but I'd also like to work with other projects, and since my collaboration to PenguinV was welcomed, I think I'm going to try to take on another issue of theirs. This one is going to be tough!

As usual, good hacking and have fun!




Share:

Sunday, October 27, 2019

Hacktoberfest: Documentation

We're in the last week of Hacktoberfest!



So far, participating in Hacktoberfest has been great. I've been able to contribute to very different projects and work towards the goals I had set for myself.

My work on Dashboard allowed me to improve my web skills (not as much as I'd have liked, but still) and collaborate in a project that has been around for some time. It's not a big project, but it's a very interesting one because of all the different components that it has and how useful it is for the people involved in it.

PenguinV was my chance to collaborate in a project that I really like, and also a great opportunity to face a real, scary challenge. Having to contribute using OpenCL, something I wasn't familiar with at all before, was one of those things than can easily make you think that you shouldn't be in this field.

For my last contribution, I wanted to work on PenguinV again, but since we're at the end of the month and the PenguinV community hasn't responded (yet) when I told them that I wanted to work on some issues, I decided to look around to see if I could find some other interesting projects.

And I found ImCompressor. ImCompressor is an image processor that works with lossy and lossless compression. What I found interesting about this project is the fact that it's a very young one. A small group of developers started it a month ago. All my other contributions during Hacktoberfest were related to bigger projects that have been around for a while, so I thought it could be interesting to contribute to a young project and maybe become a core part of it. 

When I found the project, they were getting ready to release version 0.8, so since there wasn't much that I could offer (remember, it's a very young project), I mentioned to the team that my first language is Spanish and that I could add a Spanish translation. They welcomed the idea, and I thought it was a good way to introduce myself, getting familiar with the project, and keep an eye on new issues popping up so I could work on them and become a main contributor.

Oh, before I forget, when I started the translation I realized the ImCompressor team uses Poedit, a cross-platform, open source, translation editor. Another interesting project, I also want to keep an eye on it and maybe see if I can contribute to it in the future.

I like ImCompressor. I've had issues with lossless JPEGS in the past, and I think this project could help many people. I hope it won't turn out to be one of those many projects that dies a few months after being born.

Well, and that's all for this month. As I said in another post, I really want Hacktoberfest to become a yearly tradition, but not the only excuse to keep collaborating with open source projects.

As usual, good hacking and have fun!

Share:

Monday, October 21, 2019

Hacktoberfest: WIP

Hacktoberfest, week 3.

Only a few days left, and I just submitted my third PR.

I was considering giving home-assistant another go, as I mentioned in my previous post, but there are so many issues out there that I thought that maybe it wasn't worth it.

For my first issue, I enhanced the capabilities of CDOT's Dashboard, and I decided to take on the next related issue for that part of the project: update the front-end.

I updated the front-end with a new panel that shows pull requests that are pending for review. Hopefully this new panel will help the team keep track of pull requests and it'll speed up the workflow.

One of my goals for this Hacktoberfest was to improve my web development skills, and this issue was going to be my opportunity to do that. Unfortunately, it didn't turn out the way I was expecting. I spent very little time writing React and most of the time doing CSS. Yes, it gave me the the chance to learn some new CSS tricks, but it also helped me remember why I've been putting off improving my web development skills and why I've always thought that CSS is a creation of the devil.

Dashboard with the new panel

My pull request has been accepted and merged, so I'm expecting to see the new panel up and running any time soon (to be honest, that's very exciting!).

So far, Hacktoberfest has been a really enjoyable and amazing learning experience, and I'm almost sad that it's going to be over in a week. I really want it to become a yearly tradition, if time permits.

As usual, good hacking and have fun!


Share:

Saturday, October 12, 2019

Hacktoberfest: enhancement

We're in week 2 of Hacktoberfest, and things are going well so far.

After submitting my pull request for Dashboard, I was planning to start working on home-assistant, as I mentioned in my previous post, but it seems that the only way to get their development environment to work is using docker. I've used docker before, in fact, I've had epic battles with docker over iptables, so I decided that I was going to try something else.

That something else is penguinV, "a simple and fast C++ image processing library focus on heterogeneous systems. The library is designed with an idea to have simple common API for CPUs and GPUs simplifying developer's work on context switching between devices".

I was very excited about working on this project because it was the perfect opportunity for me the get familiar enough with its code so I can start contributing to it in a regular basis soon. I chose this issue because it seemed both challenging and doable. I wanted to work on something "real", not related to documentation or fixing syntax, but at the same time, something not too overwhelming so I wouldn't be able to finish it.

The issue was about implementing something that would compare 2 images. Sounds easy, right? Well, yes and no. I've done image processing before, things like loading images from disk without using libraries, implementing  alpha blending, rotation and inversion... but for this issue I had to work with OpenCL, and that was the challenging part. OpenCL uses parallel computing and run-time compilation, and yes, for someone who's not a very experienced programmer and has never used OpenCL before, it is as scary as it sounds.

I was very lucky that the penguinV community is very active, and as soon as a I had questions they put me in the right direction to be able to complete the task. I submitted my pull request and I made some minor changes requested by the reviewer.

This was an amazing experience. I would really like to keep contributing to penguinV and I'll probably use it in my current projects.

So, home-assistant next week? We'll see.

Share:

Sunday, September 22, 2019

Open Source collaboration at its best

Remember mininote? It’s that small app that we made last week. It’s also part of an assignment for an Open Source course that I’m taking.
So, what about miniNote? Well, since we’re here to talk about Open Source, miniNote is the perfect excuse to show how an Open Source project grows thanks to a community of people who want to help improve software and make the world a better place.

As part of the Open Source course, we all (my classmates and I) had to create a miniNote, and the best part is that now we also got to check each other’s projects and fix bugs or add features to them.

I worked on 3 different projects:

Grommers00/my-note

my-note had a very minor issue that I wanted to address. The script tag was located at the beginning of the body tag in the html document, and I thought it was a good idea to move it to the end of the body.

It’s a minor bug, but depending on the size of the html document, a script tag in the wrong place can give the perception of a slow, bloated website.


jerryshueh/simple-note

For simple-note, I thought adding a save-on-disk functionality would be a good addition. Simple-note already had a saving functionality (not in a file) that uses ‘ctrl+x’ to save, so I added ‘ctrl+s’ as the shortcut to save on disk. It was an interesting addition since it was my first time using ‘FileSaver.js’.


Cindyledev/my-note

For this assignment, I was supposed to collaborate with 2 projects, but after finishing my 2 contributions, I started looking around because I was curious about other people’s contributions and how our apps were getting better thanks to mere collaboration. Checking my-note’s issues, I saw that one of the issues was filed by the creator of the project, not by a classmate trying to fix a bug or add a feature. In this case, it was a “real“ issue that was preventing the creator of the project from finishing the app and continue with the assignment. A fellow programmer stuck with a piece of code in an Open Source project. Say no more.

The issue was that the saving functionality wasn’t working, and the app wouldn’t show saved notes after refreshing. I did some testing and switching ‘querySelector()’ to ‘getElementById()’ seemed to fix the problem.

One mistake I made in this one is that I added the meta charset to the html document as part of this issue instead of opening a new one. I don’t think it’s a big deal (in this case), but I should be careful in the future because a contribution done through the wrong issue is almost untraceable, and if it creates a bug, it will be a huge headache for whoever has to deal with it.


I think we could call this part of the assignment pure Open Source collaboration at its best. A group of people helping each other improve their software by fixing bugs and adding features. Isn’t it amazing and exciting? No? Well, I think it is.
Share: