jQuery UI Datepicker Inline Select
It is well documented on the jQuery UI site on how to take a value from Datepicker when calling it from an input field. However when embedding Datepicker on a page (associating it with a div instead of an input field), you have to add a small amount of code to easily capture values from it.

The key component to making it work is using the onSelect event. Here is the jQuery code, with “#datepicker” as a div:
$("#datepicker").datepicker({
onSelect: function(dateText, inst) {
$("#datepicker_value").val(dateText);
}
});
“#datepicker_value” is an input field that is updated every time the user selects a different date. This input field can be easily added to any form for submit. Visit the Datepicker demo page for a working example.
Owning your domain name
The importance of owning your own domain name as opposed to your web development company is simple to explain in one question:
Would you want them to have full ownership of your company name and logo?
It’s very common for web development companies to purchase and handle your domain name in their portfolio. While this is the most convenient method, it can lead to problems in the future.
Some scenarios to consider if you allow them to own your domain name:
- What if the web development company went out of business?
- What if they forgot to make a payment for the domain name?
- What if you wanted to switch to another web development company?
Each scenario can lead to you completely losing the domain name, disastrous to any marketing plan. Even the slightest change to your domain name will lower your search engine results and break any links to your site.
Element Design feels its very important that you own the domain name, and will guide you through all of the steps to make it happen. Other than having you purchase and register the domain name, we take care of everything else.
Jolicloud Alpha 2 Review
In the near future many personal devices are going to be solely operating over the internet. Operating systems will soon only become internet browsers, as everything you require will be available online (an example would be using Google Docs instead of Microsoft Word, Gmail instead of Outlook). Even Microsoft is planning on releasing free online-only versions of Office. Jolicloud is the first “Cloud” concept I’ve tried, but I will admit that we still have a long ways to go.
I was pretty excited when I first heard about Jolicloud. I signed up for the beta and just recently received an invitation to their Alpha testing. They obviously have some pretty good UI designers, however that is not enough to bring it all together.

Jolicloud runs off of Ubuntu Remix, which is a version of Ubuntu optimized for netbooks. The interface is sleek and the installation of new Apps* is extremely simple.
What’s important to note is that their Apps* are basically bookmarks. Jolicloud does nothing but install bookmarks to your interface, and upon clicking any of the bookmarks, just simply launches an internet browser. You can see where it was trying to be a Cloud OS, but the part it fails at is being minimalistic. From what I can tell, most of Ubuntu Remix is still in place making the experience must slower than it could be.
What’s even more useless is their “Social Notifications” tab. It would make sense to have Facebook, Twitter, Gmail, etc updates in there, but instead, just says what Apps your other Jolicloud friends have installed. It’s the same as getting alerted every time one of your friends adds a bookmark to Firefox. What is the point?
As a matter in fact, why wouldn’t you just use Ubuntu Remix instead? It’s not hard to add bookmarks to your favorite pages. Why install an Operating System that has a much smaller user base than Ubuntu, when it basically is Ubuntu?
I’m going to stick with the development of Jolicloud, but for the time being I wouldn’t recommend even trying it out. When it comes to a true Cloud OS, it looks like Good OS Cloud is going to be one of the first out.
Update: I posted a question on Jolicloud’s facebook group about if the apps are simply bookmarks. A day later, my question was deleted. Maybe I’m onto something?
The Truth About SEO
Search Engines have evolved to the point where they can now determine whether or not the information on the website is sound. Many SEO companies are still operating by rules and tricks used in the past, so I have constructed this 2009 guide to help you better understand search engines.
1. “Beware of SEOs that claim to guarantee rankings”
That quote is straight from Google’s support site. This is by far the most used and misleading promise of all. Without lifting a finger, they have already given you front page placements!
If they never promised what keywords will bring you this placement (which they never will), this is most likely a scam. Lets pretend we have the company Fred’s Advanced Plumbing and Heating in Grand Rapids, MI for the following example. Ideally, you would want the following search phrase “plumbing in grand rapids” to pull up your company first. However, the SEO company could complete their contract by saying that the search phrase “fred’s advanced plumbing and heating in grand rapids mi” is giving your site a front page placement!
It is also important to be aware of the websites currently above you in your rankings. Ask yourself the questions:
- “Do I have the resources to get above theirs?”
- “Is their website larger than mine and most likely getting more hits? If not, why is their content considered better?”
2. “We will submit your site to Google and other search engines!”
Again, another scam. There was once a need for this, but not anymore. Your site is automatically indexed in all search engines, and will continue to be scanned for changes. While the process is never instantaneous, after a week or two of a new site launch, search engines like Google will begin to index the site and place it into search results.
3. “META keywords will greatly improve your sites ranking” is no longer true
Keywords do not effect search engine rankings, and will soon become obsolete.
Part of the evolution of search engines is to ignore keywords. These are far to easy to fake, and can have nothing to do with the rest of the site. For this reason, keywords are no longer used to rank search results (Yahoo still reads them, but it provides very little help in increasing rankings). Instead, search engines now pull “key words” out of paragraphs of text to rank your site.
4. There are better ways than stuffing your pages with more text to get higher rankings
This is the double-edged sword of increasing your search engine rankings. It is true that in some cases adding more text will give search engines more to index (and more “key words”), but what about your customers? You do not send out flyers, brochures, or purchase advertisements that are long winded and boring. It’s important to keep your website concise and never lose its main purpose as a selling tool. If you absolutely need to throw a lot of information at your customers, consider breaking it into several different pages.
In the end its important to always be skeptical of any sales pitch. Take in the facts and remember to do research to determine whether or not a SEO company has any merit to their claims. Element Design can determine if your website is standards compliant, and if it meets search engine guidelines. For further reading, please visit any of the following articles:
PHP APC for Windows Download
PECL 4 Win has been down for quite a while making the search for some PHP extensions unnecessarily difficult. I’m offering this permanent APC download for not only my records, but to help others searching for it. As of August 19th, 2009, 3.1.3 is the latest beta version, and 3.0.19 is the latest stable.
Download php_apc (Windows 3.0.19 Stable)
Download php_apc (Windows 3.1.3 Beta)
For more information on APC, please visit the PECL page.
WordPress & jQuery: “$ is not a function”
If you are trying to add your own jQuery code to WordPress, and have had the error “$ is not a function” show up on Firebug, here is the fix:
Convert all dollar signs ($) to ‘jQuery’
The dollar sign is reserved in WordPress for the Prototype library, which is why it errors out. For example, instead of:
$().ready(function() {
$("#select_me").show();
});
Change it to:
jQuery().ready(function() {
jQuery("#select_me").show();
});
Notepad++ FTP Synchronize vs UAC
The issue I was having dealt with FTP Synchronize not opening any files beyond the root FTP folder. There were no error messages, and no indication other than the root files were opening in a folder in Program Files. UAC is blocking the creation of files within Program Files, so the solution is to change the cache location for the FTP Synchronize files.
Solution:
- Click the “Settings” button in FTP Synchronize

- Navigate to the “General” tab.
- Check the “Use nondefault cache location if none provided by profile” box
- Then use the browse button to navigate to a folder outside of Program Files (for example, your user folder)

Press “OK” to save changes, then restart Notepad++. You will now be able to make edits directly to your FTP sites.
Jcrop Large Image Previews
Jcrop is an excellent jQuery plugin developed by Deep Liquid. It is used to easily crop images on websites without having to use any photo editing software.
There is documentation on their website on how to use boxWidth and boxHeight to deal with large resolution pictures, however it does not tie together those methods with the preview pane (visit the demo this post is referencing).
Assuming you are using boxWidth to shrink down the image to 500 pixels wide, with a thumbnail 80 pixels by 80 pixels, use the following code to correctly display the preview pane.
jQuery('#cropbox').Jcrop({
onChange: showPreview,
onSelect: updateCoords,
aspectRatio: 1,
boxWidth: 500
});
function showPreview(coords) {
if (parseInt(coords.w) > 0) {
var rx = 80 / coords.w;
var ry = 80 / coords.h;
var img_height = $("#cropbox").height();
var img_width = $("#cropbox").width();
jQuery('#preview').css({
width: Math.round(rx * img_width) + 'px',
height: Math.round(ry * img_height) + 'px',
marginLeft: '-' + Math.round(rx * coords.x) + 'px',
marginTop: '-' + Math.round(ry * coords.y) + 'px'
});
}
};
The variables img_height and img_width find the new dimensions of the image, which are unique for images with different dimensions. The variables are then used to make calculations for the width and height of the preview pane.



