Categories
.Net AWS C# CI Github

3 Things I learned During Hacktoberfest

Hacktoberfest is a month long initiative to promote collaboration using Github. DigitalOcean created this event a few years back. This year I decided to participate in this event. In this post I want to share the 3 things I learned during Hacktoberfest.

Learn something new

During our busy schedules at work, we’re focused on maintaining existing products. In many occasions, these products are using old technology. We have a very small web site running ASP.NET MVC 2. MVC 2 was released on March 2010 so this web site is using old technology that is 7 years old. We tried to upgrade this website to run a more recent version but we ran into migration issues and the effort was abandoned. Since this site is not a critical product in our company, we decided not to spent more time on it.

With the recent release of .NET Core 2, it’s very important that .NET developers stay on top of these changes. Last month I created a new project in github called  DotNetDeployments. This project was created to automate .NET deployments. No more copy and paste files between servers. In order for me to learn something new, I decided to base this project on .NET Core 2. Core 2 was released on August 2017 and there are major changes in relationship to previous versions. In addition to learning .NET Core 2, I also learned DynamoDB high level operations using the AWS SDK.

Solve your own problems

Before Hacktoberfest took place, I started brainstorming ideas for a new project. I wrote down some ideas but I was not happy with those projects. I wanted to solve bigger problems. I’ve worked in different industries and companies and there is always areas to improve. In my current position, we are using Jenkins for our continuous integration server and powershell scripts to deploy our applications. With this setup, we are able to deploy 95% of our projects. The other 5% are deployed by copy and paste. It is not fun. So I decided to create a new project to solve this problem. DotNetDeployments will handle our deployments using AWS CodeDeploy and powershell will be use to create IIS sites, and create Windows Services. The beauty of this project is that it can handle on-premises servers and also AWS EC2 instances. Since this is an open source project, I’m expecting the community to get involved and make this project even better.

People are willing to help

After creating DotNetDeployments, I created github issues to keep track of all things I wanted to accomplish. I added “hacktoberfest” and “help wanted” labels to my issues so I can communicate with the community that I needed help. It didn’t take long and I was receiving small pull requests. I was so excited that developers were willing to help a new project. I reviewed the code and was able to accept those pull requests. After the first pull requests, I decided to add AppVeyor to handle my automated builds. AppVeyor is really easy to use and their documentation is awesome. Now with CI in place, I created more issues to handle unit tests, and also to rearrange the folder structure. I received more pull requests and was happy to review and accept them. Some of these changes broke the build but I merged those changes since I had a different issue to update AppVeyor config file. These changes were necessary because our folder structure changed. I just want to thank all the contributors that are taking the time to make this project better. We’re not done yet but during Hacktoberfest we made a lot of progress.

In summary, Hacktoberfest was a very successful initiative by DigitalOcean and GitHub. During this month, I was able to learn new technologies and solve real problems that developers face every day. DotNetDeployments could not be possible without the help of the community. Thanks to all contributors.

 

 

Categories
.Net C# Github

Building a game engine with .NET Core

blackjack

Now that we have .NET Core available, it is time to get our hands dirty.  I had the opportunity to setup Visual Studio Code along with the .NET Core SDK on Windows 8 and Mac OS Sierra.

What a better way to learn Core, than building a game. For this fun project, I decided to build a version of Blackjack using C#, Visual Studio Code, xUnit, and of course .NET Core.

The project is hosted at GitHub and some of the main goals for this project are:

– cross-platform (must run on windows, mac, and linux)
– unit tests are required
– all tools and processes used must be open source

I created issues to start this project in the right path. The main classes for this game should be Card, Player, Deck, and Game.

Based on bicyclecards.com, the rules of the games are:
– each participant attempts to beat the dealer by getting a count as close to 21 as possible, without going over 21.
– it is up to each individual player if an ace is worth 1 or 11. Face cards are 10 and any other card is its pip value.
– if a player goes over 21, he/she loses

For this project, I’m going to use bicycle cards as a guide for the requirements since there are many rules for this game.

I hope that you join me in learning .NET Core and at the same time have fun playing 21.

 

 

Categories
Git Github open source

My fellow developers, ask not what your community can do for you, ask what you can do for your community

JFK

One of the most famous quotes from JFK is “My fellow Americans, ask not what your country can do for you, ask what you can do for your country.” This quote has inspired generations to be more involved in public service. It has inspired us to do more for our country. To be better citizens.

We can also apply the same quote to the software industry.

“My fellow developers, ask not what your community can do for you, ask what you can do for your community.”

Lately, I’ve been thinking of the impact the open source community has in our lives. There are thousands of open source software created by the community. The majority of these professionals do not get paid to work on these projects. They work on those projects because they are solving problems. They enjoy solving those problems. They are not waiting for others to solve those problems.

I want to inspire developers to start contributing back to the community. To help you do that, I have listed 3 easy things you can do to contribute to open source projects:

1. Documentation
Currently, the place to go to contribute to open source projects is github. Find a project that interest you. Once you find your project, read the documentation. I have seen many projects without a readme file. Go ahead and create one. If there is a readme file in place, see if you can spot any grammar errors. If you find any issues in the readme file, update the file with your corrections. If you need help getting started with github, read github’s bootcamp tutorial here.

2. Donate Money
Another way to give back to the community is to donate money. Many projects have a donate button in their front page. If you find an interesting project but they don’t have a donate button, get in touch with the project owners. Most likely they will accept donations.

3. Test
You can also test open source projects. You can play the role of QA tester. Developers don’t do a great job testing their software. For example, web sites are difficult to test because there are so many browsers to test in. You can test the web site with different browsers. If you find any issues while testing, see if you can figure out why it is failing. Open source projects need you for this kind of work.

I hope these words help you find the inspiration to start contributing back to the community. Be a better citizen.