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:

Saturday, October 5, 2019

Hacktoberfest: good first issue

It's Hacktoberfest time!

As I mentioned in my previous post, I'm very excited about Hacktoberfest, not only because I'll be able to contribute to some cool open source project, but also because I'll have the chance to improve  and test my skills, and maybe try to take on some scary project that will force me to learn and get familiar with new technologies.

My intention was to work on some issues that I found interesting and relevant for the type of skills that I'd like to develop, and also getting familiar with some interesting projects.

Unfortunately, things rarely go the way you want in software development, so I had to come up with a plan B for my very first Hacktoberfest issue.

At first, I wanted to work on an issue in the home-assistant project, but I had some problems setting up the development environment, and since they haven't replied yet, I thought I could work on something else while I wait for their advice.

Since I was running out of time, and all the other issues that I wanted to work on require more than a couple of days of coding, I turned to a project that I've worked on before, knowing that I could find some interesting issues that I could fix within the available time that I had.

This project is Dashboard, maintained by CDOT's RAs.

Dashboard project (running in debug mode with fake data)

Dashboard displays information about the projects that are currently in development at CDOT, along with some infrastructure information and scheduled events. It populates some of the panels with data fetched from Github using Github's API.
For the PR Reminder panel (WIP) and the Help Wanted panel (coming soon), it was necessary to filter some of the data fetched from Github's API so the only issues and pull requests used to populate those 2 panels would be the ones with the appropriate labels. The issue that I worked on specifically requested filtering out issues that didn't have the Help Wanted label and also making sure that all the used issues included a priority label so they could be appropriately sorted.

It was a quick fix, but a very important one since the Help Wanted panel will be up soon (that's another issue I'd like to work on for Hacktoberfest), and all the RAs at CDOT will be able to have updated and sorted information about issues that might need help (hence the Help Wanted label) and/or pull requests that need review.

Hopefully, I'll be able to work on home-assistant's issue next week, but if I can't, I might take on a penguinV's issue that will help me get familiar with their code base and maybe I'll be able to contribute more in the future.

So, good hacking and have fun!

Share:

Friday, September 27, 2019

Hacktoberfest!


Hacktoberfest is around the corner, and as a software developer interested in open source, it’s a very exciting time!

It’s my first time participating in Hacktoberfest, I have no idea about how it’s going to be like or the type of work that I’ll be doing. Whatever happens, I have 2 clear goals that I’ll try to accomplish: improving my web development skills and facing a scary challenge.

I’ve been a developer for some time now, but because of the circumstances of the work I had to do, I didn’t have a chance to develop my web skills as much as I would’ve like to. Since the web is the future, I think having a solid knowledge of web technologies is crucial to be part of the software development community, and collaborating in a project heavily web-based will help me acquire the necessary knowledge to start feeling comfortable with web technologies. Also, I’ve been lucky (or “lucky”) so far because all the projects that I’ve been involved with were accessible in one way or another. With accessible, I mean that I was able to adapt to them, learning and developing the necessary skills to be able to contribute to them. Hacktoberfest gives me the chance to try to find something potentially scary that will require the best of my abilities to succeed. I don’t know if I’ll be able to overcome a real scary challenge, but I think facing one is something that every developer should go through every now and then.

These are the issues that I’d like to address:

There’s a project started and maintained by CDOT RA’s called Dahsboard that has been in development for some time, and it has a fair amount of issues related to web technologies that would definitely help me improve my react skills (I’ve never done anything in react before).
From that project, I want to take on these 2 issues: Pull Request reminder and Coding Style Standards.

Another interesting project that I’d like to work on is PenguinV. As their creators describe it, "PenguinV is a simple and fast C++ image processing library with focus on heterogeneous systems." The issue I’d like to work on is not particularly exciting, but I think it’s going to help me get familiar with the code and eventually start trying to take on more relevant issues and really contribute to the project.

Wish me luck!
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:

Wednesday, September 11, 2019

miniNote, your new web based note taking app!

What is miniNote?
The web is full of advanced, full-featured note taking applications. But what if you just wanted to open a web browser, load a very light, very fast web page, and start typing?

miniNote is an extremely lightweight, web based note taking app that will allow you to start taking notes without having to wait until endless, heavy features get loaded. It's fast, easy to use, and compatible with most if not all browsers out there.

For a quick test, click here and start taking notes right away! Don't forget to press ctrl+s to save your notes!

Open source libraries used
This was an interesting project because it gave me the chance to use open source libraries that I had never used before.

One of them was filer, a "drop-in replacement for node's fs module, a POSIX-like file system for browsers", as its creators describe it. I used filer to store the notes and also to get the content back on the web site.

Another one was HotKeys.js, an input capture library that allowed me to add a shortcut to save the user's notes.

Contribute!
You love miniNote, but you miss one or two features from your previous note taking application. No problem, you're welcome to fork our repo and start contributing!

Don't forget to check miniNote's license.
Share: