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
.Net code review General

My top 3 ReSharper keyboard shortcuts

resharperKeyboard

Recently I had a chance to upgrade ReSharper, a visual studio plugin to help .NET developers be more productive. If you are not using ReSharper, you are missing out on lots of features. In this post, I want to share the top 3 ReSharper keyboard shortcuts that help me write better code.

1. Go To Implementation [Control Shift Alt B]
This is one of my favorites ReSharper keyboard shortcuts. In my current project, we use interfaces extensively. Using interfaces help us write unit tests around our classes. When we are debugging, the go to implementation keyboard shortcut is a must have tool. Many times we read stack traces and we know the method name and it is there that we start our debugging process. To use Go To Implementation, right-click on a method and select the Go To Implementation from the pop-up menu. If you are like me and prefer to use keyboard shortcuts, press control shift alt b at the same time. I try to memorize these shortcuts so I can keep my hands on the keyboard.


2. Go To Declaration [Control B]
If you want to go where a method has been declared, right-click on the method or class that you want to inspect and select Go To Declaration. The keyboard shortcut for Go To Declaration is Control + B.


3. Find Usages Alt F7
This key comes very handy when you are about to make changes and want to see all possible changes. If I have to refactor a piece of code and see a lot of usages, most of the time I will not modify that code but instead create a new method or class. To use the Find Usage tool, right-click on your code and select Find Usages or Alt + F7.


I hope you find these shortcuts helpful while writing .Net applications. In a future post, I will write how to use ReSharper to perform code reviews.
Categories
.Net CI

Available Options for Continuous Integration for .Net Applications

Continuous Integration

Continuous integration is a must practice in any software development team. It allows you to receive feedback instantly about the state of your project. In this post I’m going to share the available options to implement continuous integration for your .Net projects.

Jenkins

Jenkins is an open source tool written in Java. It has a nice UI to help you setup your project. The Jenkins community has also created many plugins to integrate with your favorite tools. It is easy to setup and configure. If you are not using a continuous integration server, I highly recommend Jenkins.

CruiseControl.NET

CruiseControl.NET is also an open source tool initially created by ThoughtWorks. Just like Jenkins, it has plugins available to integrate with bug management tools, source control, reporting, and others. The initial setup is easy but creating projects is more complicated since there is no UI available. You have to edit an XML configuration file.

AppVeyor

AppVeyor is the new kid on the block. It’s a cloud based solution that relies on Azure for its infrastructure. In addition to continuous integration, it also offers continuous deployment. Scott Hanselman wrote a blog post about AppVeyor.

It is free for open source projects. For private projects, price start at $19 per month for 1 project and 1 concurrent job.

Bamboo

If you have used Jira, HipChat, Confluence before, you will feel at home with Bamboo. It is more that a continuous integration since it allows you to do continuous deployment. It also integrates with Jira, and Bitbucket for a smooth workflow.

Visual Studio Build

If you are invested in Team Foundation Server for your source code management, you can take advantage of the Build feature. The same Build feature is also available online with their cloud product called Visual Studio Online.

Team City

Team City is a very popular continuous integration for .net projects. You can find more about its features here. It is very pricey but well worth the price. TeamCity will not disappoint your team.

Conclusion

I have listed about these CI tools briefly but encourage you to play with them and see what works best for you. Let me know if you use a tool not listed here.

Categories
.Net ASP.NET open source

What is the future of Microsoft’s Codeplex?

codeplex

Codeplex is Microsoft’s hosting site where you can create and collaborate on open source software. It is very similar to Github. You can create new projects, host your code, collaborate with other developers, download source code, report bugs, etc.

Last November, Microsoft announced that .NET 2015, ASP.NET 5, and other components will be developed and released as open source. Microsoft has setup the following projects in Github:

When I read Scott Hanselman’s blog posts related to the above announcement, I asked myself why those projects were not hosted at Codeplex. In my opinion, Codeplex is very popular within the Microsoft ecosystem. However, Github is the place where you host your open source project. Github is not tied to any operating sytem. It is very popular in the open source community.

I also read the blog posts in the Codeplex site and the last post was dated 2 years ago. Is Microsoft abandoning Codeplex? Are they concentrating their resources on other projects like Azure.

Let me know if you agree with me.

Thanks.

 

 

Categories
.Net ASP.NET C# open source Xamarin

All you need is C# to conquer the world

csharp c#

C# is an object-oriented programming language created by Microsoft. Wikipedia describes the language as “simple, modern, general-purpose, object-oriented programming language.” With the language, you can create many types of applications, web sites, desktop applications, mobile applications, web services, and many more.

If you know C#, then you can conquer the world. Yes, you read it correctly. You can conquer the world of software development with your knowledge of this programming language. You are only restricted by your imagination.

Here are the 3 reasons why I think C# is the number one programing language to conquer the world: mobile development, web applications, and open source initiatives.

Mobile Development

No one can deny that mobile applications are dominating our time and resources. Recent studies have found that the average user spends more time browsing thru mobile devices compared with desktop browsers. With these demand of mobile applications, businesses are pressured to keep up with this trend. Now they need to provide apps for the two major mobile ecosystems, Apple  and Google.

There are many choices to develop mobile applications, native, HTML, and C# with Xamarin. Nat Friedman and Miguel de Icaza created Xamarin to solve the problem of dealing with different code bases. If you want to write native applications for Android, you will have to write it in Java. If you want to write native applications for iOS, you will have to write it in objective-c. With Xamarin, you are able to share code across iOS, Android and Windows platform.

With your knowledge of C#, you write code once and Xamarin compiles your code for the intended platform.

Web Applications

There are many web sites developed to run under the .Net Framework. These sites still need to be managed and enhanced. Businesses have invested millions of dollars in their ASP.net sites and there is a need to keep these sites working correctly. If you know C# with experience in the ASP.NET web application framework, I assured you that there will be enough jobs for the years to come.

So who is using this framework? Some of the companies using ASP.NET are: US Airways, Bing, Msnbc, Kelley Blue Book, 3M and many others.

Open Source Initiatives

In November 2014, Microsoft announced in New York that many components that are part of the .NET framework are released in github as open source. See Scott Hanselman’s blog for a complete listing of projects and initiatives taken by Microsoft to make ASP.NET 5 cross platform. Along with these changes, Visual Studio Community is now available for students and open source developers. There is also a new .NET Core CLR for Linux, Mac, and Linux. If you want to see the changes, go to the github dotnet page. I believe these changes by Microsoft allows for more innovation. And with innovation, we will see new products and also improvement to the existing .NET framework.

Summary

I believe C# is an excellent programming language to conquere the world of software development. There are sites developed in the ASP.NET web framework that still need maintenance and enhancement. With the recent rise of mobile development, your C# skills will allow you to write cross-platform apps with Xamarin. The open source movement by Microsoft has taken a major change for C# developers. It will allow you to write cross platform on any OS.

Categories
.Net ASP.NET C#

Book giveaway – Professional ASP.NET 2.0 Security, Membership, and Role Management

Pro ASP.NET 2.0 Security

I’m giving away a book written by Stefan Schackow titled Professional ASP.NET 2.0 Security, Membership, and Role Management.  I no longer used this book and want to help other software developers using ASP.NET 2.0. To have a chance to win this book, write a comment below stating how you are helping others. Let me know how you are helping the next generation of software developers / engineers. You probably speak at conferences or teach programming in your community.

This offer is only available to people that live in the United States. I will choose a winner on Christmas day.

Categories
.Net ASP.NET Beginners

How I learned .Net

I graduated from Southern Methodist University in 2001 with a bachelors degree in Management Information Systems. During my studies, I took classes in HTML, Javascript, Visual Basic 6 and Java. I interviewed with different companies but was unable to secure a full-time job in IT. So I decided to help my parents with their small furniture store in Dallas, TX.

While working at the furniture store, I learned so much about running a business. I learned about marketing, sales, accounting, managing people, and of course about IT. However, my desire was to work as a software developer. So I decided to learn .Net framework and specifically asp.net.

At the beginning I read many articles online about this new framework created by microsoft. .Net framework was the buzz word and I knew I had to learn it to secure a job as a software developer.

It was time to take action and start writing code. The online articles helped me a lot to understand the basics but I needed a mentor, a guide to write my first .net application. To accomplish that task, I bought this book:

Beginning ASP.NET 1.1 with Visual C# .NET 2003 by Wrox.

With the help of this book, I was able to setup my development environment and create my first asp.net site for the furniture store.

I highly recommend the books by Wrox specially the beginning series because they walk you step by step in learning a new programming language or framework.

I hope this article inspires other developers to start learning and creating projects.