A.K.A Self notes

Browsing: / Home
Shortlink

User Interface for Humans – Get Rid User’s Doubts

By djakapm on March 8, 2012 in Personal, Social, Tips and tricks

I have noticed there are changes made on application UI recently, they are more human friendly.

Instead they use some short wording on a button, now they tend to use longer wording to make sure the user confident when she needs to take some action e.g clicking a link or a button.

I feel that creating a comforting UI is a part that make an application`s success, regardless whether it is a web or desktop application. When a user feel afraid or unsure of herself it will also affect her productivity when using our application, then our application give more negative effects rather than positive effects.

For example when you want to do some important task such as:
doing some online payment or decision making in an application the last thing you want is a shady and unclear button that say “Add”, “Pay” or “Delete”.
Its better to have a bit longer wording but save the users from doubts, we can use wording like “Add Current Item to Chart” or “Pay Pending Monthly Credit Card Bills”.

The common example is the save dialog box in today application usually they contains three button that says
“Yes”,”No”,”Cancel” but I realize they change the wording to be more intuitive like so: “Save Changes”,”Don`t Save Changes”,”Cancel”. I have to admit that I rarely read the dialog box message, I tend to read the buttons now, whereas in the past I would read the dialog box first(which is still a good habit for avoiding some unintended mistakes :D ).

As a common law that if the user feel secure and comfy when using our application, their productivity can be ensured.

This is my to two cent on today`s application UI.So what do you think?
Don`t hesitate to leave a comment….

Cheers..

Share this on: Mixx Delicious Digg Facebook Twitter
Shortlink

Mass Effect 2 ARM DLC Crack Only

By djakapm on February 14, 2012 in Game, Personal, Social

For you who looking for crack-only for the ARM DLC. Just click the link at the bottom. I am using Razor 1911 Release.

Download Crack

Share this on: Mixx Delicious Digg Facebook Twitter
Shortlink

I am a JavaCodeGeeks Community Blogger

By djakapm on February 9, 2012 in Personal, Social

In this post I would say thanks to Ilias Tsagklis at JavaCodeGeeks for the opportunity to become JavaCodeGeeks Community Blogger

For small time programming blog writer like me this is very big. Its bring motivation for beginner blog writer such as me to create better entry and to update the blog more often. Thanks Ilias!!

Share this on: Mixx Delicious Digg Facebook Twitter
Shortlink

Creating Feed Reader using XUL – Part 2

By djakapm on February 8, 2012 in CSS, Javascript, XUL

Add Real Application Features

In the first part We already created a simple application that can be use to get started. In the first part also we have learned how the XUL event and the UI interact. It is no different than creating a web page and use JavaScript for UI events.

In this post I am not going to talk all the details, I will only show and describe some highlights for the application.

Added Features

  • Add subscription(improved)
  • Remove subscription

Highlights

  • using jQuery for ajax request
  • add feed entry to listbox
  • show feed content in the browser
  • add listener to web progress
  • add status bar
  • when to use jQuery selector and when not

This is the latest UI for our Feed Reader application.

Add Subscription Improved!

Show feed name in the tree instead of feed URL. Below snippet show the code that used for adding the feed to the tree.

function addFeedToList(theUrl,data){
  var title = $(data).find("rss > channel > title").text();
  var treeNode = document.getElementById(subscriptionNodeId);
  var item = document.createElement("treeitem");
  var row = document.createElement("treerow");
  var cell = document.createElement("treecell");
  cell.setAttribute("label",title);
  cell.setAttribute("value",theUrl);
  row.appendChild(cell);
  item.appendChild(row);
  treeNode.appendChild(item);
  setAppStatus("Feed from "+theUrl+" added");
}

theUrl variable contains the feed URL whereas data variable contains RSS XML text. After we parse the data, we can obtain the feed title and assign it to the treecell label attribute and the feed URL to the treecell value attribute, such as in the following code.

  var cell = document.createElement("treecell");
  cell.setAttribute("label",title);
  cell.setAttribute("value",theUrl);

now we can see the feed title instead of feed URL.

Remove Subscription

When removing a subscription, basically user need to select the feed first than choose the “Remove Subscription” menu. Here are the snippet of the function that does it.

function onRemoveSubscription(event){
    var tree = document.getElementById(feedTreeId);
    if(tree.currentIndex == -1 || tree.currentIndex == 0){alert("Please select a subscription to remove.");return;}
    var currentItem = tree.view.getItemAtIndex(tree.currentIndex);
    var cellIndex = 0;
    var subscriptionName = tree.view.getCellText(tree.currentIndex, tree.columns.getColumnAt(cellIndex));
    var ans = confirm("Are you sure to unsubscribe from \""+subscriptionName+"\" ?");
    if(ans){
        currentItem.parentNode.removeChild(currentItem);
    }
}

The main code that remove the subscription is this.

currentItem.parentNode.removeChild(currentItem);

Now we already have some of the basic features Add and Remove subscription to/from our application.

Highlights

After I describe the high level features and how to achieve it, now for some details regarding those features.

Using jQuery for AJAX request, Why not using XUL built-in AJAX system

I am using jQuery when comes to AJAX request because I am familiar with it and also I have tried the built-ind XUL’s AJAX system and it does not work. Maybe I have missed something obvious here. But I need a running prototype fast and I do not have time to search why the built-in XUL’s AJAX does not work.
There has been a question out there similar to what I have encountered.

So we already familiar with the jQuery code to send an AJAX request such as this one

function readNewFeedFrom(theUrl){
    if(!theUrl){return;}

jQuery.support.cors = true;
$.ajax({
      url: theUrl,
      contentType:"text/xml",
      success: function(data){
        addFeedToList(theUrl,data);
        showFeedItem(data);
        setAppStatus("Feed from: "+theUrl+" added.");
      },
      error:function(jqXHR, textStatus, errorThrown){
          alert(textStatus);
      },
      beforeSend:function(jqXHR, settings){
          setAppStatus("Adding feed from: "+theUrl);
      }
    });
}

Basically it is quite simple but very IMPORTANT. But one thing to remember that when using jQuery especially on the AJAX request part you need to activate the cross-domain scripting flag on jQuery, it showed the following line.

jQuery.support.cors = true;

If this flag set to false the AJAX request will not work and the error handler on the AJAX request will be executed.

Add Feed Entry to Listbox

<listbox id="feed-item" onclick="onFeedItemSelected()"></listbox>

JavaScript code

function showFeedItem(data){
  var feedItemList = $("#"+feedItemId);
  clearFeedItemList(feedItemId);
  $(data).find("rss > channel > item").each(function(idx){
      var title = $(this).find("title").text();
      var link = $(this).find("link").text();
      var item = document.createElement("listitem");
      item.setAttribute("label",title);
      item.setAttribute("value",link);
      feedItemList.append(item);
  });
}

As you can see I have used the jQuery to read the feed XML and iterate all the item tags.

var feedItemList = $("#"+feedItemId);

var item = document.createElement("listitem");
item.setAttribute("label",title);
item.setAttribute("value",link);
feedItemList.append(item);

In the code above it is very easy to add an item to the listbox, just append the new item to it.

Show feed content in the browser

At this point we already manage to add new subscription and show its item in a listbox, the last thing to do is to display
the feed item contents in a browser. Luckily in XUL there is already a browser component.
The following snippet shows how to display the feed item content in the browser.

function onFeedItemSelected(event){
    var feedItem = document.getElementById(feedItemId);
    var currentItem = feedItem.currentItem;
    var url = currentItem.getAttribute("value");
    var title = currentItem.getAttribute("label");
    var browser = document.getElementById(feedItemViewId);
    browser.setAttribute("src",url);
}

After you set the src attribute of the browser component it will start to render the URL.
We need to know what is being loaded and rendered by the browser we need to “listen” to this process progress.

Add listener to web progress

This part has more code to show because it a bit tricky. First we need to create a listener for the process.

function configureProgressListener(){
    var obj = new Object();
    obj.wpl = Components.interfaces.nsIWebProgressListener;
    obj.QueryInterface = function(aIID) {
        if (aIID.equals(obj.wpl) ||
        aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
        aIID.equals(Components.interfaces.nsISupports)) return this;
        throw Components.results.NS_NOINTERFACE;
    }

obj.onStateChange = function(aProgress, aRequest, aFlag, aStatus) {
        if (aFlag &amp; listObj.wpl.STATE_START) {
            setAppStatus("Loading entry "+aRequest.name+"...");
        } else {
            if (aFlag &amp; listObj.wpl.STATE_STOP) {
                if ( aFlag &amp; listObj.wpl.STATE_IS_WINDOW ) {
                    // This fires when ALL load finish
                    setAppStatus("Entry loaded, well almost.");
                }
                if ( aFlag &amp; listObj.wpl.STATE_IS_NETWORK ) {
                    // Fires when ALL load are REALLY over,
                    // do something "final" here
                    // (my two cents)
                    setAppStatus("Entry loaded.");
                }
            }
        }
        return 0;
    }   

return obj;
}

The actual listener class is the nslWebProgressListener which is attached to plain JavaScript object obj.

var obj = new Object();
obj.wpl = Components.interfaces.nsIWebProgressListener;

The original snippet is here
We need to override the onStateChange function in order to “listen” to the process’s progress.
Now need to find a perfect place to show the progress to the user. Here comes the statusbar.

Add status bar

The status bar will shows the resource being loaded and rendered on the browser.

The XUL

  <statusbar>
    <statusbarpanel label="" id="app-status" flex="1"/>
  </statusbar>

The JavaScript

function setAppStatus(status){
    $("#"+appStatusId).attr("label",status);
}

When to use jQuery selector and when not

To avoid confusion when to use or not to use the jQuery selector I will try explain.

Do use jQuery when you only need

  • To manipulate DOM common operation such as setting an attribute or appending child node
  • To shorten the code instead using document.getElementById("tag_id") instead you can use $("#tag_id")

Example:

$("#app-status").attr("label",status);

Do not user jQuery when you need

  • To call XUL specific method on a XUL tag such as:

Example:

This will work

var tree = document.getElementById(feedTreeId);
var currentItem = tree.view.getItemAtIndex(tree.currentIndex);

This will not work

var tree = $("#"+feedTreeId);
var currentItem = tree.view.getItemAtIndex(tree.currentIndex);

Because when you get the DOM object using jQuery style it will resulting a jQuery object and the methods you are trying to call are not available. So be careful. Alright its a wrap, but I know that there are some improvements can be made. I really expect your feedback about the tutorial :D , because I am still learning to and I hoping that I can learn together with you.

You can download the code here

Next feature is to persist the feed we already save in the Feed Reader and load it in start up. Cheers

Share this on: Mixx Delicious Digg Facebook Twitter
Shortlink

Creating Feed Reader using XUL – Part 1

By djakapm on February 5, 2012 in CSS, Javascript, XUL

What is XUL

XUL stand for XML User interface Language. XUL is maintained by Mozilla. It contains XML User Interface Language(XUL), Javascript and CSS for easy skinning to create desktop application.

Why XUL?

I have Java Swing background, I been there long enough to know that creating kick-ass look and feel on swing is not easy. The Mozilla team use XUL to create Thunderbird email client and Firefox web browser.The easiest styling I have known is CSS, and XUL just about that.

Layout, in swing layout is abit painful if you are using the built-in layout manager, although there are some of open source swing layout managers are very good such as: JGoodies Form Layout and MigLayout.
Layout also improved in Eclipse SWT. but nothing is more simple than plain old CSS.

XUL also has the most known programming/scripting language JavaScript and I am sure most of the web developers are very familiar with JavaScript so it will be very easy to learn.

Download XUL Runner

First you need the XUL runner from Mozilla its runtime for XUL-based applications. You can download the XUL runner here. Choose the one that suit your OS. I am using 1.8.0.1 version.

Download Orangevolt Eclipse Plugins

I am using Eclipse to create the application but you can start developing it using simple text editor, the advantage is you don`t have to create a set of default files and folders that require by the XUL because it quite a lot folders to create.

Oragevolt`s Eclipse plugins needed to create XUL application project you can download the plug in using the “Help > Install new software” menu on Eclipse.

The plugins url is http://eclipsexul.sourceforge.net/update-site. Install the plugins and you are ready to go (almost).

After the installation finished, you need to tell eclipse where the XUL Runner are.

Go to “Window > Preference”, type XUL on the textbox

You are ready now, create new XUL project on Eclipse, I named mine is “Feed Reader” this application will try to imitate google reader behavior(barely try hahaha…) just for example.

Eclipse will create the folder structure for you and several default files.

Above picture is the default folder structure that Eclipse has created for you. If you run the application without editing anything. It will show more or less like the following picture.

Now edit the file called feed_reader.xul to something like the following snippet

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<!DOCTYPE window SYSTEM "chrome://feed_reader/locale/feed_reader.dtd">

<window
  	id     = "&app.id;"
  	title  = "&app.title;"
  	width  = "800"
  	height = "600"
  	xmlns  = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  	onload = "onLoad();">

  	<script src="feed_reader.js"/>

  	<toolbox>
	<menubar>
		<menu id="help-menu" label="&menuHelp.label;" accesskey="&menuHelp.accesskey;">
      		<menupopup>
        		<menuitem label="&menuitemAbout.label;" accesskey="&menuitemAbout.accesskey;" oncommand="onAbout();"/>
      		</menupopup>
    	</menu>
  	</menubar>
  	</toolbox>
  		<hbox flex="1">
	    <tree width="300">
	      <treecols>
	          <treecol id="header" label="Feed Name" primary="true" flex="10"/>
	          <treecol id="header" label="Count" flex="1"/>
	      </treecols>  

	      <treechildren>
	        <treeitem container="true" open="true">
	          <treerow>
	            <treecell label="Subscriptions" />
	          </treerow>  

	          <treechildren id="subscription-tree">
	            <!--treeitem>
	              <treerow>
	                <treecell label="Daily WTF"/>
	                <treecell label="6"/>
	              </treerow>
	            </treeitem-->
	          </treechildren>
	        </treeitem>  

	      </treechildren>
	    </tree>
	     <splitter collapse="before" resizeafter="farthest">
    		<grippy/>
  			</splitter>
			<listbox flex="1">
			  <!-- listitem label="Butter Pecan"/-->
			</listbox>
  		</hbox>

</window>

now if you run the application it will resulting a single window a treeview and a list, I know that this application it just a skeleton application. I just want to show you how XUL application works, more in-depth topics will follow :D .

Adding The Main menu

In the default application the “Help” main menu is the only menu. Now we want to add “Subscription” menu and “Add Subscription” sub-menu, here are the steps add these lines after the <menubar></menubar> tag.

<menu id="subscription-menu" label="&menuSubscription.label;" accesskey="&menuSubscription.accesskey;">
      		<menupopup>
        		<menuitem label="&menuitemAddSubscription.label;" accesskey="&menuitemAddSubscription.accesskey;" oncommand="onAddSubscription();"/>
      		</menupopup>
    	</menu>

also you need to edit the feed_reader.dtd file in

/feed_reader/chrome/locale/en_US/feed_reader folder and add these lines

<!ENTITY menuSubscription.label "Subscription">
<!ENTITY menuSubscription.accesskey "S">
<!ENTITY menuitemAddSubscription.label "Add Subscription">
<!ENTITY menuitemAddSubscription.accesskey "A">

Save all and try to run the application again. Voila! the “Subscription” menu appear.

I want that after user clicks the “Add Subscription” menu a simple dialog appear to receive the target url feed, something like this.

Here are the steps to create the dialog

Create new files called add_feed_dialog.xul and add_feed_dialog.js in /feed_reader/chrome/content/feed_reader/ folder.

Modify the add_feed_dialog.xul file with the following xml

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
<dialog id="add-feed-dialog" title="Add Subscription"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  buttons="accept,cancel"
  buttonlabelcancel="Cancel"
  buttonlabelaccept="Add"
  onload="onLoad();"
  ondialogaccept="return doOK();"
  ondialogcancel="return doCancel();">
    <script src="add_feed_dialog.js"/>
 	<label control="subscription-url" value="Enter URL:"/>
  	<textbox id="subscription-url" value=""/>
  	<label value="e.g: http://blog.djakapm.com/feed/"/>
</dialog>

also modify add_feed_dialog.js

function doOK(){
	var url = document.getElementById("subscription-url").value;
	if(!url){
		alert("Please enter valid URL");
		return false;
	}

	window.arguments[0].out = url;
	return true;
}

function doCancel(){
	return true;
}

Ok we are done creating the dialog but its now used yet by the application main window.

Now open feed_reader.js file and modify it. We need to add new function to it.

function onAddSubscription(e){
	var params = {out:null};
	  window.openDialog("add_feed_dialog.xul", "",
	    "chrome, dialog, modal",params).focus();

	  var treeNode = document.getElementById("subscription-tree");
	  var item = document.createElement("treeitem");
	  var row = document.createElement("treerow");
	  var cell = document.createElement("treecell");
	  cell.setAttribute("label",params.out);
	  row.appendChild(cell);
	  item.appendChild(row);
	  treeNode.appendChild(item);
}

As you can see the function name is the same as the function name when you are adding the
“Add Subscription” sub-menu. It seems familiar right?! :D . Please pay attention to these lines.

var params = {out:null};
  window.openDialog("add_feed_dialog.xul", "",
   "chrome, dialog, modal",params).focus();

Above line is the way XUL passes variables to the dialog window, as you can see the params is passed to the window.openDialog function which will open the dialog window.
The following line is how the dialog window assign a value to the passed variable from outside.

	window.arguments[0].out = url;

Now you can click the “Add Subscription” menu and enter your favourite feed URL and the URL will be added to the treeview, like in the following picture.

Ok, thats it you can download the complete source code for this tutorial here. Its a complete Eclipse project so you can directly import it to your Eclipse IDE.Cheers

UPDATE

I forgot to mention that Orangevolt plugins has some problem when opening XUL perspective on Eclipse as it stated here. But I think that it still usable, currently I am using my Java perspective on Eclipse. I would try to get better IDE for XUL development.

Your suggestions, critics and comments are welcome.

Share this on: Mixx Delicious Digg Facebook Twitter
Shortlink

Setting up Trac on Localhost on Ubuntu 11.10

By djakapm on January 25, 2012 in Tips and tricks

Hi,

Today I just want to show you how to set up Trac on localhost, the tutorials I have found are scattered in a way.
So I hope with this post I will sum it up somehow.

I am using Trac 0.12.2

First you need to follow all the steps from Trac on Ubuntu help page

What I want is that my local Trac could be accessed locally and remotely

such as:

http://localhost/trac/my_project

and

http://192.168.100.118/trac/my_project

The difference is that I put two virtual host inside /etc/apache/sites-enable/trac file(the file name could be differ than yours).

Here are the contents of the trac file

<VirtualHost 192.168.100.118:80>
  ServerName localhost
  DocumentRoot /var/trac/projects

  WSGIScriptAliasMatch ^/trac/([^/]+) /var/trac/projects/$1/deploy/cgi-bin/trac.wsgi
  <Directory /var/trac/projects>
    WSGIApplicationGroup %{GLOBAL}
    Options Indexes +ExecCGI +SymLinksIfOwnerMatch
    AllowOverride None
    Order allow,deny
    allow from all
  </Directory>

  <LocationMatch /trac/[^/]+/login>
   AuthType Basic
   AuthName "trac"
   AuthUserFile /var/trac/.passwd
   Require valid-user
  </LocationMatch>

</VirtualHost>

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /var/trac/projects

  WSGIScriptAliasMatch ^/trac/([^/]+) /var/trac/projects/$1/deploy/cgi-bin/trac.wsgi
  <Directory /var/trac/projects>
    WSGIApplicationGroup %{GLOBAL}
    Options Indexes +ExecCGI +SymLinksIfOwnerMatch
    AllowOverride None
    Order allow,deny
    allow from all
  </Directory>

  <LocationMatch /trac/[^/]+/login>
   AuthType Basic
   AuthName "trac"
   AuthUserFile /var/trac/.passwd
   Require valid-user
  </LocationMatch>

</VirtualHost>

After you change the apache site configuration you should restart the apache web server using the following command:

sudo service apache2 reload

Ok thats it.

I hope it helped.

Share this on: Mixx Delicious Digg Facebook Twitter
Shortlink

JSON web service with Java and Axis2

By djakapm on December 15, 2011 in Java, Technology, Tips and tricks

I have recently met a client who asking me to rebuild their legacy product using Java web service.
They want it modular and easy to use. The first thing crossed my mind is using restful approach.

But there is only thing that bothers me, Java restful approach is using XML!, I would prefer a simpler way to communicate, easy to understand and parsed data, so Json it is. I started google-ing a little and came across this excellent blog.

I read the blog but it seem there some minor problem which they (he and the blog commenter) already solved.
So I am not here to revise on anything just to sum it up so it will be easier for you to build a Json web service with Java and Axis2.

I am using Java 1.7 and Apache Tomcat 7.0.

The steps are not so different with my reference blog, but I have minor modification on the steps.

1. Download the Axis2 war that includes jetisson patch and DynamicRespondHandler Axis2 Module here
Note that the Axis2 above is pre-configure,but still I would like to show what the changes are:

- Added module reference to the axis2.xml file

<module ref="DynamicResponseHandler"/>

- Added Json Message formatters

<messageFormatter contentType="application/json" class="org.apache.axis2.json.JSONMessageFormatter"/>

<messageFormatter contentType="application/json/badgerfish" class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/>

- Added Json Message builders

<messageBuilder contentType="application/json" class="org.apache.axis2.json.JSONOMBuilder"/>

<messageBuilder contentType="application/json/badgerfish" class="org.apache.axis2.json.JSONBadgerfishOMBuilder"/>

2. Download you favorite Java application server, in this case I am using Apache Tomcat 7.0.

3. Deploy Axis2 war to your application server, in my case I just copy the Axis2 war to Tomcat`s webapps folder.

4. Start your application server and open this URL using your web browser (your URL might slightly different then mine, depend on your HTTP port setting on your application server):

http://localhost:8080/axis2/services/Version/getVersion?response=application/json

your browser should shows this:

Axis2 web service result

So that is the start, I hopefully can post more about this in the future. Cheers.

Share this on: Mixx Delicious Digg Facebook Twitter
Shortlink

Cannot login to Delicious using Yahoo account

By djakapm on October 7, 2011 in Social, Tips and tricks

If you are having trouble login to your Delicious account using your Yahoo email.
Try to use “forgot password” link at Delicious login page.
Type your Delicious username and click “Send”
The “reset password” link will be sent to your Yahoo email.

Hope it helped.

Share this on: Mixx Delicious Digg Facebook Twitter
Shortlink

Cannot run program “chmod” hadoop

By djakapm on September 5, 2011 in Java, Tips and tricks

This is a bug in hadoop and still exist in 0.21.0.
If you want to run hadoop in Windows you will need Cygwin
Especially the chmod program.

You should just need to add Cygwin’s “bin” directory to Windows’ PATH:

* Control Panel -> System and Security -> System -> Advanced System Settings
* Click on the “Advanced” tab
* Click “Environment Variables” button
* Select “Path”, click “Edit”
* Add “;C:\cygwin\bin” to the end of the “variable value”

Assuming that you installed the Cygwin in “C:\cygwin\” add semicolon if needed before the path, please refer to your installation folder of Cygwin.

source

Share this on: Mixx Delicious Digg Facebook Twitter
Shortlink

Rock Star Programmer Not Always A Good Mentor

By djakapm on June 14, 2011 in Java, Social

The Sweet Part

You have all known that a Rock Star Programmer can kill a “bug” in a blink of an eye.
They have speed as fast as lightning when it came to programming.
They can solve almost hard issues on a system easily. Some of us may worship them.
They have their own dimensions and worlds.

The Bitter Part

Here comes the woe. Because those Rock Start Programmer have their own world.
Sometimes they find hard to explain their code to other, that not shared the same world as they.
They often throw a cold, hard and harsh sentence like “Just read my code, dude!!”.
We, programmers are very fluent when talking to machines through our code. But sometimes we need to tal to human also. There are few things that made talking to human so much different than talking to machines.
Subtlety, ethics the things that machines don`t really care nor understand.
Some people who have ability to mentor, guide and teach others are remarkable people. Especially our fellow programmers. The ability express and explained their own views and ideas to their peers in the subtle and clear as possible way is priceless.

In a team this can be a disaster who could have reap off the trust of the team.
Because lack of knowledge about the project, because all the vital information is contained in the Rock Star Programmer`s head.
I know that not all Rock Start Programmer is suck. But sometime they all the wisdom and knowledge about the system in their head, once they gone, they took all the wisdom and knowledge with them and there was chaos.

We the common programmer really need your “wisdom” and “knowledge” about the system,
so please write all your “wisdom” and “knowledge” on a file,wiki or plain paper,
its not that hard to write it down.
So we can avoid the chaos when you are gone. Thanks.

Share this on: Mixx Delicious Digg Facebook Twitter
1 2 … 7 Next »

Search

Visitors

Locations of visitors to this page

Social

Ads

RSS RSS Feed

  • User Interface for Humans – Get Rid User’s Doubts
  • Mass Effect 2 ARM DLC Crack Only
  • I am a JavaCodeGeeks Community Blogger
  • Creating Feed Reader using XUL – Part 2
  • Creating Feed Reader using XUL – Part 1

Copyright © 2012 A.K.A Self notes.

Powered by WordPress and News.