25+ Firefox Extensions for Web Developers

About one week has gone since Firefox passed the 400 million downloads mark. A lot of people and of course webmaster use the revolutionary browser to explore the web. So this time I want to present you a bunch of plugins, especially for web development!

Debugging

Firebug - A masterpiece of plugin! If you want to edit your sites CSS and preview it in real-time, this plugin is what you need.

JavaScript Debugger - A powerful JavaScript debugging environment.

Console Two - A plugin/console to display errors filtered by type, language and context.

Analysis

View Source Chart - A cool plugin which enables you to display a color-coded chart of a website’s source code.

OperaView - Open pages in Opera from Firefox context menu.

View Dependencies - This plugin adds a tab to the Page Info window which lists all the files that have been loaded to show the current page.

lori - It can tell you how long it takes to load a page.

HTML Validator - This plugin displays the number of found errors of the site you are viewing.

CSS Validator - As you may guess, it validates a site’s CSS stylesheet.

RSS Validator - One of many plugins to validate a RSS Feed using the W3C Validator.

Window Resizer - A plugin to resize your window to standard sizes; useful to see how your site looks with different resolutions.

IE Tab - Handy extension to see how your site is displayed in Internet Explorer.

ViewSourceWith - An extension that primary allows you to view the source code of a site with an external application but you can also open images with other apps etc…

CSS

Aardvark - This extension can show you the attributes, classes and ids by highlighting a page element with your cursor.

Font Finder - If you ever wanted to see the css-styles used for a certain element on a website, you need this plugin.

SEO

Social Media for Firefox - Really good plugin that shows the stats of 4 social services (digg, reddit, stumbleupon, delicious) for the page you are visiting, in the status bar. Useful if you want to know whether a site you own already has been submitted to one of these services.

Niche Watch Tool - Very good plugin that provides you the technical information like backlinks, page rank, keywords strength… everything a webmaster needs to analyze his site.

KGen - This addon retrieves all words of a page and lets you know how many times they appear; interesting for SEO optimization.

Others

Greasemonkey - Allows you to customize the way a webpage displays using small bits of JavaScript; a Must-Have!

Dummy Lipsum - Not the most valuable plugin for Firefox - it generates a “lorem ipsum” text.

ColorZilla - Nice Addon to pick the color of a page element and see its values.

Screengrab! - A plugin that saves the entire page as image (no flash elements).

Image Zoom - Offers you a zoom in, zoom out function for pictures.

Web Developer - Good extension that adds a toolbar to your Firefox with various web developer tools, e.g. Site Validation, CSS Viewer…

Unicode Converter - Converts entities or character references into Unicode and back.

Platypus - Another great addon which lets you modify a website from your browser. In addition to that you can save your modifications as a Greasemonkey script to make them ‘permanent’!

ShowIP - A useful extension that shows you the ip of the current page in the status bar. Also it enables you to see the whois details by querying some web services.

MeasureIt - Little Firefox extension that enables you to draw a ruler across any webpage to check the width or height of a element

The Fastest Growing Web Framework Is...




Hightower made an interesting observation in his blog recently when he compared job growth rates of various Web framework technologies on www.indeed.com. The clearly undisputed winner? JSF. As you can see from the attached graph images, JSF is growing much faster than any other other listed frameworks, as well as having far more job opportunities. But is it really? Is this graph telling the whole truth? More on that later.

Also very interesting, is the Spring and Ruby on Rails plots. It seems, at least according to this job site. That Ruby on Rails and Spring are virtually neck and neck, vying with each other for which one is more popular. At various times, Ruby on Rails has been more popular than Spring, but then Spring has overtaken Ruby on Rails and become more popular again.

This one I have a few problems with, since I don't see the supporting data on other job sites for it. For example, dice.com currently lists 2114 job openings for Spring, but only 241 for Ruby on Rails. That seems to differ radically from what the data at indeed.com suggests.

Of course, the sad story in all this, is the frameworks that just don't seem to be going anywhere at all. Tapestry, despite being a strong competitor to JSF, has gone virtually no where. once it is experienced its initial growth spurt after being released. It's basically flat. Unlike the Ruby on Rails vs. Spring data, the data at dice.com seems to support this one. There are currently only 87 jobs listed for Tapestry. This part is hard to debate no matter how you spin the numbers. Tapestry is virtually flat as far as having any kind of growth.

The data for WebWork and Struts2 is just as disappointing. Neither one of them has gained any traction at all. And once again, the dice.com data seems to support this.

To be fair, Struts2 was only released in February of this year, so it hasn't had a whole lot of time to gain in popularity. But since Struts2 is based on WebWork, I feel that it is fair to combine the WebWork and Struts2 graph lines. If we do this, we still find that neither one has experienced any significant growth.

Wicket was not included in this graph, but a quick dice.com search for Wicket shows only 23 openings, bringing it in no better than WebWork or Struts2.

What does this say about the future of Java Web frameworks? Is JSF going to usurp all of them and become "The Java Web framework?" Is JSF clearly the "current hot skill to have?"

Winning Through Effective Self Promotion

Setting personal goals and working single-handedly toward their success is both noble and a worthwhile use of your time. But as you reach for more challenging goals you are going to need the cooperation of others. Others can help you with their skills and resources. They will make it easier to succeed in the long run.

Effective self-promotion is the way to get others to help you reach your goals.

In this post you'll see how you can gain the power of persuasion to sell yourself and your services to the people who need them.

1. Why Promote Yourself?

2. The A.I.D.A. Formula Explained

3. 4 Surefire Tools That Grab Attention

4. Big Returns From Low Pressure Networking

5. Get Publicity!

Outsourcing may be coming to an end

As we have been hearing, costs among the outsourcing companies have been going up for the last couple of years. Competition has increased wages among outsourcing companies across the board.

Now Nishant Sivakumar in The Code Project:Finally something that might kill outsourcing brings up what will most likely bring Outsourcing to an end. When Outsourcing began the exchange rate was about 47 rupees to a U.S. dollar, today the exchange rate is 40 rupees to a U.S. dollar, so if trends continue even the stupidest MBA will figure out that there isn't the money in outsourcing that there was supposed to be.

The exchange rate coupled with rising expenses is sure to but the squeeze on the outsourcing companies and their customers. Thanks Nish for pointing out the obvious.

Programmer or Developer?

This made me think more about the distinction between a Software Programmer and a Software Developer. To me there is a subtle, but important difference. Let me give you my definition:

A Software Programmer is someone who really knows the environment he is programming. He knows everything there is to know about the language, the API and the Framework he’s using. He can do low level optimizations because he knows in detail what the compiler does behind the scenes. He is indeed a Wizard and a Guru of his domain. A Software Programmer usually starts with the implementation (probably because that’s what he is doing best) and work his way outwards.

A Software Developer on the other hand is a specialist at giving the customer (user) what he wants and what he needs. He doesn’t waste time on premature optimizations; he prioritize maintainability over performance, unless the performance is proved to be unacceptable; he has great testing skills, designing skills and communication skills; He is empathic, knows his HCI, and cares more about the user than he cares about his code. He cares so much that he usually becomes an expert himself of the users domains. A Software Developer starts with the interface (probably because that’s what he does best) and work his way inwards.

A person can be both, or more of one or the other. In a team you want both kinds but they are rarely found within the same individual. I, for instance, consider myself a great developer but an intermediate programmer. One simple way to test what type you are is to ask yourself this question: Do I care more for the interface (GUI or Programming Interface) than I do for the implementation? If you think the implementation is unimportant as long as it does what you want, and is reasonably maintainable, then you’re probably a Software Developer. If you find the previous sentence a blasphemy, you could be a Software Programmer. Which one is it?

What Tools I Use For Web Development

I use all of these applications/plug-ins

* Jetbrains IntelliJ Idea. The best IDE I've ever used.
* Textmate. The best text editor I've ever used.
* DBVisualizer. Makes working with databases easy.
* Fireworks, now from Adobe and likely to vanish someday.
* Interarchy. For moving stuff from one system to another.
* Path Finder. It's not a development tool but a Finder replacement; lots of neat programming assistant features.
* Firebug. If you don't use this for debugging javascript, you stand along in the world.
* Web Developer Toolbar. Although there is some overlap with Firebug, it's mostly complementary.

OK, you can argue with me, but these are my weapons of choice.

All I Need To Know To Be A Better Programmer

Programming is complicated stuff, but a lot of what makes a good programmer isn’t all that different from the earliest learning we did in school.

1. Share everything.

Use open source where possible, and contribute to it when you are able. The collective wisdom of the entire community is better than the limited vision of a few large companies.

2. Play fair.

Give other technologies, frameworks, methodologies and opinions a chance. Don’t think your choices are the only ones that work. The other choices may very well be better than yours; it doesn’t hurt to check them out with an open mind.

3. Don’t hit people.

Like #2, don’t attack people just because they happen to use .Net or Java or PHP (I learned my lesson there!). Sometimes they might be more usable and useful than you think. You can learn a lot more from someone when you are not pounding them to a pulp.

4. Clean up your own mess.

Strive to deliver code that works. Never expect QA to find all of your bugs for you. Test your code often, both narrowly and broadly.

5. Don’t take things that aren’t yours.

Follow the licenses for stuff you use, don’t just steal it and claim innocence later.

6. Say you’re sorry when you hurt somebody.

Code reviews are a good but rarely used idea. Mentoring programmers with less experience than you helps the entire team. Just don’t criticize people openly. Learning is not belittling people. Sometimes people will listen and sometimes they won’t. Sometimes you might learn a lot from people you think are inferior to you.

7. Wash your hands before you eat.

Try to understand things before you set out to write code. Do prototyping, check out examples on the web, talk with other folks who do it, or even just play around. Architecting something you’ve never done before or worked with is tough cold turkey. The end result will work much better if you start with a clue.

8. Flush.

Don’t be afraid to replace, rewrite, refactor or give up on something that is crap. Sometimes “when in doubt throw it out” is the best philosophy. Never fall in love with your code.

9. Warm cookies and cold milk are good for you.

Yes, programmers should be well supported in their work environment. A good chair, a quiet place to work, a decent computer and tools that make coding better and easier are essential. Managers should act as umbrellas to keep the crap from flowing down to the programmers. As a programmer, don’t accept a life of lowly servitude. If the employer treats you poorly then find one who treats you better.

10. Live a balanced life - learn some and think some and draw and paint and sing and dance and play and work every day some.

I like Google’s deal where 20% of your time is devoted to whatever you think it worth working on. Employers should (discretely) offer nap rooms or game rooms or some kind of chillout environment. Programming is hard mental work; sometimes you really need to give your brain a rest. Refuse to routinely work 80 hour weeks as the quality of your work will wipe out any gains in hours.

11. Take a nap every afternoon.

Working 24 hours a day doesn’t make you more productive. Take breaks, go home, take a real nap. Often I have solved nasty problems by going home, and the solution came to me as I was driving away, or the next morning.

12. When you go out in the world, watch out for traffic, hold hands and stick together.

Community is good for the soul; read blogs, learn about new languages or frameworks, participate in discussions and see what other people are doing. Just doing your job isn’t going to make you a better programmer. Keeping your head down means you will eventually be obsolete.

13. Be aware of wonder. Remember the little seed in the Styrofoam cup: the roots go down and the plant goes up and nobody really knows how or why, but we are all like that.

Every day something new and wonderful appears in the programming (and technology in general) world. Check it out. Be amazed. Learn something new everyday. It keeps your mind fresh, your options open, and your skills up to date. If you think programming is boring or dead then you may need a new career.

14. Goldfish and hamsters and white mice and even the little seed in the Styrofoam cup - they all die. So do we.

Code goes stale and dies. Sometimes you just have to bury it and do it again. Fight against keeping terrible code bases around just to save money.

15. And then remember the Dick-and-Jane books and the first word you learned - the biggest word of all - LOOK.

You won’t learn anything at all if you don’t try. Everything I learned in programming came from trying new stuff and generally playing around. Every morning I read a lot of sites to see what is happening in the programming world; I have been doing this since my first job in the early 80’s (when it meant reading catalogs and magazines).

See, programming is easy when you look at it through 3-year-old eyes.