Categories
General

How Google got me started in my software development career

google

I received my high school diploma back in 1997. I attended MacArthur High School in Irving, Texas. During that year, many teachers would ask students what they wanted to do after graduating. Most of the students mentioned that they wanted to attend college and then find a job.

For me, it was different. I had no idea what I wanted to do after completing high school. During the summer of 1997, I visited community colleges close to home. I visited North Lake and Mountain View. Since Mountain View had a soccer team, I decided to go with them even though North Lake was 5 minutes from my house.

During the first year at Mountain View, I took an introduction course in computer science. As part of that course, we had to research a topic and write a term paper. After receiving my assignment, I wasted no time and went to the library to start my research. After using a computer and a web browser, I was hooked.

Google provided so much information to my research. Not only I was only to complete my paper, I was also starting in my software development career with Google.

At that moment, I knew what I wanted to do. I wanted to study the web. I knew that the web was going to change so many things. It was going to change how we do business. It changed how we worked and innovate in today’s world. I’m glad I picked the right profession. I can say that thanks to Google, I was able to study HTML, CSS, and Javascript. Thanks Google.

Categories
ASP.NET C# code General Git Tips

Show me your progress with your commits

Git Commit

I’m currently working in a new application. It’s an ASP.NET MVC site written with C#. We are using the following technologies: Windows Communication Foundation, Knockout, Bootstrap, PostgreSQL, and Git.

I’m working on a new feature that will require me to make changes to the UI, javascript files, add new database tables, add service methods, add unit and integration tests. In other words, I have to modify all layers in our application.

To accomplish this task, I decided to try something different. I want to show my progress with my git commits. I want to complete small tasks and then commit my changes. For this specific task, I started writing a falling integration test. This failing test forced me to create the new database tables needed. After creating the tables, I ran the tests again and this time everything was back to green. At this point, I’m ready to commit these changes. This commit is the beginning of my work and it gets me closest to the final goal. I go ahead and commit this change.

commitTableCreation

After adding the database tables, sql scripts to generate them, and some unit tests, I’m ready to start adding service methods, data contracts, etc. For this task, I follow the same technique as above. My unit tests pass and I have not broken the build so it is time for another commit. With this second commit, I’m feeling productive. I have accomplished something. I can show my progress to my boss or team members with these small commits.

On the other hand, working for a long time without committing your changes, makes me nervous. What would happen if your hard drive fails? It happens all the time. I think we all have experienced losing our work. Many times it was something other than a hardware failure. It was a human error. For example, we deleted some files that were not in source control by mistake.

That’s why I like to commit often. As long as my project builds and my unit tests pass, I’m going to commit my small changes. I know that these commits don’t fulfill a complete feature, but they take me a step closer to my finish line.

After a few commits, I have accomplished enough back-end code that I can concentrate on the UI. Here is the initial version of the UI:

ContractSurvey

It is not perfect. I know that changes are inevitable. I would say that right now I have completed 80% of the task needed to bring this work to completion. I have 20% more to go and I can see the finish line. Seeing the finish line motivates me to do my best and finish strong.

I urge developers to commit small changes and commit often. Remember that these small changes will help you accomplish your goals sooner rather than later.

Categories
General

Joining MD Buyline

mdbuyline_logo-300x150

It’s been 5 weeks since I joined MD Buyline as a Senior .Net Developer. I think it is a good time to write about my new job. Here are the 3 things I like about working at MD Buyline:

1. Commute

Our offices are located at 75 and Mockingbird. From my house to the office, it takes me 30 minutes. But since I live very close to the Westmoreland station, I have decided to take the train. I take the red line train and it takes me 40 minutes to reach the office. During the ride, I read books and sometimes I write for my blog. When I’m not reading or writing, I just sit back and relax.

I feel that my stress level has going down. When I was working at Verizon, I was driving an average of 90 minutes per day. Now that I take the train, I feel more relaxed. I’m also saving money on gas. In addition, my car mileage has not increase much. I really like that.

rowlett_ribbon_breaking

2. Small Team

We are a small team of 6 developers. On average, we have 2 or 3 developers per project. This setup allows us to solve problems quickly. When we have technology problems or issues with the code, we can email our group and someone will have a recommendation to solve it. I like the small teams because the communication does not get lost. When I was working in bigger team, the resolution to a problem had to go thru different layers of management.

3. Technology

Before joining MD Buyline, I had the opportunity to work in an Asp.Net MVC 3 project. The experience gained in that project has allowed me to be comfortable working here. Most of our applications are using MVC. We are also heavily involved with web services and unit testing. I also had the opportunity to work with MongoDb, a nosql database. In addition to MongoDb, we also use Sql Server, and PostgreSql. In terms of continuous integration and delivery, we are using CruiseControl.net to do our automated builds. There is room for improvement in our continuous delivery tools. I had experience in that area and hopefully we can fully automate our deployments.

It’s only been 5 weeks in my new job and I really like the people and culture of the company.

Categories
General Git Visual Studio

Visual Studio 2013 Git tip

visualStudioNoSupportSsh

I started a new project using Visual Studio 2013 and git. Our repository is hosted at Atlassian’s bitbucket. They also have a nice git client for windows that supports ssh and https. I downloaded that tool and was able to setup my repository using ssh.

Since Visual Studio 2013 has built in integration with Git, I was under the impression that ssh was also supported. I was wrong. Microsoft is using the open source library called libgit2 and that library does not have the ssh features to support it.

If you try to pull or push from a git ssh repo in Visual Studio, you will see the following error message:

An error occurred. Detailed message: An error was raised by libgit2. Category = Net (Error).
This transport isn’t implemented. Sorry

After searching online, I found out that this issue is not caused by Microsoft’s Visual Studio. It is the responsibility of libgit2. To work around that issue, you can update the url by updating the config file. To do that, find your .git folder (it might be hidden) and inside that folder, open the config file using notepad. Find the url and you will see that it starts with “git…”. Now find the https url and update it. Now close the config file and you should be able to do all the git operations inside Visual Studio.

I hope you find this tip useful.

Categories
General

Resources to help you become a better software engineer

Software engineers need to keep up with the latest changes in technology. I want to share 4 resources that helped me become a better software engineer.

1. Scott Hanselman

Scott is currently working for Microsoft and connects with the community thru his blog  and podcast called hanselminutes. Just by reading his blog posts, I’m able to stay current on the latest news in the .Net Framework and ASP.NET.

2. John Sonmez

John is a software developer, published author, professional speaker, entrepreneur, podcaster, blogger, YouTuber, consultant, and life coach for software developers. He has created more than 50 Pluralsight courses on topics like mobile development, unit test, Java, .NET, and game development. You can find hist blog at http://simpleprogrammer.com.

3. Dotnetrocks

Dotnetrocks is a podcast hosted by Carl Franklin and Richard Campbell. At the beginning, the shows were focused on the .Net Framework and ASP.NET. But later, it has created shows on Javascript, AngularJS, security, architecture, Android, iOS, game development  and many others. With more than 1100 shows, it is very hard for me to keep up with them.

4. Scott Allen

Scott has produced 34 Pluralsight courses on .Net, Javascript, AngularJS, C#. He writes regularly on his blog at odeToCode.com. I’m a big fan of his AngularJS articles.

These are the 4 resources I visit frequently to stay current with the latest changes on the software industry. Let me know what resources you use.

Categories
General WordPress

The beauty of using WordPress

WordPress is more than a blogging platform. With many plugins to choose from, you can build a very sophisticated site.

With WordPress, I don’t have to worry about designing my site so that it displays correctly on mobile devices, desktop browsers, and tablets. Currently I’m using
Twenty Thirteen theme and my blog looks correct on all devices. We have to thank responsive design for this enhancement. Take a look at my blog with your mobile device and you will see this:

mobileView

 I have 2 section on my blog: one for the main content and another section that displays my latest tweets. The above image does not display the tweet section next to the main content. It is displayed at the bottom of the page. If you browse it with a bigger display, you will see both sections next to each other.

With WordPress, I can concentrate in writing blog posts. I don’t have to write code to maintain another website. Currently I’m using Bluehost to host my blog and I’m very happy with their service. One of the nice features about Bluehost is that they do daily backups of my files and mysql database. Before I update WordPress thru the dashboard, I make sure that I download the latest backup (files and database) to my local computer. Having the backup files locally, gives me confidence to upgrade my blog without fear. If something happens with this update, I can upload the backup files and continue writing.

WordPress also has a large ecosystem. You can find plugins for about anything you need. For me, I wanted to integrate my posts with Twitter, Linkedin, Google+, and Facebook. For this need, I’m using Jetpack which has a ton of features.

Conclusion

I highly recommend WordPress to manage your blog. You can concentrate on writing and let WordPress’s theme handle the design for you. Most of the themes will display correctly on desktop and mobile browsers. If you need to extend WordPress, you can installed free or paid plugins to improve your site.

Categories
General

Change Management

changeManagement

People don’t like changes. When I worked at Katherine Furniture, the owners were not willing to change. During that time, I was working and going to college at the same time. It was the perfect scenario to apply my knowledge about Information Systems to improve this small retail store.

The Problem

The majority of the business was done thru financing. We had many financial companies that helped us. The customer will fill out a credit application to see if they will qualify for the purchase. The problem was that we used a paper form to fill out the credit application. After completing the application, we will submit the application to the financial institution for processing. To process the application, we also needed to submit additional documents like utility bills, pay stubs, and driver license. The problem with a paper form was that many times we will lose it along with the other papers. This situation frustrated everyone. The customer and also the owners. How can you lose a credit application? I was frustrated as well but I decided to put the computers to work. I spoke with the owners and said, “we have computers here but we are not using them properly.” Let’s capture the credit application information in our database.

The Solution

I was determined to create the electronic form to capture this information. The initial version was created with Microsoft Access. I was able to create the form and bind it to the database. I also added a print button since we needed to fax it to financial companies and also the customer needed to sign it. After completing the electronic form, everyone refused to use it. They were not willing to change. They were
accustomed to use the paper form. I started to use it myself and prove everyone that this was the only way to improve the business. I also started training them on how to use this application. Within a few weeks everyone was using the electronic version of the credit application. The owners were very happy with this change. They wanted to explore other ideas on how to increase sales.

Conclusion

Change is needed to accomplish new goals. We need to be open to new ideas. During the process of creating the electronic form, I learned so much about change. I was able to change a group of people to use technology instead of paper. At the beginning they refused to use my app, probably they needed more training. I learned that to change we need to take baby steps to get there.

Categories
General

My first reactions to Project Spartan

Project Spartan is the code name for the new web browser being developed by Microsoft. Based on the blog post by the Internet Explorer team, it is designed for Windows 10 only. In my opinion, Microsoft is making a big mistake here. The new browser should be available for Linux,  and Mac operating systems. One of the reasons why Firefox and Chrome dominate the browser market is that their browser is available for all the 3 major operating systems. In addition, Firefox and Chrome release updates and fixes quickly. For Internet Explorer, the releases are not that frequent and it’s tied to Windows only. In a future post, I will download Spartan and see its features in more detail.

 

 

 

 

 

 

Categories
General

Go outside your comfort zone

During the day, I use the following technologies: .Net framework, c#, asp.net, html, css, javascript, mysql, sql server, git, team foundation, visual studio. When I use these technologies, I’m in my comfort zone and there is no pain while using these tools or frameworks. It is like speaking in your native language.

Lately, I’ve been going outside my comfort zone. So what is outside my comfort zone? Outside my comfort zone are programming languages like Ruby and Python. Also Django and Rails are in this category.

Let me share a story about being outside your comfort zone. I was working with a front-end developer in a simple web site. I was in charge of the back-end code while my friend was in charge of the HTML and CSS. Using email to collaborate in this project was not working for me. I proposed to my friend to start using Git and Github. Since my friend was an expert in front-end technologies and had no prior experience with a source control tool, he was uncomfortable learning Git and Github. He was unwilling to move outside his comfort zone. At the end, he refused to use any source control.

In my opinion, software developers need to go outside their comfort zone to learn new languages, tools, frameworks. At the end of this process, we will be better developers. We will be better prepared for new challenges.

Categories
General

Don’t give up

Don't give up

Sometimes when we fail, we give up. I tried really hard to get a job after college. I went to dozens of interviews and nothing. I was unable to secure a job in information technology. I had no choice but help my parents with their furniture store. During that time, I learned a lot about running a business.

After a few years working for my parents, I decided to start looking for a job as a software developer. I interviewed with a lot of companies but they always wanted someone with more experience. I was worried that I had my college degree but that degree was not enough to guarantee me a job. I was about to give up when someone found my resume online. They were looking for a Junior developer. James, one of the founders of PrintPlace.com, called me and asked me to come to the Arlington office for an interview.

The interview went well and they hired me to do a little bit of everything. Desktop support, web development, manage their phone system.

I hope you find my story inspiring and remember, don’t give up.