Showing posts with label Nice Article. Show all posts
Showing posts with label Nice Article. Show all posts

Wednesday, July 15, 2009

10 ways to be liked in your job interview

Everyone wants to make a good impression in job interviews. But did you know that too much smiling or asking too many unrelated questions can circumvent that goal?
I received a press release in my e-mail box this morning for a new career guidance book. Normally, those things go in one eye and out the other, but the title of this book just made me laugh.
The book, I Hate People! Kick Loose from the Overbearing and Underhanded Jerks at Work and Get What you Want Out of Your Job, is written by Jonathan Littman and Marc Hershon. As you know, I favor advice that doesn’t lose itself in the gray areas. Simply stated, there are some tried and true facts about interviewing, and it’s refreshing to see someone point them out in blunt terms.
Here, from the book, are 10 ways to be liked in your job interview. My notes are in brackets following each point.

1. Don’t be a smiley face.
Excessive smiling in a job interview is seen for what it is — nervousness and a lack of confidence. A Smiley Face exudes phoniness, which will quickly be picked up by the interviewer. Instead be thoughtful and pleasant. Smile when there’s something to smile about. Do a practice run in front of a mirror or friend.
[Look, I'm as friendly as the next guy, but if you're wearing a stuck-on smile while I'm describing the rigors of the job, I'll just be creeped out.]

2. Don’t be a Know-It-None
Your job is to be knowledgeable about the company for which you’re interviewing. Random facts about last night’s episode of Dancing With The Stars episode or your favorite blog will not get you the job. Never feel you have to fill an interview with small talk. Find ways to talk about serious subjects related to the industry or company. Pockets of silence are better than padding an interview with random babble.
[I think small talk is OK if the interviewer starts it. But be hyper-aware of your interviewer's demeanor. If he or she starts to zone out, nip it.]

3. Don’t Sweat
You can lose a job by wearing an undershirt or simply a little too much clothing. Sweaty palms or beads on your forehead will not impress. You are not applying to be a personal trainer. Sweat will be seen as a sign of weakness and nervousness. Do a practice run with your job interview outfit in front of friends. The job interview is one place you definitely don’t want to be hot.

4. Put down that Stop Sign
Interviewers are seeking candidates eager to take on challenging projects and jobs. Hesitance and a naysaying mentality will be as visible as a red tie — and seen as a negative. Practice saying “yes ” to questions about your interest in tasks and work that might normally give you pause.
[If you're naysaying in an interview with me, I won't be able to show you the door fast enough. I realize that some people consider naysaying a method for displaying their knowledge of a situation, but if you're negative at the interview stage of the relationship, what can I expect from you as an employee?]

5. Don’t be a Sheeple
Asking the location of the lunchroom or meeting room will clue the interviewer into your lack of preparation and initiative. Prepare. Don’t ask questions about routine elements or functions of a company: where stuff is, the size of your cube and company policy on coffee breaks.
[At first I thought this tip meant that you should wander around aimlessly in the office building instead of asking someone where the interviewer is located. But I think they mean during the interview itself. Good points.]

6. Don’t be a Liar Liar
Studies show that employees lie frequently in interviews. Lying won’t get you the job. In a job interview even a slight exaggeration is lying. Don’t. Never stretch your resume or embellish accomplishments. There’s a difference between speaking with a measured confidence and engaging in BS. One lie can ruin your entire interview, and the skilled interviewer will spot the lie and show you the door.
[I once had a job candidate claim that he had worked at a now-defunct company. The problem is, I'd worked at that company nearly from its inception and knew that he'd never been employed there.]

7. Don’t Be a Bad Comedian
Humor tends to be very subjective and while it may be tempting to lead your interview with a joke you’ve got to be careful about your material. You probably will know nothing about the sensibilities of your interviewer, let alone what makes them laugh. On the other hand, nothing disarms the tension of a job interview like a little laughter, so you can probably score at least a courtesy chuckle mentioning that it’s “perfect weather for a job interview!”
[I've written about the subjectivity of humor in an interview before. When it's done right -- that is, you're engaging in a quip-trading tennis game of sorts with your interviewer -- then all is good. But it's a fine line to walk. Remember, too, that some people have no discernible sense of humor.]

8. Don’t Be High Maintenance
If you start talking about the ideal office temperature, the perfect chair for your tricky back, and how the water cooler needs to be filled with imported mineral water, chances are you’ll be shown a polite smile and the door, regardless of your qualifications. Nobody hiring today is going to be looking for someone who’s going to be finicky about their workspace.

9. Don’t Be A Minute Man
At every job interview, the prospective hire is given the chance to ask questions. Make yours intelligent, to the point and watch the person across the desk for visual cues whether you’ve asked enough. Ask too many questions about off-target matters and you’ll be thought of as a Minute Man, destined to waste the company’s resources with insignificant and time-wasting matters.
[Yes -- don't ask questions just to be asking them or to exhibit your interest. Ask questions that you really want answered.]

10. Don’t Be A Switchblade
Normally the Switchblade is thought of a backstabber, often taking credit for someone else’s work. In an interview setting, the Switchblade can’t help but “trash talk” his former employer. If you make it seem like your former workplace was hell on Earth, the person interviewing you might be tempted to call them to find out who was the real devil.

Reference
1) 10 ways to be liked in your job interview



Saturday, July 11, 2009

Intel collaborated with Google on Chrome OS

A representative confirmed this to us this morning.He said: "We have been privy to the project for some time and we have worked with Google on a variety of projects, including this one. We welcome Google's move here."
The statement is likely to throw Microsoft into total panic. Intel and Microsoft were always "friends", but some have speculated they've always been enemies.



Intel put its weight behind a light weight operating system for netbooks, based on a Linux kernel, and called Moblin. Some had speculated that the Google move would throw Intel, as well as Microsoft, into disarray.It seems not.
Now Intel has put its cards on the table, and it must be up to Microsoft to respond to the direct challenge.Microsoft was unavailable for comment at press time. And could not be contacted for comment.

Reference
1) Intel collaborated with Google on Chrome OS


Chrome OS for the clueless: What it means for real people

Late Tuesday night, Google, the company that became a tech giant through search and advertising company, announced that it's branching out into an unrelated direction, the operating system business. It will release next year the Chrome OS, a free competitor to Microsoft's Windows operating system. It will be targeted at Netbooks, a class of small, inexpensive computers, although eventually it will make its way to full-powered notebooks and desktop computers. It will be designed for accessing Web applications (like Google's own GMail and Google Docs), and it will take a lot of design and technology cues, as well as its name, from Google's browser, Chrome.
What does this mean to people who are thinking about buying a new computer now, or next year? Is the Chrome OS something to get excited about, or even wait for?
We won't know for sure what the operating system looks like until it comes out, which answers the second question handily: do not wait. If you need a new computer now, spend the money and get the use out of the machine while Google figures out how and when to get the Chrome OS out the door.
But to the other question: yes, this is very interesting, and potentially could cause some transformations in the computer industry, although they may be more subtle than Google--and Microsoft's detractors--hope.


Who cares about operating systems?
Computers need operating systems. Even computers that do nothing but run Web browsers need one. An Application like a Web browser--Internet Explorer, Firefox, Google Chrome--needs to run on top of a platform that gives it access to the hardware resources of the computer (the memory, the persistent storage, access to the networking and communications hardware, the screen, the keyboard, and so on); to peripherals plugged into a computer (printers, cameras that connect, memory cards); to the other software on the the computer (like the system for storing files); and lastly, to you, the user.
Or do they? What if you combined the operating system's functions with a browser's functions, which include accessing and displaying Web pages, keeping track of bookmarks and passwords, and connecting to computer-attached resources like Webcams?
Google is answering that question with Chrome OS. Google is saying, with this product, that the modern computer user spends so much time working with Web-based resources that the main control system for the computer should be the browser, not the operating system. Furthermore, Google sources tell us that the Chrome OS experience will bear little resemblance to existing way that users interact with their computer's main control program. A person familiar with the Chrome OS project told us, "All existing operating systems predate the Web, and the user interfaces are stuck in a desktop metaphor." The Chrome OS, we're led to believe, will be very different.
How? We don't know. It's a safe bet that the Chrome OS will lean more heavily on so-called "cloud storage" products--like Google's own productivity suites, Google Docs--that let users store their data and documents not on their computers but rather on the systems of the Web apps they are running. The great thing about cloud storage is that it's untethered to any individual user's computer. Log in to your Google Docs account from anywhere, and there's your whole workspace, right in front of you. It's liberating.
Google may also take a cue from its own e-mail application, GMail, which blends the traditional idea of having folders for e-mail with the concept of "labels." In GMail, you can drag messages into folders to file them, or you can drag folders (or labels) over messages to categorize them. It's the same thing, but the hierarchy people are used to in operating systems, where a file is in one folder at a time, and the folder may be nested in another folder, is simply not there. Folders and labels are interchangable and far more fluid.
But in Windows 7, Microsoft's next operating system, Folders are also less rigid than they've been in previous versions of Windows.We can also expect that the Chrome OS will borrow user interface elements from Chrome the browser--like a tabbed metaphor for switching between "apps," and the mind-reading command line (address bar in the browser). It may also evidence Google's traditional obsession with clean (if not necessarily attractive) design and speed. The Chrome OS should be fast.

A ruse by any name
But under the hood, the Chrome OS will still be a traditional operating system. It will be an adaptation of Linux, a free operating system lovingly maintained, in various versions, by a global community of programmers. The Chrome OS will likely borrow the gritty bits of the operating system, the parts that connect to the computer's CPU, the memory, and other hardware. Google's most visible contribution, in addition to the human resources it puts on the project of working at the core of the operating system, will be in the user interface and how the OS handles user data and files.
Will users buy it? They haven't so far. The first Netbooks came with Linux-based operating systems, and users shunned them (or more specially, returned them to their points of purchase) in favor of computers running yesterday's version of Microsoft Windows, XP. Even though XP adds cost to a computer due to the high licensing fee that the manufacturers have to pass on to consumers, those consumers voted to pay the extra money for the familiarity of Windows.
The Chrome OS could well be better than any of the Linux variants that have come before it. It will certainly be cheap--Google says it will be free to manufacturers. Google also says it will be safer, thanks to technologies like "sandboxing" from the Chrome browser that prevent one app from infecting or stealing data from another.
But no matter how much better the Chrome OS is than Windows, users are still accustomed to Windows, and the first target market for Chrome OS, the Netbook category, presents special challenges. First, it's a small market, and second, many Netbook buyers get the machines as secondary, portable computers. They already have a larger laptop or desktop and they want a mini-size, portable accessory to go with it. For those users, a radically different operating system is a stumbling block, no matter how good it is by itself.
The stakes are big enough that it's worth the shot for Google. Google makes money through targeted advertising. The more they know about what you do, the better the ads you get will perform. If Google knows what you do at the operating system level, they can deliver you more specific advertising content. Also, a Google OS would likely lead people to Google services--and not Microsoft's or Yahoo's. Also, this is a long-term game. Google doesn't need to knock Microsoft off its peg tomorrow, or next year. But over time, the company may be able to chip away at Microsoft's pre-eminence as the leading operating system vendor, or at the very least force Microsoft to make its own operating systems more Web-friendly, which benefits the most popular Web service provider there is: Google.
Google needs to start spreading the word on the Chrome OS now, and not a year from now when the product comes out, to get developers and computer manufacturers excited about the platform, and working on compatible products. That takes time. It's also an area where Microsoft has an excellent track record; the Windows company spends a ton of money and energy on developer relations.
The most likely short-term impact the Chrome OS will have on the Netbook market is that it may encourage Microsoft to drop its prices on the Windows 7 licenses it sells to manufacturers. But until developers start writing major software for the operating system (games, photo editors, and major productivity suites like Office), it's very unlikely that Google will have much of an impact on Windows sales.
Meanwhile, it's worth noting that Microsoft is hardly standing still. Its new Bing search engine is actually quite good in comparison to Google's most popular product, Google Search, and the upcoming version of Microsoft Office will have Web capabilities that put it in competition with Google's online word processor and spreadsheet.
A year from now, there will likely be Google Chrome OS Netbooks (and possibly larger laptops) available for sale alongside Windows-powered models. Will people like me recommend them? Maybe, for some users, in particular those on tight budgets and those with no or only limited knowledge of Windows or Apple's OS.
Building an operating system is a major project, but it's only part of the job. Even if the Google OS is fantastic, it will need to steal customers accustomed to using Microsoft and Apple devices. And even if those customers want to be convinced that Google's product is better, they may find it very difficult to make the switch.

Reference
1) Chrome OS for the clueless: What it means for real people



Thursday, July 9, 2009

Introducing the Google Chrome OS

It's been an exciting nine months since we launched the Google Chrome browser. Already, over 30 million people use it regularly. We designed Google Chrome for people who live on the web — searching for information, checking email, catching up on the news, shopping or just staying in touch with friends. However, the operating systems that browsers run on were designed in an era where there was no web. So today, we're announcing a new project that's a natural extension of Google Chrome — the Google Chrome Operating System. It's our attempt to re-think what operating systems should be.

Google Chrome OS is an open source, lightweight operating system that will initially be targeted at netbooks. Later this year we will open-source its code, and netbooks running Google Chrome OS will be available for consumers in the second half of 2010. Because we're already talking to partners about the project, and we'll soon be working with the open source community, we wanted to share our vision now so everyone understands what we are trying to achieve.

Speed, simplicity and security are the key aspects of Google Chrome OS. We're designing the OS to be fast and lightweight, to start up and get you onto the web in a few seconds. The user interface is minimal to stay out of your way, and most of the user experience takes place on the web. And as we did for the Google Chrome browser, we are going back to the basics and completely redesigning the underlying security architecture of the OS so that users don't have to deal with viruses, malware and security updates. It should just work.

Google Chrome OS will run on both x86 as well as ARM chips and we are working with multiple OEMs to bring a number of netbooks to market next year. The software architecture is simple — Google Chrome running within a new windowing system on top of a Linux kernel. For application developers, the web is the platform. All web-based applications will automatically work and new applications can be written using your favorite web technologies. And of course, these apps will run not only on Google Chrome OS, but on any standards-based browser on Windows, Mac and Linux thereby giving developers the largest user base of any platform.

Google Chrome OS is a new project, separate from Android. Android was designed from the beginning to work across a variety of devices from phones to set-top boxes to netbooks. Google Chrome OS is being created for people who spend most of their time on the web, and is being designed to power computers ranging from small netbooks to full-size desktop systems. While there are areas where Google Chrome OS and Android overlap, we believe choice will drive innovation for the benefit of everyone, including Google.

We hear a lot from our users and their message is clear — computers need to get better. People want to get to their email instantly, without wasting time waiting for their computers to boot and browsers to start up. They want their computers to always run as fast as when they first bought them. They want their data to be accessible to them wherever they are and not have to worry about losing their computer or forgetting to back up files. Even more importantly, they don't want to spend hours configuring their computers to work with every new piece of hardware, or have to worry about constant software updates. And any time our users have a better computing experience, Google benefits as well by having happier users who are more likely to spend time on the Internet.

We have a lot of work to do, and we're definitely going to need a lot of help from the open source community to accomplish this vision. We're excited for what's to come and we hope you are too. Stay tuned for more updates in the fall and have a great summer.


Reference
1) Introducing the Google Chrome OS


Friday, July 3, 2009

Five Ways to Speed Up Page Response Times

It’s important for your website to load as fast as possible; users want to see your web pages quickly and if you can’t give them that - then they’ll go somewhere else. In this article, you’ll find a discussion on five simple and effective techniques for speeding up your web pages.

1. Use YSlow to profile and measure your website load times
Knowing how long it takes for your website to load is the first step in determining what’s wrong. It also lets you know if you need to makes changes to your website to speed it up.Before we begin, if you haven’t installed YSlow, please do. It is a Mozilla Firefox extension which can be found at the following link:

First, let’s navigate to the Six Revisions website so we are all working with the same example (just open it in a new tab or browser window).In the bottom right hand corner of your browser, there is a bar with a odometer (see Figure 1). Next to that bar, after the page has completely loaded, you will see ‘YSlow’ followed by a number. That number is the time it took for the site to load (in seconds) in your browser. We want that number to get this number as low as possible.




Most often, what causes such a long page load time is one or a combination of the following:
  • Too many HTTP requests
  • Uncompressed (or non-minified) JavaScript files
  • No expiration headers for static graphic files

We’ll talk about all of this in a moment.

To familiarize yourself with the performance of site load times, travel around a few sites. Check out Google’s homepage, Facebook, and a few of your favorite blogs/sites and you will notice that the more images or JavaScript a site utilizes, the higher the page response time is.


Figure 3: Performance tab shows you a letter grade (A, B, C, D, F) and a percent grade (1-100).

Aside from using a CDN (which can be costly) - everything else is doable.

Grading areas
Let’s run through each grading factor. Here is a brief desciption of what each of these graded areas are, and ways to address them for optimum performance.

Make Fewer HTTP Requests:
HTTP requests happen whenever a web page requests a file from the server. These can range from scripts, CSS files, images, and asynchroneous client-side/server-side requests (Ajax and other variations of the technique).
This is the most crucial area when it comes to performance, and also one that is easily addressed with just a little bit of elbow grease. For example, caching files on the user’s machine often helps, as well as consolidating scripts, CSS, and images.

Add an Expires Header:
80% of the page load time is wrapped up in downloading scripts, images, and CSS. Most often, these elements don’t change on users’ machines. By adding some code to your .htaccess file you can cache the redundant files on the users local machine (we’ll discuss how to do this later down the article).

Gzip Components:
Gziping or compressing JS files, images, HTML documents, CSS files, etc. allows the user to download a much smaller version of a file, increasing the speed of the page load. This can reduce the tax on your server, but unzipping (uncompressing) the components can lead to slower page response times depending on the user’s browser.

Put CSS at the top
:
Putting CSS files at the top of your document allows your site to render your web pages as soon as possible while other components such as images and scripts are still loading.

Put JS at the bottom
:
With your CSS at the top of the document, inserting your JS files just before you close your tag allows you to render what seems to be a complete page to the user while these scripts propagate in the background.

Avoid CSS Expressions:
I personally never use CSS expressions (otherwise called Dynamic Properties), which is an IE-only, proprietary way of adding programming concepts (such as control/conditional structures) to CSS. As of IE8, Trident-based layout engines (which is used in IE) will no longer be supported, so it’s never a good idea to use them anyways. Rather, I script with PHP to
load different CSS style rules based on various conditions, be it a random number, time of day, or browser.

Make JS and CSS external:
Placing JS and CSS in external files allows your browser to cache them making your page load faster than those files loading inline every time the page is called.

Reduce DNS lookups
:
Whenever a user types in a domain name in their web browser address field, the browser performs a DNS lookup to the IP address. The more locations your site has to access, the more DNS lookups that must occur. Do your best to keep these low, on average it takes 60-100 milliseconds to do a DNS lookup.

Minify JS:
Unlike regular gzip compression, minifing JavaScript files is removing the unnecessary spaces, tabs, and various other selected characters reducing the overall size of the file. With a smaller file your able to have a faster page load. You can use JSMIN to minify your JavaScript.

Avoid redirects:
No matter if you do a server-side header redirect, a JS redirect, or an HTML meta redirect, your site is going to load a header with a blank page, then load your new page, increasing the time it takes for a user to get to the actual page they want to go to - So completely avoid this at all costs.

Remove duplicate scripts:
Making your browser load the same script twice will increase your page load. It’s simple math. More files equals more load time. Double check your site and make sure your not calling jQuery 2 or 3 times or any script for that matter.Whew… that was a lot, let’s move on to the next tab of YSlow just before we get into some other techniques to increase the performance of your website.


Figure 4: The Components tab.

The Components tab (Figure 4) gives you insight into what your efforts to increase your site speeds are producing. Here, you can see how long it takes for certain files to load, if those files are gziped, response times, as well as if they are cached in the users machine and when their cache expires. This is good for examining components of your site, measuring their performance and optimizing their speed.
Lastly, we have the Stats tab (Figure 5). This tab shows all the HTTP requests for both the downloaded files, as well as the cached files. The Empty cache shows the files the browser had to download in order to render the page. The Primed Cache, on the other hand, is the list of files that were already in the user’s browser cache, saving the browser from having to download those files again.

Figure 5: Stats tab.

2. Using CSS Sprites to reduce HTTP Requests
CSS Sprites may be the coolest thing since Tesla invented electricity… did I say that.. oops, I meant Edison. Well, not quite, but pretty close.CSS sprites can reduce your page load time simply by reducing the amount of HTTP requests your page makes to the server through the consolidation of your CSS background images.
Most tutorials teach you just to use CSS Sprites for navigation, where I am going to say to use it for the entire user interface of your site.First, let’s take a quick look at YouTube and how they use CSS Sprites (Figure 6). You can find YouTube’s CSS Sprite here:
YouTube screenshot of Master Sprite.

What happens is, using CSS, YouTube set a class with this image as the background (pictured above).Then with elements that need to use these images, their class is set accordingly, with the background-position CSS property set to properly align the top and left sides in that element.Let’s give it a try. We are going to use the YouTube Image as an example.
In example below, we rendered the YouTube Logo to the screen. Using the same sprite class, and same image, we are going to create a simple rollover icon.

<style>
.sprite {
background:url(http://s.ytimg.com/yt/img/master-vfl87445.png);
}

#logo {
width:100px;
height:45px;
background-position:0 0;
}
</style>

<div id="logo" class="sprite"> </div>


Now what we’ve done is allowed for all of our static site assets to come from a single HTTP request, which significantly reduces page load. When you use hover with sprites it makes for a seamless transition, unlike when you load the file on the hover state, which leaves a blank space until that file is loaded.
<style>
.sprite {
background:url(http://s.ytimg.com/yt/img/master-vfl87445.png);
}
#logo {
width:100px;
height:45px;
background-position:0 0;
}

#button {
background-position:0 -355px;
padding:5px 8px;
}

#button:hover{
background-position:-25px -355px;
}

</style>

<div id="logo" class="sprite"> </div>

<a href="#" id="button" class="sprite"></a>

3. Load your CSS first and your JavaScript last
With some websites, you simply can’t get around all the HTTP requests, as it disrupts your functionality. So as an alternative, you can "bring out the appetizer" while the "main entree" is finishing up by loading the JavaScript files last.In that regard, here’s a couple of tips:
  1. Load your CSS in your tag above your body.
  2. Load your JavaScript just before you close your tag.

What happens is that the page appears to be loaded on the user’s machine, so their eyes can begin scanning the offerings, all the while the JavaScript is catching up in the rears and loading in the background.Tip: If you don’t want to physically move the JavaScript tags, as you feel it will mess up the way your site works, I recommend using the defer property. Usage is asfollows:

<script defer='defer'>

4. Using Subdomains for parallel downloads
Parallel downloads are when you increase the simultaneous file downloads. If you have your status bar open in your footer, you will notice when traveling other websites making requests to static.domain.com and c1.domain.com.This is a great way to optimize load performance. Although you will simply be using subdomains, and the content is on the same server, the browser see’s it as a seperate server.To set this up:
  1. Create 3 Subdomains on your server
  2. Place your images in a folder in each of the subdomains
  3. Replace the image locations in your site to the paths of the newly create subdomains.

Now with JavaScript files, this doesn’t exceed beyond two parallel at a time.

5. Adding an Expires Header
Some sites are just very rich, even after using the techniques described above, performance seems as if it can be increased even more.A user can go to your website and make all the necessary HTTP requests to render the page, images, scripts, etc. When you use an Expires Header, you can cache those elements on the user’s local machine, not only increasing their speed, but also saving you bandwidth. An Expires header can be used on all your scripts, CSS, and images as well.This can be done simply by adding a line of code to your .htaccess file in the root directory of your site (if you don’t have one, you can create one - use a text editor and save it as .htaccess, then upload it to your root directory).The following .htaccess entry sets a far future expires header sometime in 2010 for file types such as .ico, .pfd, .flv (Flash source files), .jpg, .png, etc.

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|CSS|swf)$">
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
</FilesMatch>
Beware: if you make updates to a file that has a far future expires header, you’ll have to rename it (version it) or else users with primed caches won’t see the updates. For example, if you have a JavaScript file that you made updates to, use version numbers and then update all the files that refer to the old version (i.e. javascriptfile-1.0.js, javascriptfile-1.1.js)

Reference
1) Five Ways to Speed Up Page Response Times


10 Useful Firefox Extensions to Supercharge Firebug

Firebug is a revolutionary Firefox extension that helps web developers and designers test and inspect front-end code. It provides us with many useful features such as a console panel for logging information, a DOM inspector, detailed information about page elements, and much more.Though Firebug is already fully packed with features out of the box, several extensions out there can enhance its utility. In this article, you will find the 10 best Firefox extensions for Firebug that will make your life, as a developer or designer, easier.

1- Pixel Perfect


Pixel Perfect allows you to overlay web layouts and other design compositions onto a web page so that you can accurately (and easily) write your CSS and HTML. By being able to toggle a web composition on or off, web developers and designers can have a visual guide for pixel-perfect accuracy of the position and dimensions of web page components. Check out the video demonstration to Pixel Perfect in action.
2. Page Speed

Page Speed is an open source Firebug add-on for evaluating web page performance, giving developers suggestions on front-end performance optimizations they can carry out. Tests and evaluations are based on Google’s Web Performance Best Practices developed through Steve Sounder’s work. Make sure to read the Page Speed user guide for complete documentation of its many features.

3. CodeBurner



CodeBurner, released by SitePoint, extends Firebug to provide a built-in HTML and CSS reference. The extension also presents contextual information based on what is currently in Firebug’s CSS and HTML panels. The references are very helpful, showing you information about browser compatibility and W3C Recommendation compliance of page elements, among many other types of information.

4. FireRainbow
FireRainbow is a simple Firebug extension that fills in a sorely desired function: code syntax highlighting. FireRainbow colorizes JavaScript, CSS, and HTML for improved readability of code being reviewed or inspected in Firebug. There are currently over 20 different FireRainbow themes that you can choose from, giving you some options for customization.

5. Inline Code Finder
Inline Code Finder is great for hunting down inline JavaScript and CSS and is perfect for developers refactoring existing markup to separate structure (HTML) from style (CSS) and function (JavaScript). The usage of the tool is simple: it searches the entire web page for inline code and provides the developer with contextual information about the inline code it finds. The newest version gives you the ability to filter certain groups of inline code.

6. Firecookie
Developing web applications that utilize cookies can be time-consuming. Firecookie, a Firebug extension, gives you a host of options and features strictly for working with cookies. The extension allows you to view, inspect, export, and manage cookies, log cookie events (creation, deletion, etc.), and much more. The latest version of Firecookie adds several improvements such as the ability to list only cookies sourcing from a subdomain.

7. FirebugCodeCoverage

FirebugCodeCoverage is a benchmarking Firebug extension inspired by Selenium IDE for determining the percentage of your code being executed for time duration, known as code coverage. This is typically measured during automated testing to see how well the test cases are able to thoroughly test your code (with higher percentages being your goal).

8. SenSEO
SenSEO is a Firebug extension that analyzes a web page and indicates how well it is doing for single-page whitehat search engine optimization. The extension checks for correct use of meta tags, presence of a title, headings, and other relevant criterions for optimal search engine optimization.

9. Yahoo! YSlow
YSlow evaluates a web page for performance and suggests potential places for improvements. YSlow is based on YDN’s Best Practices for Speeding Up Your Web Site and gives you letter grades on one of the three predefined (or user-defined) rule sets. It has a handful of useful features such as displaying information and statistics about web page components, and integration of optimization tools such as JSLint and Smush.it.

10. Firefinder
Firefinder is for quickly finding web page elements that match CSS or Xpath selectors that you input as your search criteria. Firefinder is great for testing which page elements are affected by a CSS style rule as well as for highlighting and finding elements that match your searches.

Reference
1) 10 Useful Firefox Extensions to Supercharge Firebug


Thursday, July 2, 2009

10 ways to survive office politics

Office politics will never go away. It’s a fact of company life. However, destructive office politics can demoralize an organization, hamper productivity, and increase turnover. Here are some tips, applicable for both staff and management, on dealing with office politics.

#1: Live at peace with others
The easiest way to avoid problems with politics is to get along with people. I’m not saying you need to hug everyone and sing songs, and I’m not saying you have to be a pushover for everyone. You can be pleasant and professional, while at the same time being assertive when necessary. If you have a concern, focus only on the issue, not on the person. If you have to refuse a request, explain why and try to come up with alternative solutions.
Living at peace with others also means being careful about choosing sides during office power struggles. Aligning yourself with one faction or the other will prevent you from working effectively with people from the “other” side, thereby hampering your productivity and thus your performance. It’s even worse if “your” faction loses out. Instead, try to focus on your tasks, dealing with people in either faction on the basis of the tasks alone, and avoid talk on the political issue that separates the groups.

#2: Don’t talk out of school
Three can keep a secret if two of them are dead.
– Benjamin Franklin

Does your organization have issues? Have people told you things in confidence? Then keep those matters to yourself. Talking to outsiders about issues within your organization makes all of you look bad to that outsider. Furthermore, your boss or your boss’s boss will not appreciate that behavior. People will find out that you spoke about what they told you, and they’ll lose confidence in you and respect for you.

#3: Be helpful
We all have responsibilities and objectives, and those things should receive priority. Nonetheless, if it doesn’t take too much time, being helpful to others can reap benefits for you. Does someone need a ride in the direction you live? Did your co-worker leave headlights on in the parking lot? Is someone having trouble building an Excel macro? If you can help that person, especially if you can do so without taking too much of your time, you benefit yourself as well as the other person. By doing these things, you’re building political capital and loyalty. In doing so, you reduce the chances that you will be the victim of political intrigue.

#4: Stay away from gossip
Nothing destroys the dynamics of an office more than gossip. Stay away from it, because nothing good comes from it. Just be sure you avoid the “holier than thou” attitude of lecturing your co-workers on the evils of gossip. You’ll make them lose face, and they’ll resent you. Instead, try subtly changing the subject. For example, suppose the group is talking about Jane’s problems with her child, and of course Jane is absent from the group. Do some free association and try to come up with some topic that’s related to Jane or her child, but won’t involve gossip. Then, make a comment about that topic.
For instance, suppose you know that Jane’s child is involved in a sports league. Mention this fact, thereby linking the child and the league. Then, shift the conversation so that you’re now talking about the league rather than Jane’s child. You could ask when schedules will be published, or if they need parent volunteers. If you do it right, no one will even notice that you’ve moved them away from the gossip.

#5: Stay out of those talk-down-the-boss sessions
Suppose your co-workers start complaining about the boss. If you join in, it makes you look disloyal to the boss. If you don’t, it looks awkward in the group. What can you do? As with the situation of gossip, try changing the subject by linking the boss to another topic, then talking about that topic instead. Or you could simply respond to your co-workers with a smile and a tongue-in-cheek, “Come on, aren’t we exaggerating? [name of boss] really isn’t THAT bad.” Be careful, though, because it could be taken as an admission by you that the boss is bad.

#6: Be a straight arrow
The best way to keep out of trouble politically is to be seen as someone who doesn’t play office politics — in other words, a straight arrow. Do what you say you’re going to do, alert people to problems, and admit your mistakes. Others will respect you, even if they don’t always agree with you. More important, you have a lower chance of being a victim of politics.

#7: Address the “politics” issue openly when appropriate
Many times, when I do organizational assessments, I sense anxiety on the part of client staff. To address this anxiety, I tell people I interview that I’m not there to get people fired. I’m there to help the organization function better. It might not completely allay their fears and suspicions, but at least I’ve brought up the issue and addressed it.
Think about doing the same thing if you believe politics is an underlying theme at your company. Tell people you’re not interested in scoring political points but only in getting the job done. It might not work, but unless you bring the matter up, there’s no chance at all that they will believe you. So if a co-worker is unavailable, and you have to act on that person’s behalf, consider saying to that person, “I had to act because of your absence. I wasn’t trying to go behind your back and I wasn’t trying to show you up.”

#8: Document things
Nothing saves a job or career more than having a written record. If you believe a matter will come back to haunt you, make sure you keep a record of the matter, either via e-mail or document. Documentation is also an effective way to highlight of your own accomplishments, which can help you when your performance evaluation is conducted.

#9: Set incentives to foster teamwork
If you’re a manager or senior executive, take a close look at your incentives. Are you unwittingly setting up your staff to work against each other? Do your metrics address only individual departments, or do they also address how departments could benefit the larger organization?
For example, suppose the hardware department of Sears reduced all its prices by half. If you measured only profitability of the department, you would conclude that it is performing horribly. However, that measurement would neglect to account for increased volume in all other departments because of the hardware department.
If you reward employees in a department based only on how well that department does, you may inadvertently cause destructive competition among departments. Each one will be competing against every other one, and all the departments could end up in a worse position. To minimize this possibility, give employees incentives based not only on department results but on organization results as well. That way, employees from different departments have more motivation to work together and less motivation to engage in destructive politics.

#10: Set an example for your staff
People in an organization look to leadership to see how to act. Do you want your staff to refrain from negative politics? Do you want to see collaboration and teamwork instead of petty rivalries, jealousy, and back-stabbing? Act the way you want your staff to act, and they will follow you.


Reference
1) 10 ways to survive office politics



10 ways to avoid stupid project estimates

Projects run on estimates. You either have to provide estimates of things such as how much effort your task will require or you will need such information from others. Unless you’re in one of a small handful of roles, you will surely come to rely on estimates of others, even if it’s just to frame your own estimates. And if you’re a project manager, the estimates of others are probably all you have to work with.
Overall, project estimates are only as good as the individual estimates associated with the component tasks. But as much discussion as there is on the estimation process, there isn’t a great deal of information on getting better estimates from others. Here are a few ideas to help you see this aspect of estimating more clearly — and to help you avoid leading your project astray before it ever starts.

Vetting the estimates you get today
1: Let history be your guide
It is true: History does repeat itself. I can’t tell you the number of times I’ve seen developers give an estimate of two days and actually take four. There’s nothing wrong with that, because there was probably four days’ worth of work to begin with. The problem is that I also see people in meetings repeatedly believing them. If it has taken twice as long as the estimate the last five times an estimate was given, why would anyone think the estimate will hit this time? Beats me, but some people continue to fall for it. Unlike the stock market, past performance can be an indicator of the future.

2: Ask for details (proof)
Learn the justification for an estimate. If you ask why they think it will take two days, and you get a reasonable task-by-task break down of the two days’ work, two days may be right on the mark. But if your developers just shrug their shoulders, it may be time to worry. This also provides a great opportunity to assess their assumptions.

3: Challenge the numbers
Push back. Ask questions. Project managers seem to do this pretty naturally, but challenge the developer or development team to explain why they think it will take so long. If they can justify their estimate, at least you will know that they gave it some thought. If they can’t, perhaps they should be thinking about their estimate some more before you start relying on their figures.
Don’t be surprised if the estimate actually goes up. It would not be the first time I’ve seen a discussion with developers expose previously undiscovered project tasks. While not great news, it’s still better to find out about this sooner rather than later. Left hidden, those tasks would have surely destroyed the timeline when they came to the surface and jumped onto the critical path.

4: Measure
Okay, you know your developers are always missing their estimates, but by how much? If you aren’t measuring it, you really don’t know whether you have a big problem — or maybe don’t have a problem at all. This also ties into the history suggestion above. How long does it usually take? You don’t know unless you track this information.
Metrics also go a long way toward improving estimates. Like any process, you can’t improve it if you don’t measure it. Unfortunately, a deep dive into this topic would be an entire article (or two) in itself. But if you don’t have a clue where to start, just start capturing expected date versus actual delivery date. You might be surprised by the patterns that develop.

5: Bracket the work
This is for those who just can’t come up with a time estimate for the work. First, try helping them break down their work into smaller, more manageable, tasks. Next, you may find it useful to use a simple bracketing technique to help the person zero in on the figure that is appropriate. “Is five days enough time?” “Can you do it in less than 10?” Continue in this fashion until you get a figure that everyone is comfortable with. Of course, you should be challenging and asking for details throughout this process.

6: Get a second opinion
When you’re hiring a builder, they say you should get several estimates, throw out the highest and the lowest, and then go with the one in the middle. There might be something to that approach. When working with a team, you’re probably getting your estimates from the team’s point person — a lead developer, for example. While this is efficient, it may add some risk to the accuracy of any estimate you receive, especially if there is a wide variance in the estimates of the individual team members. You may be getting the result of a faulty team consensus, a blatant falsehood to avoid having to face some development reality, or an estimate flawed by an innocent miscommunication.
If you have reason to suspect an estimate may be off, or if the team has a bad track record for this sort of thing, a second opinion may be in order. Seek an informal read from other members of the team. If you run the team estimate past an individual developer, and he wrinkles his nose at it, you may have some more digging to do. If everyone is of a like mind, you probably have as good a number as you can expect.

7: Remember that two heads are better than one
Run your figures past someone who might have experience with your type of project. If this person is not on your project, all the better. Perhaps you’re a sucker for good news. Perhaps they are telling you what you want to hear. An objective third party is exactly what you need to free you of your bias and give you a clearer view of reality.

Improving future estimates

8: Give feedback
You have captured task estimates, and you have tracked actual. From this, you may have learned that certain groups always underestimate by 25 percent. That is certainly good to know, but don’t let the value stop there. Provide feedback to the team members. Help them identify patterns in how they estimate and challenge them to find the root cause of their bad estimates. Generally speaking, people really do want to do a good job, so provide them the tools and a few suggestions. Your folks will be able to take it from there.

9: Reward and penalize
Penalize the bad estimate, not that a task estimate is too long. When estimates are shortened, it’s generally because that shorter number is what’s expected. That is where the “If all goes well, it will take…” comes from. Be serious. When was the last time “all went well”? There’s nothing wrong with qualifying an estimate, but adding an unrealistic assumption as a way to give a bad estimate only hurts the project. You want to drive toward behaviors that give better estimates. Celebrate when estimates are hit. When estimates are missed, you don’t need to tar and feather the offenders, but you can treat it as a remedial education opportunity (the very act of which will be a penalty of sorts).
Be careful about rewarding beating an estimate differently from hitting it. If you create the situation where it is better to beat an estimate than simply meet it, you will create an incentive for overestimating.

10: Develop a culture
Using the correct rewards and penalties goes a long way toward establishing the right culture, but what is the right culture? Certainly, it’s one in which those providing estimates feel safe in providing accurate information as opposed to providing the information they believe supervisors want to hear. However, it must also be one in which everyone strives to improve the quality of their estimates and the notion of providing a bad estimate is as bad as providing bad program code. Managers must also respect those providing them with information, once those people have proven themselves. Ultimately, if you can get peer pressure to “manage” the estimates, your job will become considerably easier.

Improve your project, one estimate at a time
You can’t run a project well with bad estimates, any more than you can build a house with faulty bricks or lumber. Fortunately, you don’t need to do everything yourself (nor could you) to get estimates you can trust. Exercising the simple ideas above will help you filter out the bad numbers you get today, improve the numbers you get tomorrow, and generally make your life a whole lot better — at least as far as your project is concerned.


Reference
1) 10 ways to avoid stupid project estimates


Wednesday, July 1, 2009

10 skills developers will need in the next five years

With the recent changes in the economy, a lot of developers are focused on their short-term job prospects. At the same time, it’s important to make sure that you get the most bang for your buck when it comes to taking the time and energy to learn new skills. Here is our list of 10 skills you should be learning right now to make sure that your resume is relevant for the next five years. The list is hardly exhaustive, and there are huge swaths of the industry it won’t cover (mainframe developers, for example). Nonetheless, for average mainstream development, you can’t go wrong learning at least seven of these skills — not only to the point where you can talk convincingly about them at a job interview, but actually use them on the job.

1: One of the “Big Three” (.NET, Java, PHP)
Unless there is a radical shift in the development world (akin to an asteroid hitting Redmond), most developers will need to know at least one of the Big Three development systems — .NET (VB.NET or C#), Java, or PHP — for the near future. It’s not enough to know the core languages, either. As projects encompass more and more disparate functionality, you’ll need to know the associated frameworks and libraries more deeply.

2: Rich Internet Applications (RIAs)
Love it or hate it, in the last few years, Flash is suddenly being used for more than just animations of politicians singing goofy songs. Flash has also sprouted additional functionality in the form or Flex and AIR. Flash’s competitors, such as JavaFx and Silverlight, are also upping the ante on features and performance. To make things even more complicated, HTML 5 is incorporating all sorts of RIA functionality, including database connectivity, and putting the formal W3C stamp on AJAX. In the near future, being an RIA pro will be a key resume differentiator.

3: Web development
Web development is not going away anytime soon. Many developers have been content to lay back and ignore the Web or to just stick to “the basics” their framework provides them with. But companies have been demanding more and more who really know how to work with the underlying technology at a “hand code” level. So bone up on JavaScript, CSS, and HTML to succeed over the next five years.

4: Web services
REST or SOAP? JSON or XML? While the choices and the answers depend on the project, it’s getting increasingly difficult to be a developer (even one not writing Web applications) without consuming or creating a Web service. Even areas that used to be ODBC, COM, or RPC domains are now being transitioned to Web services of some variety. Developers who can’t work with Web services will find themselves relegated to legacy and maintenance roles.

5: Soft skills
One trend that has been going for quite some time is the increasing visibility of IT within and outside the enterprise. Developers are being brought into more and more non-development meetings and processes to provide feedback. For example, the CFO can’t change the accounting rules without working with IT to update the systems. And an operations manager can’t change a call center process without IT updating the CRM workflow. Likewise, customers often need to work directly with the development teams to make sure that their needs are met. Will every developer need to go to Toastmasters or study How to Win Friends and Influence People? No. But the developers who do will be much more valuable to their employers — and highly sought after in the job market

6: One dynamic and/or functional programming language
Languages like Ruby, Python, F#, and Groovy still aren’t quite mainstream – but the ideas in them are. For example, the LINQ system in Microsoft’s .NET is a direct descendent of functional programming techniques. Both Ruby and Python are becoming hot in some sectors, thanks to the Rails framework and Silverlight, respectively. Learning one of these languages won’t just improve your resume, though; it will expand your horizons. Every top-flight developer I’ve met recommends learning at least one dynamic or functional programming language to learn new ways of thinking, and from personal experience, I can tell you that it works.

7: Agile methodologies
When Agile first hit mainstream awareness, I was a skeptic, along with many other folks I know. It seemed to be some sort of knee-jerk reaction to tradition, throwing away the controls and standards in favor of anarchy. But as time went on, the ideas behind Agile became both better defined and better expressed. Many shops are either adopting Agile or running proof-of-concept experiments with Agile. While Agile is not the ultimate panacea for project failure, it does indeed have a place on many projects. Developers with a proven track record of understanding and succeeding in Agile environments will be in increasingly high demand over the next few years.

8: Domain knowledge
Hand-in-hand with Agile methodologies, development teams are increasingly being viewed as partners in the definition of projects. This means that developers who understand the problem domain are able to contribute to the project in a highly visible, valuable way. With Agile, a developer who can say, “From here, we can also add this functionality fairly easily, and it will get us a lot of value,” or “Gee, that requirement really doesn’t match the usage patterns our logs show” will excel. As much as many developers resist the idea of having to know anything about the problem domain at all, it is undeniable that increasing numbers of organizations prefer (if not require) developers to at least understand the basics.

9: Development “hygiene”
A few years ago, many (if not most) shops did not have access to bug tracking systems, version control, and other such tools; it was just the developers and their IDE of choice. But thanks to the development of new, integrated stacks, like the Microsoft Visual Studio Team System, and the explosion in availability of high quality, open source environments, organizations without these tools are becoming much less common. Developers must know more than just how to check code in and out of source control or how to use the VM system to build test environments. They need to have a rigorous habit of hygiene in place to make sure that they are properly coordinating with their teams. “Code cowboys” who store everything on a personal USB drive, don’t document which changes correspond to which task item, and so on, are unwelcome in more traditional shops and even more unwelcome in Agile environments, which rely on a tight coordination between team members to operate.

10: Mobile development
The late 1990s saw Web development rise to mainstream acceptance and then begin to marginalize traditional desktop applications in many areas. In 2008, mobile development left the launch pad, and over the next five years, it will become increasingly important. There are, of course, different approaches to mobile development: Web applications designed to work on mobile devices, RIAs aimed at that market, and applications that run directly on the devices. Regardless of which of these paths you choose, adding mobile development to your skill set will ensure that you are in demand for the future.


Reference
1) 10 skills developers will need in the next five years


Tuesday, June 30, 2009

How AJAX Works: 10 Practical Uses For AJAX

AJAX has gotten more and more popular over the years, and has allowed web applications to act more and more like desktop applications. AJAX can provide a lot of additional functionality that could not be accomplished any other way.

What Is AJAX? How Does It Work?
AJAX stands for Asynchronous JavaScript and XML. It is used for allowing the client side of an application to communitcate with the server side of the application. Before AJAX, there was no way for the client side of a web application to communicate directly with the server. Instead, you would have to use page loads. With AJAX, the client and server can communicate freely with one another.

Here is how the usual AJAX script goes:
  • Some action triggers the event, like the user clicking a button.
  • The AJAX call fires, and sends a request to a server-side script, using XML
  • The server-side script (PHP, ASP, or whatever) takes the input from JavaScript, can access the database if it needs to, and processes the data.
  • Using XML again, the script sends the data back to the original client-side page that made the request
  • A second JavaScript function, called a callback function,catches the data, and updates the web page

Throughout this tutorial, we will discuss how various scripts use this routine to accomplish a wide variety of effects.


1. Login Forms
Instead of going to a login page, and then navigating back to the page you originally wanted, with AJAX, a user can type in their user name and password directly into the original page. From there AJAX will send a request to the server to log them in. The server let’s the page know they’ve been logged in, and the page you are on can update as needed. Digg has a login-system that works like this.

Example: Digg.com (top of page)

Plugin: jQuery Form Plugin

2. Auto-Complete
Google was one of the first major companies to start using AJAX, and Google’s search suggestion tool was one of the first ways they used it, and one of the first auto-complete tools made. When typing into the Google search bar, it starts to use AJAX to get common results from the database on each keystroke. Auto-Complete is great for forms where you have a lot of possible inputs, and making a select drop down would be too long and cumbersome.

Example: Google Search

Plugin: jq autocomplete

3. Voting and Rating

Social bookmarking sites like Digg and Reddit let the users decide the main content of the site by voting on content that the users like. They use AJAX to handle all of the voting, so that the users are able to voice their opinions on a number of stories quickly and easily.

Example: Reddit


4. Updating With User Content

One of the things that made Twitter so popular was their simple and easy-to-use interface. When someone makes a ‘tweet’, it is instantly added to their feed, and everything is updated. Recently, Twitter has started using AJAX with their ‘trending topics’ pages. Every few seconds, the page lets the user know that more tweets have been made about the subject, giving them up-to-the-second updates.

Example: Twitter


5. Form Submission & Validation
Forms have always tricky to work with, but AJAX can make them a lot better for the users. AJAX can be used in a variety of ways, from the auto complete mentioned above, to validation and submission as well. Some sites use AJAX to check if a form meets certain requirements, such as password strength, or if something is a valid email or URL.

Example: 10 Cool jQuery Form Plugins


6. Chat Rooms And Instant Messaging
Chatting online has come a long way from the days of IRC. Chat rooms and instant messaging can now be handled in the browser completely. There are two main AJAX processes in a chat room or IM application. Think of one of them as your ears, and one of them as your mouth. Your ‘mouth’ updates the server and lets it know that you have sent a message. The ‘ears’ check with the server constantly, and updates your page with messages that have been sent by whoever you are chatting with.

Example: Meebo Chat (Uses Ajax)

Plugin: GMail/Facebook Style Chat Script


7. Slicker UIs


Creating a clean, slick user interface is a very popular use of AJAX. It allows users to accomplish more on a single page. The benefits of this are twofold: First, it makes using the web application quicker and easier for the user; Secondly, it cuts down on the number of requests you have to make to the server, which cuts down on bandwidth and load times. A free file upload service called Drop.io uses this well. Google has also really pushed the envelope of what is possible with AJAX by making desktop-like applications like Google Docs and Google Maps.

jQuery UI Library


8. External Widgets
When using AJAX, the page that is using the JavaScript isn’t just limited to the server it is located on. The AJAX can make a call to any server online. This is how a number of plug-ins for Content Management Systems like Wordpress work, and other various scripts like Google Adsense.

Example: Google Adsense

Plugin: Script for loading external content into div


9. Lightboxes instead of pop-ups
Pop-up blockers are very common place these days, and for a good reason: pop-ups are annoying. Using light boxes, which are pop-ups inside the browser window, the pop-up blocker can’t stop it, and they aren’t quite as irritating to the user. Some people use them for advertising, like on Darren Rowe’s ProBlogger.com. They can also be used for something like a login or register box, like Reddit does when you try to vote and you are not logged in.

Example: Logo Sauce

Plugin: Lightbox Plugin


10. Using AJAX With Flash


Using AJAX along with Flash is a rarely used technique, but it can be used to generate some impressive results. The flash game website Kongregate uses this to great effect. Using their API, they have their own achievement system that involves winning ‘badges’ for completing various accomplishments in games. When a badge is earned, the API in Flash sends a response back to JavaScript, which then uses AJAX to update the user’s profile with the newly earned award.

Example: Kongregate

Plugin: jQuery Flash Plugin


Reference
1) How AJAX Works: 10 Practical Uses For AJAX