22
Jul

Wordpress’ New “Press It” and iPhone App are Great for Mo-Blogging

Press It WordPress Codex.

This bookmarklet combined with the iphone client wordpress just released in the AppStore makes for a decent moblogging experience from the iphone. The only way to make it better is to have a bookmarket that opens the quickppst in the native client instead of the web app. The web app is not functional on the iPhone at least in it’s default config, so I had to save the post on the web, and edit from the client. Still not a bad experience, especially over wifi.

Edit: Apparently the native iphone wordpress app is unable to handle certain special characters. When trying to save I just get a “Communication Error” and something about my post not being well formed (shoulda used that new screen cap capability of iPhone 2.0) I am unsure which of the following killed it but I removed ” : ‘ to get it to work (and it did). I will make some edits to an old post to see what breaks.

19
Jun

Efficient Working With a Virtual Personal Assistant

By Florie Lyn Masarate

For hundreds of businesspeople and professionals, hiring a virtual personal assistant has indeed made their work and careers a lot easier to manage and care for. Outsourcing has never been easier and more organized, leading into the rise of virtual assistants and employers who gets excellent results and good work done.

Since outsourcing and virtual assistance might be new to some people, many may wonder how best to interact with their virtual assistants and how they can establish good rapport with them. Well, there are a lot of different types of virtual assistants just as there are a lot of different types of bosses and employees. Working in a “virtual office” just made it a lot easier and a lot more straight-to-the-point.

The basics? When getting a virtual personal assistant of your own, be mindful of a couple of things to get work done more efficiently and smoothly.

Be specific.

You have a virtual assistant and you have specifically chosen him/her for the task you want. Now it is best to be specific what he or she ought to do in working it. Expect the questions that will be asked beforehand and get ready to answer them. When orienting your virtual assistant, you can either talk to him/ her by phone or write down your instructions. Either way, a clear definition of the purpose and the work will help your assistant tremendously.

Establish good communication.

Checking up with your assistant daily is not really that difficult. All it takes is just an email away. Some clients and their virtual assistants require a progress report, but it ultimately depends on your management style. A good thing to establish early on is rapport and good communication. Have an effort to know your virtual assistant and what times are convenient for him or her. Again, you can do this through phone call or through a chain of emails, your choice.

Define and expect a goal.

Set goals and standards that your assistant should follow. It is actually helping your assistant into creating or developing the kind of work you have in mind, the output that meets your expectations. Voice out these goals and lead your virtual assistant in your headed direction. Eventually, often soon, your assistant will be able to know what you want and present the work that you like ahead without you even telling them. This is what good rapport does for you.

Be open for suggestions.

As a good plus, your virtual personal assistant has probably had previous experience working for other clients and accounts, making him or her a seasoned and skilled person at his or her work. Keep your mind open for suggestions and techniques you may not have heard before. These ideas only serve to produce better work. Its quite alright if you do not like them anyway, you have the final say what goes.

Provide feedback.

It is quite helpful when you provide feedback every now and then. Your evaluation points out what needs to be done and how your assistant is doing. Just be constructive and all will fall into place. Praises and a pat in the back are also good in boosting up morale.

Agents of Value Virtual Personal Assistant is a webmaster staffing company based in the Philippines that provides direct access to motivated agents for cost-effective web services.

Article Source: http://EzineArticles.com/?expert=Florie_Lyn_Masarate
http://EzineArticles.com/?Efficient-Working-With-a-Virtual-Personal-Assistant&id=1220350

22
May

Experiments in Social Networking: Flock

Edit: This post was unfortunately delayed as I wanted to adjust it for the latest version of flock, which is based on Firefox 3 instead of Firefox 2.

I tried flock today, and was pretty impressed with it. I think it has some things that could be improved, but overall, its a very strong product for a large subset of users.

For the uninitiated, Flock is a “social” web browser. Now that I read it. “social web browser” seems like some ridiculously buzz-word laden term, trying to trick some VC into parting with a large pile of money. But it accurately conveys what Flock is (and as an open source project, I don’t think they are trying to con anybody).

Flock is basically a Mozilla based browser (like firefox) with a great deal of social network, and media integration. They do their best to integrate with all of the Web 2.0 heavy hitters: Facebook, YouTube, Flickr, Twitter, Picasa, Piczo, Digg, Pownce, Blogger, Wordpress, Delicious, Magnolia, and several more. Its honestly an impressive list of sites. And the Flock development team is constantly working to integrate new sites. For example, their latest beta, of version 1.2 was released just his Monday, and added support for Digg, Pownce and AOL Mail. Of course, if you reread that statement, you will see where the shortcoming for Flock is as well. These social networks are being added on by the core development team. I have not gone over the source code, nor read any developer documentation in depth, so I might be griping about lack of a feature that already exists…but I feel that all of these social networks should be integrated with a sort of plug-in architecture. For instance, I would like to see StumbleUpon integrated with Flock, or perhaps Plaxo, or Reddit, or whatever cool social media hits the scene tomorrow. I realize all of these sites can be supported through extensions and bookmarklets, but wasn’t that the point of Flock?, I mean if I need to install special plugins (outside where all the rest of my social media is) why would I use a different browser?

Enough ranting.

definitely the Media Bar that allows you to search flickr and the sidebar with all of your accounts is a definite bonus along with the ability to post the pages you browse to your various social networking accounts.  At the moment, the target of flock is the hardcore social networker that does social networking for its own sake.  I would say someone who uses social networks to help generate “buzz” around a products, service, site, whatever is still best served by a combination of firefox plugins and bookmarklets.

E.

22
May

A great post by Scott H Young

Scott keeps a great blog at www.scottyoung.com, with a lot of excellent observations and advice.  In today’s post he writes about the concept that if you want to develop a new habit, you should commit yourself to mindfully living that habit for 30 days.  After 30 days, you can evaluate if that habit works for you or not.  Its an awesome post about how you can change your life one step at a time.

Scott H Young » One Month Isn’t That Long…

21
May

Mental Organization

Unclutterer poses a very simple hypothesis:

If you understand the way you tend to process information, you can better select tools, practices and habits that work with your nature rather than against it.

Thats tough to argue with, so intrigued, I read on. The first post in a two part article gives you a series of clues to help you identify if you are a visual, auditory, or kinesthetic / tactile processor. As the names imply, the question is if you best relate to information through hearing, seeing, or doing / touching.

I am a very Kinesthetic processor, with a good dose of auditory. Almost nothing on the visual.

This Series of questions and their results reminded me of one of the topics discussed during my JCIPrime seminar (As an aside, JCI Prime is an incredible seminar, if you have to do presentations for any purpose in your daily life, I think its very valuable. Look for your local Jaycees chapter and go to their meetings, they are a great group of future leaders!..that link is for the U.S. Jaycees, in other countries, follow this link ). At that seminar, we talked about the interactive person, the one that wants to do or participate in order to learn. As a habitual back-row-of-the-class kind of student, I assumed that this was definitely not me. I was wrong. My tendency toss the manual aside and want to mess with something until I figure it out is a perfect example of this kind of learner. I think the fact that I scored so low on the visual is also an indicator of why I toss that manual aside.

In the second part of the article, the author goes on to tell you different techniques that will work for you depending on the way process information. Most of it didn’t apply to me (I manage to resist the urge to play with my designer toys that are all over my desk unless I am deep in concentration). I so tend to pace a lot when thinking, but doing that in cubicle land will make me look sort of insane. But I will definitely look into implementing a lot of those recommendations the next time I redesign my home workspace (especially the adjustable height desk). Just as interesting is what hasn’t worked for me, that I see under visual. So THAT’S why I never really got into google calendar and snapping pictures of stuff with the cellphone cam even though I understood how helpful they could be. They weren’t helpful for me.

Either way I recommend you check out the two posts, and see if there is anything there that can help you be more productive!

16
May

Manage your own Hotel / B&B Bookings with Open Source tools yourself!

When my wife and I visited Key West and stayed in a Bed and Breakfast, we talked for a little while about how maybe…we should just sell everything and move to Key West and open ourr own B & B. Rent bikes, read and hang out. It looks like maybe with this plugin for Wordpress, that dream might be a little easier!


StayPress is a collection of plugins that will turn a standard vanilla installation of WordPress or WordPress MU into a property management and bookings system. Of course when I say Property, I actually mean any bookable resource of which there is a finite availability. So the StayPress system will be able to manage property rentals, hotel room rentals, conference rooms and centres, B and B’s, training rooms, bands, etc…
The new StayPress system takes over from the previous clearskys.net collection of plugins and brings everything together into a more manageable and co-ordinated group.
[From Clearskys.net Blog » Blog Archive » Introducing StayPress]

Now all we need is: Money to buy a huge place in Key West, and the gumption to do it.

16
May

Just Discovered the “Blog Design” Blog…sorta like a meta-blog

http://www.blogdesignblog.com/

I definitely plan to use their tips and “Dreamworks Redux” Theme to build a new (unique) look for this site.

Even more amazing is how I found it. Used the cool twitter tool twits like me, and it pointed me to twitter id: bebizzy, the blogger that writes: http://www.bestinations.com/ (very interesting Blog by the way!)

I was really impressed by his wordpress theme, and followed the link at the bottom of the page. I love the internet, it really is a series of seamless links between information.

14
May

Getting Things Done in a Nutshell

This is my first non-technical post, more to the topic of productivity and organization. (thought it only fair to warn people up front). I was originally going to write a post about GTD Apps online and in Mac OS X, but figured I should first gloss over GTD in general before being able to discuss the strong points of the various applications in any depth.

I currently follow (to use the term loosely) a methodology along the lines of “Getting Things Done” known to practitioners as “GTD”. It is a system developed by David Allen, in his book “Getting Things Done”. I am not going to delve too deep into the actual system. Its very flexible, very tool agnostic, and it is a system that focuses on the day to day grind of actually doing your tasks (as the name implies). This is a big departure from other established productivity books that tend to focus on your values, roles, responsibilities, and then assume that the day to day will take care of itself if you base all your decisions on your value system. It is these two aspects of GTD that has made it very popular with the geek set (web workers, programmers, bloggers, etc.)

GTD boils down to a few core concepts:

  1. Write shit down. Seriously. Everything. Technically you need to “capture” things in whatever is comfortable for you. If you live in email, anything important email it to yourself. If you want you can send yourself voicemail, whatever works for you. For most people its a combination of email, electronic notes and real paper notes. But since you have to write down EVERYTHING, its important your system be able to handle if you suddenly think of something while having dinner in a restaurant for example. The term David Allen uses is “ubiquitous capture”.
  2. Everything goes to your inbox. Everything you write, or think, everything someone else sends you, it goes to your inbox(es). You will probably have several. Examples of your inboxes are: Physical inbox, email inbox, your notebook, voicemail, everything needs to go to your inboxes, and you need to know what those inboxes are. (I mean really know your inboxes, like you should have a written list of them, and everything that matters to you should collect in oone of these places)
  3. Process your inboxes everyday, until they are empty. Your inboxes ARE NOT your system. They are the way things get into your system. Your email inbox does not do double duty as a task list. You need to have a system separate from your inboxes to organize your tasks so you can organize and process only what is new and not focus on things you have already figured out. Everything you have in your inboxes will be one of the following (and your system needs a specific place for each one)
    • Trash (duh)
    • Reference Material (again, self explanatory)
    • Projects / Next Actions: Project / Actions you are working on NOW, Projects / Actions / Things to Buy / Business ideas or whatever that you would like to do someday but are not planning on dong this in the near future
    • Tickler File: Things you want to “sleep on” and decided what to do with later on.
    • Someday / Maybe LIst: Things you would like to do, as the name implies someday, or maybe. Things like Travel to japan, Learn to play guitar, buy sailboat, clean out attic. YOu think you might want to do these things at some indeterminate point in the future, but have not committed to them.
    • Calendar: Appointments and other truly date specific items (not the things you would like to have done by a certain time, but might push back or something, that belongs in the tickler)
  4. Make sure to separate your Projects from your Actions. Your actions should be atomic things, one simple task you can look at and do. Its easy to identify some projects, like “write drawing application” The rule is, whatever actions are on your to-do list should be only one step, broken down as small as possible. For example, you should not list “design database schema”as a task, because that has multiple steps. You might: list data that needs to be stored, list possible future storage needs of application, list database servers that are available options. research available database server options, create feature matrix for database servers, draw schema diagram, write SQL create statements based on diagram. Even seemingly simple tasks like “clean out garage” have many tasks involved that you should consider.
  5. If you have more than 25 “Next Actions” split them according to where you can do them, the lists should determine themselves organically, like a to-do list darwinism. If you make a lot of phone calls, you should have an at phone to-do list with calls you need to make, whether to clients or the cable company. If you have a lot of tasks that need you to be at your computer, that should be a list. Other examples are: Home, Work, Online, Email, Errands. This is the sort of thing that requires experimentation and observation. For example I frequently have a list of items to enter into quicken, so I like to list them together, that has worked well for me. I never really had a lot of phone calls to make, so the Phone list didn’t make sense for me (I tried It).
  6. Everyday, anything in your tickler file for today should go into your inbox.
  7. Review your system every week, check up on your projects, review your Someday Maybe list, and go over your notes and all that of the past week to see if there are any reference items, inbox items in your head that you did not put into your inboxes.

That is GTD in a nutshell. I definitely do not do it justice here, and if anyone reading it would like to know more about it, I seriously recommend reading the book, or at least listening to the Audiobook (thats what I did the first time through). There are really only 2 criticisms that I can level against the system, and they are really just things that need to supplement it, not things actually wrong with the system:

  1. There is no methodology for habits. For example “Go to the gym”, “meditate”, “Run 5 miles a day”. Habits are an important part of being organized and “having your act together” but are not part of the GTD system. The tough part is not once the habit is in place, it is when you are trying to form the habit. The first 30 days you are trying to go to the gym 5 days a week, thats when you need to be organized about your habit. After that, its just a habit. There are a few ideas and proposals from GTDers out there about how to form new habits.
  2. It does not cover the Higher level thinking at all. For example the values and responsibilities you have that help you chose what is going to be a next action, and what action you aren’t going to do. Along those lines, I think its important to perform the exercises in “The 7 Habits of Highly Effective People”. Having your values clear to you means that choosing your next actions, is easy because they are what helps you accomplish your long term goals and are in line with your values. If your Values / Goals should be in place before doing GTD to help you organize your Next Actions, or you should instead Organize your actions to have the time and freedom to determine your Values / Goals is like a chicken and egg argument within GTD. More accurately, its probably neither of the two and more of an iterative process. While GTD speaks of working at different Altitudes ( runway is just doing your tasks, Values at 50,000 feet, Life Goals at 40,000 5 year goals at 20,000 and so on ) there is very little discussion of the higher levels. The System is a System for 10,000 feet and runway.

I plan to explore some of these points in greater depth later on in my blog. I also plan to add feeds that will allow you to filter on topic, so if you just want programming tips, you don’t have to read about GTD, and on the flip side you want to read about Productivity and don’t care about programming, you can also read only the posts you care about (after all, part of GTD is simplifying, and eliminating inputs that don’t give you any value).

06
May

Tips for Following the CocoaCast with XCode 3

I imagine a lot of programmers out there have similar issues to mine. I meant to learn Cocoa a while back, as a programmer and Apple switcher. But I never got around to it. Fast forward to March 2008, I still haven’t started learning Cocoa, and now the iPhone SDK comes out! I guess its time to learn!
Of course, I first assumed I would just plow through it. I downloaded the first SDK the day it became available, ripped into the sample projects that were online and looked at the code, I honestly could not make heads or tails of a lot of it. I could figure out what code was building the interface elements, and I could see the dummy arrays that were feeding into it, and had a vague idea of most of the syntax (I had programmed in C and C++ but never in Objective-C). No, If I was going to program for the iPhone (and of course all sorts of crazy app ideas were racing through my mind), then I was going to have to properly learn how to program Cocoa and Objective-C.
After a bit of googling about, I found the perfect resource:
Cocoacast and it used as its Textbook: “Cocoa Programming for Mac OS X” by Aaron Hillegass
It is a very laid back video podcast where the podcaster instructs and screen-casts lessons based on those in the book. It is a very friendl and warm style, but at the same time structured (since it follows the book and has homework), so anyone that wants a college-type environment will find this particular format very enjoyable as well.
Of course, I was anxious to learn, so I started following the podcast without first purchasing the book, and noticed that some of the initial dialogs (creating projects and files, etc.) were a bit different, but I managed to follow along.
Then in the screencast, he began linking some objects to controls in the window and it was completely different, this was when I realized, that the book and the podcast were written for XCode 2 / 2.5, the latest version (the one that came with the iPhone SDK) was XCode 3! Luckily, Google has all of the answers, and this time, it pointed me to the publisher’s website.
I would like to state at this point that I DO plan to purchase the book. However, I am holding out for the version based on XCode 3 (the 3rd Edition), which should be published on May 26th according to Amazon.
I have had very little issue now until I began to follow the exercise regarding a Document-based application. When I created the project, I was greeted by XIB files instead of NIB files. I researched (googled) but no one else had written anything about this. I then decided to install XCode 2.5 on a second computer, and generate an empty document based cocoa application, zipped up my project, and used this as the basis of my exercise. (the RaiseMan exercise).
If I was doing something wrong (it IS odd that nothing turned up when I googled things like “xib vs nib raiseman”), perhaps selecting the wrong kind of cocoa document-based application project…please tell me so that I can post a correction to this post.
Until I stand corrected, I will assume that other people might run into the same problem. To remedy the situation and help other budding Cocoa Programmers out there, you can download an empty document-based XCode 2.5 Project.

29
Apr

Elements of Javascript Style

Javascript is a very forgiving language to program in. As such, everyone has their own way to program it.

My personal Javascript style is continuously evolving thanks to everything I learn from watching YUI’s Crockford videos.

At the moment, I try to approximate most of Yahoo!’s design choices when creating a custom library for a site.

I begin by creating a namespace I will use for all scripts within the site. for example, if it was a script for this site I might go with Ebetan (I am a lazy typist), for the Widget Company, I might go with Widget or Widgetco. the idea is to have a Unique name for a global (Singleton) javascript object where all the scripts and objects you create can reside to avoid any naming collisions with other libraries / scripts you might use (or hack together on the fly). Javascript operates in global scope by default, which can easily create problems for programmers that are new to the environment.

var Foo = {};

right above that, I like to create a $ function that is simply a wrapper for YAHOO.util.Dom.get. This makes syntax much cleaner than the typical document.getElementById. Its a convention that I copied from ProtypeJS.

var $ = function( elementId ){
	return YAHOO.util.Dom.get( elementId );
};

just below the declaration of the base class, I like to have commented out prototype methods for built-in classes. It makes it very easy for add a prototype method to a class just by commenting out the required lines, but at the same time I don’t weigh my code down with a bunch of prototypes I’m not actually using, and since I usually minify my javascript before closing out a project, I don’t have to worry about slowing down the download of the files(comments will just get removed). Here are most of the prototypes that I use (for the sake of appearance, I removed all of the ones that were more than one line, and a few of the longer ones

// Array.prototype.forEach = function(f){var i=this.length,j,l=this.length;for(i=0;i<l;i++){if((j=this[i])){f(j);}}};
// Array.prototype.contains = function(element){for(var i=0;i<this.length;i++){if(this[i]==element){return true;}}return false;};
// Array.prototype.clear = function(){this.length=0;};
// Array.prototype.shift = function(){for(var i=1;i<this.length;i++){this[i-1]=this[i];}this.length=this.length-1;};
// Array.prototype.unshift = function(item){this[this.length]=null;for(var i=1;i<this.length;i++){this[i]=this[i-1];}this[0]=item;};
// Array.prototype.sort = function(){var tmp;for(var i=0;i<this.length;i++){for(var j=0;j<this.length;j++){if(this[i]<this[j]){tmp=this[i];this[i]=this[j];this[j]=tmp;}}}};
//
// String.prototype.scan = function(pattern,iterator){this.gsub(pattern, iterator);return this;};
// String.prototype.strip = function() {return this.replace(/^\s+/, '').replace(/\s+$/, '');};
// String.prototype.stripTags = function(){return this.replace(/]+>/gi, '');};
// String.prototype.escapeHTML = function(){var div=document.createElement('div');var text=document.createTextNode(this);div.appendChild(text);return div.innerHTML;};
// String.prototype.unescapeHTML = function(){var div=document.createElement('div');div.innerHTML=this.stripTags();return div.childNodes[0] ? div.childNodes[0].nodeValue : '';};
// String.prototype.toArray = function() {return this.split('');};
// String.prototype.toDom = function(){var div=document.createElement('div');div.innerHTML=this;return div.firstChild;};
// String.prototype.trim = function(){return this.replace(/^\s+|\s+$/g,'');};
// String.prototype.reverse = function(){return this.split('').reverse().join('');};

at the bottom of the file, I like to cover myself for browsers that have not implemented console.log

try{console.log('');}catch(e){var console={log:function(){}};}

If my project will be using Ajax (most of them have at least a little) I like to occasionally use a modal loading window when something sensitive is changing on the screen. Luckily, YUI has some sample code on how to use their libraries for just this purpose, I of course integrate this code into my class.

loading_window:{},
loading:function(){
	Foo.loading_window.show();
},
end_loading:function(){
	Foo.loading_window.hide();
},
init:function(){
	var modal = true;
	Foo.loading_window = new YAHOO.widget.Panel("wait", {
		width:"240px",
		fixedcenter:true,
		close:false,
		draggable:false,
		zindex:50,
		modal: modal,
		visible:false,
		shim:true
	});
	Foo.loading_window.setHeader("Loading, please wait...");
	Foo.loading_window.setBody('<img src="http://us.i1.yimg.com/us.yimg.com/i/us/per/gr/gp/rel_interstitial_loading.gif" />');
	Foo.loading_window.render(document.body);
},

you should notice I have also created an “init” method, the idea behind this is to execute this method once the page is done loading (when the DOM becomes available). to do that I make this the last line of the javascript file

YAHOO.util.Event.onDOMReady( Foo.init, null, Foo );

Now that I have this nifty little loader, I want to have an easy way to show it and hide it whenever i make an Ajax call. To do that, I have an minor abstraction of Yahoo!’s Ajax implementation. I add these two methods to my javascript file.

makeAjaxCall: function( url, params, parser, method, args ){
	params = params || '';
	parser = parser || function(o){void(null);};
	method = method || 'GET';
	args = args || {};
	args._ajax_call_url = url;
	Foo.loading();
	var callback =
	{
	  success:function(o){
			parser(o);
			Foo.end_loading();
		},
	  failure:function(o){
			Foo.log('There was an Ajax Communication Error calling : '+o.argument._ajax_call_url);
			Foo.log('The Status was: '+o.status+' '+o.statusText);
			Foo.end_loading();
		},
	  argument:args
	};
	YAHOO.util.Connect.asyncRequest( method, url, callback, params );
},
sendFormByAjax: function( form_id, url, parser, method, args ){
	parser = parser || function(o){void(null);};
	method = method || 'GET';
	args = args || {};
	args._ajax_call_url = url;
	Foo.loading();
	var callback =
	{
	  success:function(o){
			parser(o);
			Foo.end_loading();
		},
	  failure:function(o){
			Foo.log('There was an Ajax Communication Error calling : '+o.argument._ajax_call_url);
			Foo.log('The Status was: '+o.status+' '+o.statusText);
			Foo.end_loading();
		},
	  argument:args
	};
	YAHOO.util.Connect.setForm( form_id );
	YAHOO.util.Connect.asyncRequest( method, url, callback );
}

Now that we have this very useful base class, we want a way to easily hang second level classes from it (namely, now that I have Foo, I want to create Foo.Bar under it, and have methods like Foo.Bar.drink_beer(’corona’). The ideal solution is to wrap up the logic for testing for existence of parent classes and creating the ones that don’t exist in a simple clean method. So we add a namespace method to Foo.

namespace: function() {
    var a=arguments, o=null, i, j, d;
    for (i=0; i<a .length; i=i+1) {
        d=a[i].split(".");
        o=window;
        for (j=0; j<d.length; j=j+1) {
            o[d[j]]=o[d[j]] || {};
            o=o[d[j]];
        }
    }
    return o;
}

Now, even though I have made sure console.log is declared for browsers that don’t support it, sending code to production that uses console.log actively is not a good idea (certainly a better one that “alert();”, however. What I like to do is implement a log method, in this case Foo.log(), that simply wraps console.log. What the heck is the advantage of that? Simple, I also create a class property called “debug_on”. Foo.log will test if the value of Foo.debug_on is “truthy” if so, then log, if not do nothing. Now when I publish my code, I can just set debug_on to false. If I need to debug in production, a bookmarklet, firebug command, or greasemonkey script can override my personal client instance of the “debug_on” setting without disrupting the experience of other users. (I’ll show you how to do this in a later post).

debug_on:true,
log:function(msg){if(Foo.debug_on){console.log(msg);}}

In the first level of the javascript class, I typically also have alot of convenience classes. For example, I have a standardized set of feedback divs and styles that I use, and I like to be able to easily use them from Javascript for Ajax and other interactions. I have a few class members for browser detection, and a few other utilities for form manipulation, dynamically determining the relative path of the script for other resources (css and images for example). Each of these items will also be covered in later posts

If you were playing along with the walkthrough, you probably pasted everything above in your text editor. If you are getting errors, check the commas between methods and properties, OR you could just download the sample file I created above from here. (see! laziness does pay off! At least once in a while!)





Twitter

My Plaxo Pulse

Connect on Facebook