Why not use GoDaddy?

I just received this email question from one of my students:

Peter,
I am currently working on a website for one of my clients. She said that she took your web design class and mentioned that you use QualityHostOnline.com for your hosting and domain needs instead of GoDaddy. My question is why? Why meaning is there a reason or just a preference that you choose Quality Hosting. Please let me know.

Here is my response:
Tim,
Originally GoDaddy limited what you could install on the server. When I first hosted with them I quickly found out I couldn’t install Drupal. I still remember how arrogant the help person was telling me that the agreement did not allow a refund but that he was going to refund some of my money anyway…

The Drupal limitation has since been fixed although recently there was a snafu with a GoDaddy client using Drupal and being charged over $6,000 (http://www.huffingtonpost.com/adam-fendelman/why-i-dont-owe-godaddy-65_b_129276.html) The only thing that helped resolve the problem was his article on Huntington and the furor it caused. All the bad press caught GoDaddy’s president’s attention and he stepped in to resolve the things and stop the bad press.

Their advertising is extremely sexist. Something I might enjoy looking at but not something I can recommend to students in class. Especially when one of my students started doing a web site for his church…

And, just recently, I tried to transfer my domain being held by GoDaddy to QualityHostOnline. It took me over two months to accomplish due to an unknown userid/password that was automatically setup without my input when I purchased a privacy option. Because my email on GoDaddy was no longer valid I had to fax, mail, and send scanned copies of my driver’s license and a specific numbered form to a branch of GoDaddy. They would also have accepted copies of my passport which makes me even more nervous. They made it EXTREMELY difficult to do the transfer. I had to send the request three different times and made numerous phone calls all to the answer of “I’m sorry, that is out of our control.”

Meanwhile, I’ve been with QualityHostOnline for almost five years now and have had excellent support, low cost, and overall good results on a consistent basis. They were very helpful and responsive during my domain name transfer. I’ve also recommended this hosting service to other instructors and many many clients and everyone is having the same positive experience.

So, there you have it.

Guess I’ll make this into a blog entry.

Peter

PS – You might want to do a web search for “GoDaddy ethics” It makes for some interesting reading.

Addendum: 09-15-09 I’ve been having a lot of downtime with QualityHostOnline.com and am migrating my servers over to BlueHost.com based on recommendations from several of my students. I can no longer recommend QualityHost as I have in the past.

Tutorial videos from my courses

I’ve been creating some demo movies as part of my on-line classes and have posted them out on blip.tv.

I thought you might like to look at the series. I’ll be adding new ones on a regular basis.

Here’s a link showing all the videos available out on Blip.tv.

I’m using ScreenFlow to create my onscreen videos. This is an amazing program that allows me to capture video and sound and edit using scrolling and panning. Mac only. What is displayed here is only the video portion of the more complete tutorials I offer as part of my online and face2face courses.

The videos shots of my whiteboard talks are taken using a very inexpensive ($150) Aiptek HD1080P pocket-size video. Chad Peterson, one of my students is working on the editing. These resulted from one of my online students asking me to record my entire class. That is very difficult, getting good sound, but I thought I’d try some simple videos that focused on specific concepts to see how enhance the learning activities for each module.

I’d be interested in your comments on how useful these would be to you as a student. Thanks!

What should I charge?

What should I charge? This question comes up a lot.

Here’s are some pieces to the puzzle that might help determine what to charge a customer. Each one has to work with the others.

  • What is your time worth?
  • How fast are you?
  • Do you want the business relationship to be long term or short term?
  • What is the current market rate?
  • How much experience do you have?

What is your time worth?

A person out of high school working at a burger shop will put a lower price on his or her time than a professional manager that is making big bucks. Be careful not to undersell the value of your time.

How fast are you?

You have to realistically look at how fast your can create web pages or write a program. It takes a new student a much longer time to figure out a basic CSS design than a seasoned, five-year CSS expert. And, the expert will have several templates ready and waiting so he or she can create a basic site in minutes. Literally.

Even something as simple as typing speed plays into this figure. Let’s say you can only tap out 30 words per minute on a good day. And, that’s using English words. It might drop down to 15 words a minute when you start typing code…

Now compare your output to another person who is able to type code at 60 wpm or higher. Who will be the most productive? The 60 wpm will be able to generate four web pages or more for every one the 15 wpm typist can write. If you have your skill set down (CSS, XHTML, design, some JavaScript) and have a few web site templates in your personal library that you can build from you will be able to finish normal tasks much quicker than someone that doesn’t. The faster you are the more you can charge. Time is money for both you and your client.

Do you want the business relationship to be long term or short term?

This will help you determine how to charge. If you want this to develop into a long term relationship you may want to charge a flat rate for a set number of pages. Later additions and changes could be billed at an hourly rate. A common error though is to charge to little in order to “buy the business”. After awhile you will find yourself doing lots work and the first question, “What am I worth?” will be nagging at you. It’s always harder to raise rates later than to bill a little higher in the beginning.

Should you charge by the hour or by the project? A short job is usually best by the hour. Longer projects could be billed by a flat rate. Also, if you are newer to the business of web site programming and design you might want to charge a flat rate for a set number of pages.

What is the current market rate?

This is the question that most people are really asking. But, these numbers are only valuable if they seen in context with the other questions listed here. Most professional agencies charge between $100 – $200/hour. A complete, professional website normally runs $1,500 on up depending on how complex it is. The keyword here is professional. Also, keep in mind that these rates are what the agency charges, not what the web programmer gets paid. The agency or company has to pay salaries, utilities, and rent out of this money as well as show a profit.

I usually recommend to people just breaking into the market to charge between $15 – $50/hour depending on their skill level. Once they are established they can charge the higher rate. Established could be roughly defined as a person that has at least 10-15 working web sites that they maintain.

How much experience do you have?

As you continue to work in the field and learn more skills and techniques you will be able to charge more. Experienced people have built up a toolbox of code and techniques that allow them to build and maintain sites/programs quickly and easily. Also, a web developer/programmer that can build a shopping cart or a web page that can be maintained by the customer without needing a programmer is a lot more valuable than one that can only create static web pages that simply display information.

If you can think of better ways to do the routine things quicker and easier you will be even more valuable. For example, one of my students started work at a web design company and put together a framework of code that allowed him to created complex web sites very quickly. Each web site had the same basic structure, but by adding different graphics and modifying the CSS code he was able to create unique sites in an hour or so (once he had the framework built.) All the other employees took several weeks to accomplish the same amount of work.


Technorati : , ,
Del.icio.us : , ,

Got API?

gotAPILogo.gif.jpg

Got API?

An Application Programming Interface is a set of functions that let you “hook” into a system without having access to the source code or inside workings of that system. There’s an API for all the modern languages like Java, PHP, Ruby On Rails, and HTML. Sites such as Google, Amazon, and eBay all have an API allowing programmers to access information from their sites. Here’s a list of the APIs Google has available for many of its services including maps, adwords, and Blogger data. This lets a savvy programmer include all types of eBay or Amazon services on their web site by using what these sites have already created.

You can also think of an API as a dictionary. Just like an English dictionary displays words and their meanings, an API lists all the functions available in the API as well as what type of information each one is expecting and what type of information each function will return. Programmers use an API as a reference in using functions correctly.

Up until now a programmer had to keep a copy of each API on their computer or keep a list of bookmarks pointing to the APIs out on Web.

gotapi.com changes all of that. All the common language APIs are now available from a single link page. (Sorry, the application APIs such as Google, Amazon, and eBay aren’t listed yet.) As a programmer this means you can find information quickly as you are writing code.

gotAPIStartMenu.jpgTip: With the gotapi.com page displaying, click and drag the icon in the Address field gotAPIURL.jpgof your browser and drop it on upper part of your Start menu button. You’ll see a solid black line showing you were it will be positioned as you drag it into the Start list.

Anytime you need to look up a function, gotAPI.com is only a click or two away.

– Special thanks to Sean Washington for reminding me about this really great programming tool.


Technorati :
Del.icio.us :
Ice Rocket :
Buzznet :

Write Your CSS Code in Style

CSS (Cascading Style Sheet) coding is gaining a lot of popularity. And, because it is often edited you should think about writing your code with a bit of style. This will help prevent errors and typos from creeping in and make your code much easier to decipher and update anytime in the future.

I’ve started adopting a three-column layout for my CSS code. Here’s a sample styling my <p> element and a header id selector.

writeYourCSSInStyle.jpg

(Click on the image for a larger view.)

At the top of each element block I add a comment describing what this will do. For the standard XHTML elements this isn’t necessary, but it is really critical for any custom id or class selectors you create.

In the first column I list the element (in pink) then the attributes. I’m always consistent with the curly braces putting the opening one right after the element going down two lines and typing in the closing one right away, so I don’t forget it.

In the middle column I list the value, lining them all up with each other. I use spaces to do this because tabs will expand and contract on other computers making a mess of things.

In the third column I add comments describing what each item does. This has saved me hours of work. It makes quick work to track down a specific item when making minor changes. This is especially true if you are smart in your commenting. Instead of stating the obvious, describe any weirdness that may be happening or how this attribute relates to the others. I pretend that whoever will be reading this is the future has only the basic knowledge of CSS.

Follow these guidelines for some very stylish CSS code. It will make you look very professional as well as making your web programming future a lot less stressful.


Technorati :
Del.icio.us :
Ice Rocket :
Buzznet :

File Naming Conventions

If you work with files you should have a set of rules that you follow so that your file names are always consistent. This is especially true if other people will be working with your files which is very common in web work and programming.

Here’s the file naming conventions that I have developed over the years as a programmer and web person. What you do is not as important as being consistent. Using the same name convention will save you countless hours of “fixing” things and looking up to see how a filename was spelled. I recommend using these rules for filenames, folders and directories, and variable names.

  • always start a filename using lowercase
  • don’t use spaces or underscores _
  • use camelCaseToMakeNamesEasierToRead
  • don’t use plurals – for example: Use “graphic” instead of “graphics”
  • be consistent with extensions. .html should always be .html and not .htm one day or .default on another day.

Here’s the reasoning and experience that helped me develop this list:

Always start a filename using lowercase
80% of the web servers use Apache running on Linux and Linux is case sensitive. By starting every name with a lower case letter you remove the guesswork like “Now, was it Index.html or index.html?” On a Linux server these are two different things.
Each time you have to go look up a file name to find out you used the wrong upper/lower case means less time with your video games or bronzing on the beach.

Don’t use spaces or underscores “_”
Web servers and programming languages are befuddled by spaces. They may work in Windows and Word, but most other computer programs don’t even allow them. Linux is a good example.

Why not underscores “_” you may ask. Underscores will “hide” when being displayed as an underlined word and users think they are spaces. Also, why add another character to your name if you don’t have to? And finally, how many people can touch-type the _ character. Every time you have to pause your typing to hit a special key means the longer it takes to complete your killer app.
Use camelCaseToMakeNamesEasierToRead
This is the solution to not using spaces or underscores. Note how easy it is to read the statement above. Its much faster to type this way. You’ll have to personally decide how you are going to handle acronyms. For example: web3RSS.html or web3Rss.html or web3rss.html
My recommendation, for readability and recognition, is to keep an acronym as all caps: web3RSS.html

Don’t use plurals

For example: use “photo” instead of “photos”

When working with a programming team we spent countless hours fixing our programs because of simple spelling “errors” like this. Then, one day someone suggested that we follow this rule and everyone’s life got so much easier.

It’s a little weird at first, but after a few times of knowing how a foldername will be and not having to go look it up makes it all feel right in the end.

Be consistent with extensions and keep them lowercase.

I recommend always using .html. Don’t use .htm one day and .html the next.

Same thing with .jpg


By following these rules on a regular, and consistent basis, you will be able to work faster and with a lot less frustration.Note: There’s a few exceptions to all of this. If you are a Java or .NET programmer than you will want to have all your Class files begin with an upper case letter. And constants are always written using ALL_CAPS with underscores to separate the words. These are both naming conventions that were around a lot longer than my little set of rules.

A great new book for Web Programming II

This class covers both client-side scripting like JavaScript and server-side scripting using ASP.NET. Every year I go through the same anxiety, “What book(s) will I use for Web Programming II?”

Because this area is changing so dramatically I always need to find new textbooks. I think I’ve found a great JavaScript book for the class starting this August. I first heard about it while listening to a podcast from Paul Boag (Boag’s World podcast #23 – Defining Your Project) It’s called DOM Scripting by Jeremy Keith and offers great scripting techniques that include the DOM (Document Object Model), CSS, and XHTML.

The DOM allows a programmer to address any component on a web page. This could be a button, a title, or a specific paragraph. In the past DOM scripting was very tedious and worked differently in different browsers.

Jeremy starts out discussing the basics of JavaScript and builds on that utilizing the DOM based on its current standard which now works in all the popular browsers including Internet Explore and FireFox.

The projects he uses to demonstrate the code include a photo gallery and an animated slideshow. These not only look like fun but could be a valuable addition to your web site.

I’m also looking at making some Flash movies available for the second half of the course. Check out the instructional movies at LearnVisualStudio.net I’ll be looking closer at how I can include these as part of the course over the summer.

This is going to be a great course. Here’s the syllabus that lists all the stuff you will learn. (This is last year’s syllabus and it will be updated and revised over the summer.)