Javascript scalable applications

Posted By Venu Thomas

Today I was flipping through reading one of the presentations by Nicholas Zakas, specifically the “Scalable Javascript Applications Architecture“.  Although not the first thing I read on the subject, I enjoyed the clarity with which Nicholas explains. I will try to record the impressions taken in case anyone can help.

1) Theory of modules

The theory of modules (as Nicholas calls it) tells us that one way to create an application that is scalable and easy to maintain, this should be composed of modules.

What are modules?

A module (in our terms) is one application that is part of a larger structure. Each has a job and only takes care of it.

JavascriptScalableApplications
(See Picture)
(I enjoyed this picture gives a clear picture of the meaning of magnitude).

Code

Core.register("hello-world", function(sandbox){
 // Private Variables
 var strPriv = "Private";

 //  Public Methods
 return {
   init: function(){
     try{
      sandbox.console("start the module");
     } catch(ex) {
      alert("sandbox not found");
     }
   },
   destroy: function(){
    // Destructor
   }
 };
});

Here’s an example of a module that recorded with Core.register() we will see later.
Looking at the form we see that the first parameter informs the module name and the second specifies the functionality of the module. This function receives as parameter sandbox (Also see below).
This feature will return an object with at least two methods init() and destroy() that comprise the options available in the module.
init() will be treated as the builder of the module and will be executed when the module is generated. On the other hand destroy() will be treated as the destroyer of the module running when the module is removed.

Sandbox

In software development environment called the Sandbox to test isolated where the experts on running applications. In this case, practically based on the same and that each of the modules used an isolated environment for other modules.
Code

var Sandbox = function() {
   var strPrivate = "Private";

   return {
     alert: function(str){
       alert(str + strPrivate);
     },
     console: function(str) {
       console.log(str);
     }
 }
};

As we see the Sandbox, this is an element that offers a number of ways in which we interact with the application. For example, could be used to interact with the DOM of the application using a JS framework (or not) could implement a simple version and checked to make Ajax requests or validate forms, …. All this is available from the modules.
This module should only worry about what the Sandbox allowed without worrying about what lies beneath it, thus facilitating the development and functionality of each module.
Example:

// Add method notify () to Sandbox
var Sandbox = function() {
  ....
   notify: function(opt){
     // Checks prior
     // .....
     $("#notify #title").text(opt.title);
     $("#notify #content").html(opt.content);
   }
  ....
};

// Use the method notify () of the Sandbox from the module.
Core.register("hello-world", function(sandbox){
   // Private Variables
   ver ver = "1.0";

   return {
    init: function(){
      try{
        sandbox.notify({
          title: "Hello World v." + ver,
          content: 'This is a <strong>Test</strong>.<br />To demonstrate the use of modules'
        });
      } catch(ex) {
        alert("sandbox not found");
      }
    },
    destroy: function(){
     // Destructor
     }
   };
});

In the example we see that at the start of our module, we call the method notify() from sandbox without worrying about what will make this method.
The method after a series of previous validations, simply add a title and content to an element #notify using jQuery.
Thus, the Sandbox filter made between the module and the framework controlling what this intends to do about our application.

The Core

In the above we have seen a variable Core that seems to be the cornerstone of all this. This is a small script that allows modules to register and associate a new instance of the SandBox to each of them every time you run .

var Core = function(){
   // Private Variable
   var modules = {};

   // Instance Creams
   function createInstance(moduleID){
    var instance = modules[moduleID].creator(new Sandbox(this)),
    name, method;

    if (!debug) {
      for (name in instance){
        method = instance[name];
        if (typeof method == "function") {
          instance[name] = function(name, method) {
            return function(){
              try { return method.apply(this, arguments);    }
              catch(ex) { log(1, name + "(): " + ex.message);    }
            }
          }
        }
      }
    }
  return instance;
 }

 //  Public method
 return {
   register: function(moduleID, creator) {
     modules[moduleID] = {
       creator: creator,
       instance: null
     };
   },
   start: function(moduleID) {
     modules[moduleID].instance = createInstance(moduleID);
     modules[moduleID].instance.init();
   },
   stop: function(moduleID){
     var data = modules[moduleID];
     if (data.instance) {
       data.instance.destroy();
       data.instance = null;
     }
   },
   startAll: function(){
     for (var moduleID in modules) {
       if (modules.hasOwnProperty(moduleID)) {
         this.start(moduleID);
       }
     }
   },
   stopAll: function() {
     for (var moduleID in modules) {
       if (modules.hasOwnProperty(moduleID)) {
         this.stop(moduleID);
       }
     }
   }
 };
}();

As we see it is a small script (this is a base, can be extended depending on the needs of the project) that allows us to build the modules we want for every application.
Example

Core.register("....", function(sandbox){});
Core.register("....", function(sandbox){});
Core.register("....", function(sandbox){});
Core.register("....", function(sandbox){});
...

// Start all modules
Core.startAll();

WordPress 2.9 will have embedded image editing

Posted By Venu Thomas

WordPress_2_9_ImageEdit_160909

One of many to highlight aspects of WordPress is the way we listen to users and incorporate their ideas into the core content management system. Version 2.9, still no launch date, will have a basic image editor, product of a survey on file management features by the development team.

The options currently being tested are: crop, rotate 90 degrees, flip horizontally or vertically and resize the image. May apply to one or more of the commonly used sizes, so it will be easy to choose a specific area for thumbnails. The amendments are supported both at the time of loading, and accessing the multimedia library.

If we consider that any Web service allows us to edit a simple avatar, WordPress is clear that he could not miss a similar choice. The way in which part of the package, requiring no special plugins or server configurations will be useful for all types of bloggers. Novices may perform these actions without having to seek common tools for this. In contrast, more advanced time-saving, and always will be able to install or use more complete aggregate external programs.

Link Via WPEngineer

More javascript on the web: Microsoft Ajax CDN

Posted By Venu Thomas

ASP_Ajax

A few days ago said the possibility of using the infrastructure of Google to host JavaScript libraries for our applications. Well, now that Microsoft has launched a similar service, Microsoft Ajax CDN , A content distribution network where we can download the runtime libraries of scripts that we use in our applications.

Or in other words, we can make free use of these libraries, without limitation of bandwidth and regardless of whether or not for commercial purposes. Just be referenced from your code:

?View Code ASPNET
<script src="http://ajax.microsoft.com/ajax/jquery-1.3.2.min.js" 
        type="text/javascript"></script>

The main advantage of this method is the speed with which these files will be served, since it uses the infrastructure of the Redmond giant, while the cache is shared with other websites that are also used. It also provides the ability to use scripting to Web sites that do not have permission to upload files (such as platform blogger)

Unlike the Google service, since this CRC only time we can find the libraries that are officially part of the Microsoft development platform, such as those typical of ASP.NET Ajax, jQuery and those plugins that are added. The address http://www.asp.net/ajax/cdn/ can see the complete list of libraries, with their corresponding addresses download.

Additionally, Scott Guthrie said in his blog that the new control ScriptManager that come with ASP.NET 4.0 includes a property called EnableCdn which will activate the download of the Ajax libraries and all those necessary for the operation of controls, directly from their servers.

AjaxCDN_EnableCdn_160909

The drawbacks, as the same as the Google service: If you do not have network connectivity in development time, we really have it raw.

More information: http://www.asp.net/ajax/cdn/

Let Google host your javascript libraries

Posted By Venu Thomas

GoogleCode

An interesting possibility offered by Google developers use it as a CDN (content distribution network) for open source javascript libraries popular. In practice, this means is that in your web development, instead of going to your server for libraries that use scripting, you can directly reference and use the possibilities offered by this company in its servers.

This provides several advantages are not insignificant:

  • First, the discharge of these libraries will, for the client, probably faster than if you have to get from your server through the Internet. This is Google’s network infrastructure, and that means guarantees.
  • Second, and related to the above, if this is a high traffic website, the audience will surely be allowed infinitely greater than you can offer to another server.
  • Third, if the user has previously visited another site that also use the same library, will benefit from the local cache of the same, because your browser does not again discharged. And in any case, they would be taking advantage of Google’s cache optimizations.
  • fourth, do not consume bandwidth from your provider, although this is negligible. And I mean negligible bandwidth, not the provider ;-)
  • fifth, you can use the libraries from sites hosted somewhere where you could not, or is not easy, upload scripts, as the platform Blogger from which to write.

At this point includes: development frameworks, in all versions available:

  • jQuery
  • jQuery UI
  • Prototype
  • script_aculo_us
  • MooTools
  • Dojo
  • SWFObject
  • Yahoo! User Interface Library (YUI)

If you’re already using Google Ajax libraries (such as the Visualization API, or Google Maps), and get through the charger google.load (), you can also use it to download these frameworks. You can also do so through a direct reference, such as:

?View Code JAVASCRIPT
<script 
src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js">
</script>

Oh, and not worry about changing versions, or anything. Google is committed to live indefinitely all distributions to be published and include updates as they appear.

Finally, and to provide a negative view, some people think that this is one more strategy for Google to get information about users’ browsing, code execution from its servers enable cookies and reading of data that could be used for purposes other than those provided on your website. Still others think it could be a source for the spread of malicious code if someone managed to hack these archives. Obviously not a good idea to use this option if you go to work in local mode, offline.

For more information on how to download and libraries available, you can visit the Developer Guide for Ajax libraries API.

Minimizes and organizes your CSS

Posted By Venu Thomas

Barry van Oudtshoorn, has developed a compactor CSS also allows us to alphabetize our CSS attributes.
It has therefore followed the specifications proposed in Google Payload Size Minimize making our CSS is smaller and, consequently, less late in coming to the end user.

What do you do?

Using a basic CSS file are applied to a series of transformations to obtain a new CSS file supplement packed.

  • Eliminate all comments
  • Sort all the properties for each selector alphabetically
  • Sort all values of each property alphabetically
  • Eliminate all unnecessary space.

Comparison with YUI Compressor

CSS_Compress_090909

The compaction is equal to that offered by YUI Compressor, but only the above (and little) in cases with gzipped CSS.
YUI_Comparison_090909

PHP Version

Taking advantage of this holiday and I’ll be okay for a project I’m developing, I ported to PHP function to use it without using Java.

<?php
class cssCompressor {
 private $cssFileName;
 private $selectors = array();
 
 function cssConstruct($cssContent = '', $deleteComments = true){
 $this->cssFileName = $cssContent;
 
 // Delete comments
 if ($deleteComments)
 $this->cssFileName = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $this->cssFileName);
 
 $selectors = array();
 // We get all the selectors
 $parties = explode("}", $this->cssFileName);
 
 foreach($parties as $part) {
 if (!empty($part))
 array_push($this->selectors, new SelectorCSS($part."}"));
 }
 }
 
 function get($cleanSpaces = true){
 $output = '';
 foreach($this->selectors as $selector) {
 $output .= $selector->get($cleanSpaces)."\n";
 }
 // Delete line breaks, spaces, ...
 if ($cleanSpaces)
 $output = str_replace(array("\t", "\n", "\r"), '', $output);
 
 return $output;
 }
}
 
/*
 SelectorCSS
*/
class SelectorCSS{
 private $properties = array();
 private $selector;
 
 function cssConstruct($selector = ''){
 $parts = explode("{", $selector);
 if (count($parts) < 2) {
 die("Selector " + selector +" incomplete");
 }
 $this->selector = trim($parts[0]);
 $contents = trim($parts[1]);
 if (strlen($contents) == 0) {
 die("Selector " + selector + "empty");
 }
 
 if (substr($contents,strlen($contents) -1 ,1) != '}'){
 die("Selector "+selector+" is wrong");
 }
 
 $contents = substr($contents, 0, $contents - 2);
 
 $this->properties = explode(';', $contents);
 }
 
 function get(){
 $str = $this->selector.'{';
 natcasesort($this->properties);
 foreach($this->properties as $property) {
 if (!empty($property))
 $str .= $property.";";
 }
 $str .= '}';
 return $str;
 }
 
}
?>

To use is simple, we simply must indicate the file’s contents. Css we want to compact and manage their properties. Upon receiving the contents of the file we can send one or more file concatenating the contents thereof.

// StyleSheet.css file content
 $fileName = file_get_contents('StyleSheet.css');
 
 // We create an object that we pass the contents of parameter
 $styleSheet = new cssCompressor($fileName);
 /* Parameters:
     1: (String) content of the file
     2: (Bool) Clear comments (default: true)
 */
 // We get the CSS content
 echo $styleSheet->get(false);
 /*    Parameters:
      1: (Bool) Delete lines (default: true)
 */

The object has a method get() that returns the contents compacted and orderly, this content can cache in a static file or display it directly.

Linq to NHibernate, Version 1.0

Posted By Venu Thomas

A few weeks ago, Oren Eini (Ayende Raihan or, as is often referred to) communicated the release of version 1.0 of the Linq provider for NHibernate, a feature highly demanded by users since the advent of integrated query language. NET.

Although it will be included as part of NHibernate product in future versions, have decided to release the current release of the supplier as separate package so you can start to be used from now. It is being tested in many applications in production for several years, and apparently the performance is just right.

And how can help the supplier, if you’re user of NHibernate? The following example from Caffeinated Coder demonstrates how to query database can be simplified and made more readable using Linq and also benefit from strong typing, intellisense and compile-time checks:

Using NHibernate API:

public IList<Call> GetCallsByDate(DateTime beginDate, int interpreterId)
{
    ICriteria criteria = Session.CreateCriteria(typeof(Call))
        .CreateAlias("Customer", "Customer")
        .Add(Restrictions.Gt("StartTime", beginDate))
        .Add(
            Restrictions.Or(
                Restrictions.Lt("EndTime", DateTime.Now), Restrictions.IsNull("EndTime"))
            )
        .Add(Restrictions.Eq("Interpreter.Id", interpreterId))
        .AddOrder(Order.Desc("StartTime"))
        .AddOrder(Order.Desc("Customer.Name"));
        return criteria.List<Call>() as List<Call>;
}

Using Linq:

public IList<Call> GetCallsByDateWithLinq(DateTime beginDate, int interpreterId)
{
    var query = from call in Session.Linq<Call>()
        where call.StartTime > beginDate
            && (call.EndTime == null || call.EndTime < DateTime.Now )
            && call.Interpreter.Id == interpreterId
        orderby call.StartTime descending, call.Customer.Name
        select call;

    return query.ToList();
}

You can download both binaries and source code from the SourceForge project page.

What’s New in the compiler of the JDK 7

Posted By Venu Thomas

JavaLogo_060909

Darcy Joseph tells us of the developments that have the compiler in JDK 7. They are usually minor changes discussed at the forums, which include various amenities in the language syntax.

The news of the JDK 7 will be:

  • Switch to objects of type String
  • Automatic resource management
  • Improved type inference for the creation of Generics
  • Invocation of methods with varargs simplified
  • Improvements in numeric literals
  • Language Support for Collections
  • Language support for JSR 292

Let’s see in detail these features.

Switch to objects of type String

It will be possible to use the switch operator with objects of type String. This will avoid potential “if-then-else”. So this new feature would allow us to:

  String s = ...
  switch (s) {
   case "A1":
      processA1 (s);
      // And continue ...
 
    case "A2":
    case "A3":
      processA2A3 (s);
      break;
 
    case "A4"
       processA4 (s);
      // And continue ...
 
    default:
      processDefault (s);
      break;
  }

Automatic resource management

A “resource” is an object that must be closed manually, such as java.io.InputStream, OutputStream, Reader, Writer, Formatter;
java.nio.Channel; java.net.Socket; java.sql.Connection, Statement, ResultSet among others. These resources are usually open in a try block and close in a finally.

Recursos automatic management is a special form of the operator where you try one or more state resources. The scope of these resources is limited to the block. When the block ends, either normally or abruptly, all declared resources are automatically closed.

The main advantage is that it eliminates the need for manual closing, and it causes errors. Furthermore, it “prevents” the second exception (the close ()), always leaving the exception of the block that is usually more interesting.

An example usage would be:

 static String readFirstLineFromFile(String path) throws IOException {
 
        try (BufferedReader br = new BufferedReader(new FileReader(path)) {
 
           return br.readLine();
 
        }
 }

As we see, the try block () declares a resource, is then used within the block. When finished, it closes automatically. It is also possible to declare more than one resource:

try (InputStream in = new FileInputStream(src);
     OutputStream out = new FileOutputStream(destination)) {
 
            byte[] buf = new byte[8192];
            int n;
            while ((n = in.read(buf)) &gt;= 0)
                out.write(buf, 0, n);
}

Improved type inference for the creation of Generics

This also includes the possibility to infer the types for instantiation using Generics. In cases parameterized types are obvious from the context, this parameter in the constructor can be omitted and replaced with an empty set <>.

For example, the following line:

 Map<String, List<String>> testmap = new HashMap<String, List<String>>();

can be replaced by:

Map<String, List<String> testmap = new HashMap<>();

Improvements in numeric literals

Just as we can declare decimal numeric literals, octal and hexadecimal literals now we can declare binary. This is very useful in certain areas. For this, use the prefix 0b, which is also the same compilers that use C / C + +, Ruby and Python. For example:

// A literal 'byte' 8-bit
byte wcByte = (byte)0b00100101;
 
// A literal 'short' 16-bit
short wcShort = (short)0b1010000101010101;
 
//  More literal 'int' of 32-bit 'int'
int wcInt1 = 0b10100001010001011010000101000101;
int wcInt2 = 0b101;

These variables are then used normally, for example:

class A2 {
public static void main(String[] args) {
    System.out.println("The decimal value of 10100101 is " + 0b10100101);
}

On the other hand, added the possibility to use an underscore (_) separator of numbers, to facilitate the reading of them. Thus, the compiler will ignore the character “_” when used in numeric literals. For example:

int numberOfTelephone = 757_757_7575;
long CreditCard = 1234_5678_9123_4567L;
long bundle = 777_77_7575L;
float money = 12_345_132.75;
long hexBytes = 0xFF_EC_AE_5E;
long hexWords = 0xFFEC_AE5E;
long maxLong = 0x7fff_ffff_ffff_ffffL;
long bytes = 0b11010010_01101001_10010101_10010010;

Language Support for Collections

It adds language support to treat like Arrays Collection.

For example, you can write the following to declare an immutable List:

final List wcDigits = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9];

It will also be possible to access lists and maps using array syntax:

public class Main {
  public static void main(String[] arguments) {
    List wcArrayList = Arrays.asList(new String[] {"a","b","c"});
    String fristElement = wcArrayList[0]
 
    Map testmap = new HashMap(4);
    testmap[Integer.valueOf(1)] = "One";
}

Language support for JSR 292

This low-level change made minor changes to the Java language to be simpler to work with some features of the JVM. This will allow Java code to interoperate and / or implement libraries in other languages. That is, will ensure greater integration between Java and code in other languages. For more information read the proposal of support for JSR 292.

Collection of free chapters of books on ASP.NET MVC

Posted By Venu Thomas

I received some messages from readers Wisecodes who want to begin in ASP.NET MVC, but do not know where to start, and I suggest you write some posts that explain this new framework from scratch. Perhaps someday it, but meanwhile, I reminded them that there are free resources that can be very useful to take the first steps (and even dig a little) on this technology.

For example, recently have appeared a large number of books on ASP.NET MVC, and most of them can download free chapters, in addition to help us decide which of them might be in our interest to have the information value we can provide. Like always, the issue is the spread of this information, so I decided to make this compilation to have them all by hand. As you’ll discover new pieces expand the list, and of course, if you know someone who is not here, I’ll comment’s and add it.

That yes, all in English, to be very technical but I think they are easy to understand.

Pro ASP.NET MVC Framework Pro ASP.NET MVC Framework
Author: Steve Sanderson
Post-show: Now Published Pro ASP.NET MVC Framework (Apress) «Steve Sanderson’s blog
Free Chapter: Chapter 2: Your First ASP.NET MVC Application (23 pages) In this chapter, the author shows in great detail, almost step by step, how to create our first simple application with ASP.NET MVC. First, it creates a very basic project through which explains the basics of programming by following this model, and then goes into the creation of a mini-application data entry, validations and simple logic.
Professional ASP.NET 1.0 MVC Professional ASP.NET 1.0 MVC
Authors: Scott Hanselman Rob Conery, Phil Haack and Scott GuthrieFree

Chapter: Chapter 1: Nerdinner (192 pages)
This extensive chapter describes the creation of a moderately complex site, www.nerddinner.com, using large amounts of related technologies such as filters MVC framework, Ajax, LinqToSql, unit testing, etc.. Highly recommended, essential.

ASP.NET MVC 1.0 Quickly ASP.NET MVC 1.0 Quickly
Author: Maarten Balliauw
Post-show: Announcing my book, ASP.NET MVC 1.0 Quickly
Free Chapter: Chapter 2: Your first ASP.NET MVC application (20 pages)
A brief tour of the process of creating an MVC application, the system routes, controllers, views, and unit testing. Pretty basic, perhaps too “quickly”, but valid in any case.
PASP.NET MVC in Action ASP.NET MVC in Action
Authors: Jeffrey Palermo, Ben Scheirman, Jimmy Bogard
Post-show: Announcing ASP.NET MVC in Action (from Manning) – Jeffrey Palermo (. Com) – CodeBetter.Com
Free resource: Getting Started with the ASP.NET MVC Framework (Green Paper – PDF) (18 pages) (The link to the document you sent by email after submitting your address.) This is another introduction to the framework, the system routes, controllers and views from scratch.Free Chapter: Chapter 9: AJAX in ASP.NET MVC (21 pages)
Interesting introductory chapter to the use of Ajax technology on ASP.NET MVC using jQuery and Ajax helpers to exchange data with the server.
ASP.NET MVC Framework Unleashed ASP.NET MVC Framework Unleashed
Author: Stephen Walther
Free chapters: the author has published several chapters in his blog, and withdraw as soon as the book is available at Amazon, so hurry up that the contents are excellent.
Chapter 1 – An Introduction to ASP.NET MVC
Chapter 2 – Building a Simple ASP.NET MVC Application
Chapter 3 – Understanding Controllers
Chapter 4 – Understanding Views
Chapter 5 – Understanding Models
Chapter 6 – Understanding HTML Helpers
Chapter 9 – Understanding Routing
Beginning ASP.NET MVC 1.0 Beginning ASP.NET MVC 1.0
Authors: Simone Chiaretto, Keyvan Nayyeri
Free Chapter: Chapter 9: Testing ASP.NET MVC Applications (38 pages)
Interesting chapter describes various techniques for unit testing of applications built with this framework, including the creation of mocks, dependency injection controllers, testing route and obliquely, some TDD.

The 10 most important skills for future programmers

Posted By Venu Thomas

It is important to ensure that we are benefiting as much as possible when we invest time and effort to train and learn new things.

The following list will see the 10 we should learn skills that our curriculum is relevant for the next 5 years. This list is not complete and covers some niche markets (such as mainframes). However, if you learn at least seven items in this list you will not miss it.

1. One of the “Big 3″ (Java, . NET & PHP)

Barring a radical change in the world of development (such as an asteroid falling on Redmond), most developers will need to know any of the three major systems development: Java,. NET (VB.NET or C #) or PHP. Nor enough to know the main language. As projects grow and are grabbing more functionality, we will need to know the frameworks and libraries associated with depth.

2. Rich Internet Applications (RIA – Rich Internet Applications)

They can love or hate, but in recent years, Flash is being used for something other than funny animations. Flash also gained additional functionality in the form of Flex and AIR. Competitors of Flash, as JavaFX and Silverlight are also improving in performance. The browsers are improving their JavaScript engine, which is emerging as a web application platform. To make things more complicated, HTML 5 is going to incorporate lots of RIA functionality, including connection to the database, thus the formal seal of the W3C to AJAX. In the near future, have experience of RIA will be a determining factor in our curriculum.

3. Web Development

Web development will not disappear in the future. Many developers were happy so far ignored the web, or just staying with “the basics” that gave them their framework. But companies are demanding more and more to those who really know how to work with the underlying technologies. So we should improve our knowledge of JavaScript, CSS and HTML to succeed in the next five years.

4. Web Services

“REST or SOAP? JSON or XML? Although the election and the answers depend on the project, it is increasingly difficult to be a developer without having to consume Web Services (even if our development is not a Web application). Even the land area used to be ODBC, COM or RPC are now moving to Web services of some kind. Developers who can not work with Web services will end up relegated to maintenance on legacy code.

5. Human skills

There is a trend that has occurred some time ago: the increasing visibility of IT within and outside the organization. The developers are taking more and more meetings that are not development and process for obtaining feedback from them. For example, the CFO can not change the accounting rules without working with IT to update the system. And an operations manager can not change the process of call without IT center update the CRM work-flow. Similarly, customers often need to work directly with development teams to ensure their needs are met. Will it be necessary for all developers to consider how to win friends and influence people? No. But the developers that they will do will be much more valuable to their employers – and are highly sought after in the market.

6. A dynamic programming language and / or functional

Languages like Ruby, Python, F # and Groovy are not yet very popular – but so are the ideas behind them. For example, the LINQ system. NET is a direct descendant of functional programming techniques. Both Ruby and Python are becoming increasingly popular in some quarters, thanks to the Rails framework and Silverlight respectively. Learn one of these languages will not only improve our curriculum, but also will expand our horizon. All great developers recommend learning at least one dynamic or functional languages to make learning new ways of thinking.

7. Agile Methodologies

As time passes, the ideas behind Agile become more defined and better expressed. Many organizations are adopting Agile or proofs of concept for doing Agile. Although Agile is no silver bullet to avoid failure in a project definitely has its place in many projects. Developers who have experience in working and understanding Agile environments will be increasingly in demand in the next five years.

8. Domain Knowledge

Hand in hand with the agile methodologies, development teams are increasingly viewed partners in the project definition. This means that developers who understand the problem domain will be able to contribute to the project in a very visible and valuable. With Agile, a developer can say “From here, we can very easily add this functionality, and you get great value,” or “Hey, this requirement is not in keeping with the pattern of use that the logs show. No matter how many developers resist the idea of knowing anything about the problem domain, it is undeniable that more and more organizations prefer (if not even require) developers to at least understand the basics of the business.

9. “Hygiene” development

Until a few years ago, many (if not all) organizations had no access to bug tracking systems, version control and other tools, all developers are summarized and their preferred IDE. But thanks to the creation of new integrated development environments and the explosion of free software environments of high quality, since there are almost no organizations without these tools. Developers have to know much more than just do a checkout of the code. You need to have a rigorous hygiene habits to ensure they are properly coordinated with the team. The “solitary programmers” that keep everything local, non-document changes and others will not be welcome in traditional organizations, and will be aa directly out of place in Agile environments, where you use a strong coordination between equipment to operate.

10. Mobile Development

During the late 1990 web development grew and gained widespread adoption, so begin to displace traditional desktop applications. In 2008, development for mobile devices eventually took off, and over the next five years will grow steadily. Of course, there are several approaches to mobile development: web applications designed to run on mobile devices, RIAs aimed at this market, and applications that run directly on the devices. No matter what path we choose, we will serve add mobile development skills to our group.

Software company promises to plant a tree for every bug they have

Posted By Venu Thomas

TreesForBugs

The company Kentico Software announced a very interesting initiative called “Tree for Bugs”. As explained in a press release, will plant a tree for every bug that has its software. Good for the ecology and also for the marketing strategy that has tenido. Personally as a developer, could collaborate with thousands of bugs selflessly.
Url: http://trees.kentico.com

Press Release:
Kentico Software, the Web content management system vendor, today announced it will plant a tree for every bug found in the latest version of Kentico CMS for ASP. NET. The company also promises to fix all bugs reported within 7 days.
Nashua, NH (PRWEB) August 30, 2009 – Kentico Software will plant a tree for every bug in Kentico CMS 4.1 reported by clients and it the “We are very confident about the quality of our Web Content Management platform. Although we can hardly Eliminate all bugs, our goal is to minimize their number and fix them within 7 business days, so that We can provide a stable and reliable solution to our clients, “explains Petr Palas, Kentico CEO. “We want To encourage our clients to report all bugs they encounter. And We decided to give back something that everyone on the planet will benefit from – new trees, “he adds.
“We are very confident about the quality of our Web Content Management platform. Although we can hardly Eliminate all bugs, our goal is to minimize their number and fix them within 7 business days, so that We can provide a stable and reliable solution to our clients, “explains Petr Palas, Kentico CEO. “We want To encourage our clients to report all bugs they encounter. And We decided to give back something that everyone on the planet will benefit from – new trees, “he adds.
“Kentico is great to work with, it’s a reliable and stable CMS that has been developed using best practice techniques and is thoroughly tested.” Said Andy Dale, Senior Web Developer at Last Exit, the leading interactive agency in London, UK “As version 4.1, it is a mature product with the features and a support level that has helped us to deliver a wide range of successful websites. ”
The company will publish photos of the planted trees in December. They will plant at least 100 trees, Although they expect that the number of reported bugs will be much lower. All information about the initiative is available at http://trees.kentico.com.

Page 1 of 1112345»...Last »