Friday, March 4, 2011

The Great Cloud



Since I was interested with the cloud I was looking around everywhere in articles, interview and videos to know about this « new technology » that everybody is talking about..
In the beginning I was scared, I found in front of my face a big number of new terms and paradigms was also the term cloud is over-applied “it’s the new trend” , “the new technology choice FOR the IT in the future”, “everybody will go to the cloud” cloud here and cloud there. Also in almost articles and video the authors suppose that you are a great IT and he suppose that you know all about the cloud and he start talking about his own cloud or predicting about the future of the new cloud solution that exist. But in this article I like to answer the basic questions that I got when I started goofing around:
  • What is the cloud in first place (Clear definition)??
  • After I move to the cloud what are the management tasks removed and what I still have to do (I have to do something right)
  • What are the solutions that exist and what is the difference between them??
  • What I need to know before starting use the cloud??

I will Start by an abstract definition for the cloud and I think it is the best definition I ever read:
“The Cloud is a utility computing environment where the developer can treat the compute and the storage resources as infinite”.
Great Definition and great news not only for the IT guys who doesn’t like to manage storage issues but specially for every creator and innovator that he can’t find great resource to apply or to create his idea which can be the next million dollar idea, it’s a great news for people who like game development and 3D simulation and of course it is great news for science because now Scientist everywhere can use the cloud capacities to do hard and complex calculations that used to be done in some specific high cost grid calculation. There is a project done by a Tunisian engineer called Karim Chine this project allow scientists to do and share hard calculations and simulations by implementing the R platform on the cloud this project called Elastic-R and finally is a great news for people who like to test their startups “Now only with a pc we can start our own business”.

Now let’s talk about what it was removed and what it still you have to worry about, I will start by the good things:
  • All ITs must do some theoretical calculation and estimation about the maximum load, with the cloud you don’t need to do this anymore you have infinite resources.
  • No more replication strategy
  • No more Platform Patching/maintenance strategy
  • Don’t think about Storage “Head Room”
  • And Finally no more Data Center setup (Redundant Power, Redundant cooling, redundant internet connectivity….)

Cool!!!!!!!! Ok don’t be so sure because you still have a bunch of headaches that you need to worry about:
  • Data Storage: Nosql style or SQL style
  • Maximum concurrency in application
  • If Sql : storage sharing??
  • If no SQL: partition and row keys??
  • Programming language

  • Monitoring software
  • When to adjust capacity (especially that you pay for what you use)
So If you like this and actually you decided to move to the cloud there are many solution exposed out there by the big players (Microosft, Google,Amazon…):
  • SalesForce.com
  • Rackspace Hosting
  • Google App Engine
  • Amazon Web Services
  • Azure Services Platform
All those platforms are cloud based platform but there are different in term of services for example Amazon offers Virtualization other don’t, Also in management for example with Amazon you manage your virtual machine and add ones when you need it, but Azure manage for you the virtualization and add capacity when the application need it and finally in paying mode some of them offer a bill on timing others on operations and queries.
Is not something easy to move to the cloud you need to be familiar with distributed architectures and design patterns also you need to have a strong knowledge about security and of course managing Data Bases.
This is a little introduction about the cloud all you have to do now is to go out there and find the most solution that is suitable for your application or for you enterprise and be the first that present it to your boss.



Sunday, February 6, 2011

MonoDroid Project

.Net Developers can start now developing for Android using c# and visual Studio.


Android is the winning cart in the world of smartphones it is the most popular with more than 100000 applications in the MArketpalce also many devices use it as an OS, in one word it is the windows of the smartphones.

But before the monoDroid project .Net developers was filling envy and frustrated because they are disable to share the goodness of the Android world and they will have to learn a new Framework. Also
the people who use the Visual Studio IDE will have problems using Eclipse.
So with the mono project (open source project to make .net compatible with different platforms), Nouvel( the same company than introduced the MonoTaouch (framework able you to develop for iphone using .net) in 2009) has stepped up and presented the MonoDroid project. You can start developing for Android after you download the monDroid for visual studio and some other tools all the download instructions are found in this Link http://monodroid.net/Installation#Install_the_Java_JDK. Later more Tutorials will come up in order to introduce bettter the MonoDroid Project



Wednesday, February 2, 2011

Initiation à ASP.Net MVC


Cet article sera divisé sur trois parties

            Asp.Net MVC définition et introduction
            Asp.Net MVC Comment ça marche ???
            Asp.Net MVC application démos 


Asp.Net définition et introduction (partie 1)

C’est quoi le MVC???

MVC (Model Vien Controller) est un pattern architectural qui sépare l’application en trois composants : The model, The View and the Controller.

        Models : L’objet model ce sont les parties de l’application qui implémentent  la logique de domaine des données de l’application, l’objet model charge et enregistre des états de model dans une base de données. Par exemple, un objet produit peut charger des informations de la base de données, faire un traitement sur les données et enfin mettre à jour la base de données dans le serveur.
       Views : Ce sont les composants qui affichent l’interface utilisateur de l’application. Typiquement cette UI est créé suivant un modèle de données. Par exemple si on veut créer un édit view pour un tableau de produits qui affiche des zones de textes, des listes, des cases à coucher… suivant l’état actuel de l’objet produits.
       Controllers. Les contrôleurs sont les composantes qui traitent l’interaction de l’utilisateur avec le système. Ils choisissent un view et l’affichent. Dans le pattern MVC le view affiche seulement l’interface mais le contrôle des données se fait par les controllers qui passent ces données aux Models.

MVC Pattern offre une séparation entre les différentes aspects de l’application (logique de présentation, logique  de métier et logique des données), en même temps ils offrent un couplage libre entre ces composants. Le patern indique où chaque élément appartient dans l’application, la logique de métier appartient au model, la logique de présentation appartient au view et la logique des données appartient au controllers. Cette séparation permet de Controller la complexité pendant la création de l’application. Parce qu’il vous permet de concentrer sur un aspect de l’implémentation chaque fois. En plus il diminue la complexité des Tests et enfin cette séparation vous permet de créer les différentes parties de l’application en parallèle.

Quand je choisis de créer une application MVC ???

Vous pouvez choisir soit une application Asp.net classique basé sur les web_forms ou choisir une application ASP.Net MVC mais pas les deux.
Avantages d’une application basée sur MVC
Rendre le control de complexité de développement plus facile à manager
MVC Framework est idéal pour les développeurs qui aiment avoir le contrôle sur tout le comportement de l’application.

Il utilise un Front Controller patterns qui traite les web application requests comme un seul controller qui vous permet de développer une application qui supporte une riche  routing infrastructure.
Supporte mieux les TDD(test-driven-developpment)
En général il sera très intéressant d’utiliser le MVC pour des applications complexes qui engagent un grand nombre de développeur et des Web designers qui ont besoin d’un dégréé supérieur de control sur le comportement de l’application.

Friday, January 21, 2011

The New JSR ( Java Specification Requests)


Finally JSR for java 7 & 8
JSR are primordial documents for Java Community Process:

The new Java 7 JSR:

JSR 334 : Small Enhancements to the Java™
Programming Language (The coin project for
Java 7) : 

JSR 335 : Lambda Expressions for the Java™
Programming Language (the lambda project for
Java 8) :  

JSR 336 : Java™ SE 7 Release Contents 

JSR 337 : Java™ SE 8 Release Contents 

3 principals JSR for Java SE7

JSR 203 : More New I/O APIs for the Java
Platform ("NIO.2") : 

JSR 292 : Supporting Dynamically Typed
Languages on the Java Platform :

JSR 334 : Small Enhancements to the Java
Programming Language (OpenJDK Project
Coin)

For Java 8 is a lot more interesting because we discover and for the first Time the JSR that compose it

JSR 308 : Annotations on Java Types
JSR 310 : Date and Time API 

JSR ???: More Small Enhancements to the Java
Programming Language (OpenJDK Project Coin)

JSR 335 : Lambda Expressions for the Java
Programming Language (OpenJDK Project
Lambda)

JSR ???: Java Platform Module System
JSR 260 : Javadoc Tag Technology Update :

JSR 295 : Beans Binding 

JSR 296 : Swing Application Framework

Some dates:
JDK7 is available from jule 2010 but the JDK8 will be available in 2012

With Those amelioration Java is really catching up with the .Net framework witch contain many functionalities that we can’t found it with java and I hope that the open source community  with Oracle people  create many cool features that us developpers can use.
PS : Java now is supported by The Windows Azure

Saturday, October 30, 2010

Parallel programming


The parallel programming is an old concept but now it’s very demanded specially after the success of the distributed applications and the stop of the CPU evolution. In the past if your boss don’t like your code and want you to write a better code you can just take a 6 month  vacation   and when you will come back your code will run fine on a more developed machine but now it is impossible so we need to start thinking about  the parallel programming. But parallel programming is hard and if you don’t pay attention the best thing that can happen is to get wrong results and of course the worst thing is your code will crash down so the developer needs help. 
Java and .net offer some tools to help the developer to write nice parallel code with some slight differences but basically is the same concept even the name of most methods are the same like “isalive”,”join”…. But I found that java is more flexible in handling variables specially that comes from outside the current thread thru inheriting from the thread class and overrides the run methods so you can create constructers and entering all variables that you like witch I found little harder with .net even with the paramatrizedThreadstart delegate  but I think that with .net is easier to create a new thread and run any method that you like in it also the two frameworks offer the tools to manage the thread pool and I think in both frameworks it was handled fine.
But starting from the .net framework 4.0 there was a great work on the parallel programming with the parallel task libraries so the idea is to match the code with the parallel programming patterns and models thru names like tasks and taskfactories also they create great book http://msdn.microsoft.com/en-us/library/ff963552.aspx explaining how you can use those classes and libraries and even showing some figures to help developer to decide whatever hi will paralyze data, tasks or flows. So I think that they done a great job in the new framework.  Now we are waiting for java 7 and I’m sure that java will create something to handle these problems and to develop better parallel programming tools

Monday, October 25, 2010

Welcome


In this blog I will try to write about Java and .Net also I will encourage people to use them both and stop comparing the two of them. So I hope that you like my blog and I hope that finally you be convinced that taking sides is not helping any one specially you.