Tuesday, 19 November 2013

Bootstrap UI

As a developer, I can code for hours, it is my passion, my profession, what I enjoy doing, and what I do for living. But let's face it, when it comes to design, I have my own doubts. Every developer has his/her fears when it comes to design, you will hear almost the same response or excuse from almost any developer, "I'm not a designer !!". Well for me, I love looking at websites, I can provide some valuable insights, but I lack the ability to actually design and build websites. I don't have the "designer" eye :)

Well for the everyday developer, this is not an issue any more. Welcome to the world of bootstrap. You can start developing websites with really fabulous responsive designs, literally with minimal amount of effort. What can you ask for more?

Bootstrap is an open-source Javascript framework developed by the team at Twitter. It is a combination of HTML, CSS, and Javascript code designed to help build user interface components. Bootstrap was also programmed to support both HTML5 and CSS3. 

What is really nice about bootstrap is the fact that it is becoming a standard. A lot of websites are being built using it nowadays. And to make things even better, there are a bunch of theme generators now, exclusively for bootstrap. 

So to make a long story short, you can build a website and have one or more themes, with nearly zero CSS efforts. It is really amazing.

So, if you are still reading up to this point, and feeling excited, head to their website and start right away. Also, check these nice websites which offer great themes.

Happy coding + designing :)

Monday, 18 November 2013

Visual Studio 2013

I cannot believe it has been nearly six months since my last post. Time flies really fast. For you out there, Visual Studio 2013 has been launched. It comes packed with so many interesting features. If you are interested and want to explore, book yourself a couple of hours and watch the following short movies that were published on channel 9 as part of the launching campaign.

What's New in Visual Studio 2013 Integrated Developer Environment (IDE)

Introducing Visual Studio 2013 for Windows Store Developers building HTML App

Creating Quality Applications Using Microsoft Application Lifecycle Tools

Introducing Visual Studio Online

What's New for Web Developers in Visual Studio 2013

Enjoy :)

Thursday, 25 July 2013

Thank you can do you wonders

It has been a while since my last post, I've been busy so much to write. During my daily routine of reading, I came across this wonderful clip about how a young man with high expectations dealt with his frustration in a smart and polite way and how this moved him and changed the course of his life. Please watch it as it has a really important note at the end.

Enjoy :)

Wednesday, 19 June 2013

How to Learn a New Technology?

Quite often in our industry, we find ourselves in the need to learn a new technology. Sometimes we are “obliged” to learn it as we need to deploy it in a project. And sometimes we learn new technologies to enrich our knowledge, enhance our capabilities, and keep ourselves “up-to-date”.

Recently, I found myself in a similar situation. I was assigned a new project that is going to be implemented using some new technologies that I am not quite familiar with. This brought to my mind the question of “how do we learn a new technology?” So, I looked around, and went for a brief chit-chat with some of the far more experienced people in the house with one and only question: “how to learn a new technology”. Herein, I brief the answers I received.

Our Chief Technology Officer, Samer Awajan, suggests that there is a difference between “knowledge” and “gaining knowledge”. And that there is utterly some kind of “unity” between different technologies and programming languages. So if you stick to the concept and try to absorb the main idea behind the technology you are trying to learn; i.e. get to the essence that unites this technology with the ones you already know, you will find out that the process becomes, more or less, a matter of applying what you already know but using new techniques.

The chief also highlighted how the individual experience counts as well. Even when you are going through articles and books your way of reading is different. After some time and experience, you will find yourself skimming through the whole article to grasp the main idea, then going back and forth scanning for the exact piece of information you are looking for.

Our Software Development Director, Wesam Qaqish, states that each person has their own way of learning new stuff. Some people are bookworms; they prefer to read a whole book before even starting to implement anything. But to him, he prefers to read a bit about the topic to familiarize himself with the terminology and key concepts then starts implementing right away.

Wesam agrees that the background counts as well. It depends on “how new” this technology is to you. Learning .NET, for example, when you are a Classic ASP developer is easier than learning to develop with PHP when you are a .NET developer. Concluding with the fact that the more problems you face while trying to implement any technology, the more experienced you become and the easier it becomes for you to learn and master it.

Michael Ghantous, a senior tech lead in the company, stresses the idea of “sticking to the concept”. Take Database as an example; be it MongoDB, Hibernate, MySQL, … A Database is a Database: tables, views, stored procedures, .. The implementation doesn’t really matter as long as you stick to the main concept behind the technology and try to absorb it and again, link it to what you already know.

Whether to watch a tutorial or read an article depends on each individual he says. Some prefer watching, others prefer reading. Though to him, when he wants to learn a new technology, he starts with a video that illustrates the technology and introduces what it has to offer. He starts by taking the flavor to decide if he will go on with it or not and if so, he goes on reading more about it. Learning the breadth of the technology then delving into the depth. It is very important to start gaining hands-on experience along the way, and start playing with it to become more comfortable and accustomed to it.

When exploring, he highlighted a crucial point; that he prepares a list of what he is trying to achieve using this technology. A list of the cases he will encounter and try to solve. This helps him be more focused and straight to the point. He says "at first it doesn’t matter how to implement a specific task using this technology, what matters to me is if it is already there and can be implemented using it or not".

Michael concluded with an intriguing concept and that is not everyone knows how to search and find what they are looking for. Memorizing syntax and implementation details or some specific piece of information is not what sets you apart. It is rather your ability to find the right piece of information from the right source when you need it.

Taiseer Joudeh, a tech lead in the company, agrees that the way of learning new technologies differs from one individual to another. To him, he starts by watching the “Hello World” tutorial, a very basic one, then starts applying as he is watching. He says “I have to take the hands-on experience and apply what I am watching the soonest. I play a bit more with the example and explore more options as I am going. I try to connect it to a real-life example to help me stay more focused and able to connect things more easily”.

Taiseer then moves straight to the official website. He checks the demos, support section, and documentation to see if it is well-written and covers a good aspect of what he needs.

He also raised a very important point; that he looks around to see if this technology is popular and well-acclaimed; if it has good community and forums. These are all signs that indicate whether this new technology is going to live thus worth investing time learning or not.

Those were some of the ideas that the experienced IT professionals had to offer. I would like to conclude with one simple idea; and that is the importance of overcoming inertia. When you discover and try to learn a new technology it is very important that you overcome inertia - or the fear to discover a new thing, if I may call it, and start taking action, whatever that is, right away.

[A big Thank You goes out to Samer Awajan, Wesam Qaqish, Michael Ghantous, and Taiseer Joudeh for their precious time and ideas that inspired the writing of this post :)].

Five Must Have Tools for MVC

During my daily reading routine, I came across a great blog post about the top five tools for modern MVC applications. Mainly the post discusses CSS and how the usage of several tools can bring you great results.

A must read in my humble opinion. Here is the link to it Five Essential Front-End Tools That Should be Used with Modern MVC Projects.


Tuesday, 18 June 2013

Syncfusion Free E-Books

As a developer, the reading process never ends. You have to read and read and read. I am not sure when we are going to stop reading. I guess, reading has become part of our daily routine to a certain extent. Something as important as eating food, or drinking water.

Well, sometimes you don't have the time to dig into some 500+ pages books to learn a new technology, or extend your knowledge in a topic you already knew about. If you are in this position nowadays, have a look at this website, it is called Syncfusion. It contains a number of free E-books covering several important topics in addition to several white papers.

I encourage you all out there to visit this site and have a look.

Happy Coding Everyone.

Monday, 13 May 2013

Rules Engine

It has been a while since my last post. I was caught up with several things for the past three weeks or so, I couldn't add any new posts at all. Well, things are back to normal and hopefully it will stay this way. 

Enough talking about me and let's head straight to the money talk. Well, during the past three weeks I have been preparing myself for a new project, a financial application. I did some deep study on what to use and how, etc ... One of the major points was the validation of my business entities. I wanted to simplify this procedure and locate the validation rules in one layer. By the way, I am a big fan of code centralization, having one thing handling all the validation stuff. I wasn't convinced with having my validation block segregated into two layers, a javascript one for the UI and the other one in VB.NET for the server side.

I decided to go with one layer, and the UI will invoke this layer to validate the objects (JSON objects). For me, I can accept the cost of AJAX posts for the sake of having one solid layer.

I started by implementing something myself, but then I thought there must be something ready out there. Some sort of a ready made library that can be used to achieve my goal. I started looking for one and I came across this wonderful and magical library called "Rules Engine". It is an open-source library hosted on CodePlex. I played with it a bit to get myself familiar, and to be honest from the first line of code I fell in love with it. It is a really nice, simple, straight forward, and comprehensive engine. I deeply recommend this for anyone looking for a good validation engine.

Happy coding ...