Printing business cards with PrintPlace

I got business cards printed a couple weeks ago and thought that it would be useful for others to see my research.

Local print shops

I called up various print shops near me as well as national chains like Kinko’s and Office Depot.  It was really pricey!  For business cards with full color on one side, I was quoted $80-200 for 500 cards.  Office Depot had 500 cards for $30, but it was only for one color and you had to use their templates.

Online print shops

VistaPrint

I didn’t need to research VistaPrint too much.  It’s likely that you’ve already heard of it.  It seems to be the biggest name printer on the internet.  But I wasn’t impressed.  First of all, I don’t like companies that spam, and I get tons of spam from them.  Secondly, they give out tons of free business cards and people give them to me all the time.  I didn’t like the quality.  The budget-priced cards are really dull and I definitely didn’t want people getting that impression about my business.

48HourPrint

When I got the sample materials from 48HourPrint, I was impressed.  They looked like a high quality printer with really good service and fast turnaround.  The only problem was, when I looked at their prices, they were pretty high compared to the alternative online printers.

UPrinting

I liked the interface of the uprinting website the most.  The sample materials were great and were really helpful in helping me  understand the options.  The interface for uploading your design was really nice.  The prices were about the same as PrintPlace, which were the lowest I’ve found.  It also has a nice interface for you to design your cards directly on the site.  What was the dealbreaker?  I requested a sample kit (as I did with all the online printers) and when it didn’t arrive within a week, I requested another.  I eventually got one about 3 weeks after my initial request.  If the company doesn’t impress you to get your business, how are they going to treat you after you’ve given them business?

PrintPlace

PrintPlace is the online printer that I ended up ordering my business cards from.  The best part about them is that they have the cheapest prices available.  Their website, in my opinion, is ugly and sort of hard to use.  But once you get past that and figure out how to use it, it’s great.  What’s great is that they have people running the IM service.  So you can get help with knowing how to set up your design (borders, printing area, etc).  I placed my order for full-color one-sided glossy business cards and it arrived exactly as requested.

There are a number of reviews talking about how bad PrintPlace is.  My guess is that they didn’t follow directions carefully.  When you order things on PrintPlace (not just business cards), they give you a ton of options (paper thickness, finishing, etc).  When I started, I didn’t know what some of the options were.  But after looking at the sample pack and asking questions on their IM service, I figured out what it all meant.  Also, a common problem is how you set up your design.  You’ll need to use CYMK color, otherwise the color might come out wrong.  You’ll need to set up specific margins and borders for the print to come out correctly.  Again, IMing the people on the website would give you the exact specifications for that.  As you can tell, I was really pleased with the service.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Slashdot
  • Facebook
  • Google Bookmarks

Continue reading

, , , , ,

Configuring a catch-all email address with Postfix on Slicehost

This post walks you through how to create a catch-all email for any emails sent to your domain that don’t resolve to an actual email account.  This is handy when people type your name wrong or think that there’s a webmaster@domain.com when that account really doesn’t exist.  Most of the tutorials I found have you modify the /etc/postfix/virtual file.  If you set up your slice as the articles showed you, you probably don’t have this file.  Here’s how to do it:

1. Create an email account for the email that you want all stray emails to go to.  If you already have the account created, you can ignore this step.

2. Run “mysql -u root -p” to go to the MySQL console.  You’ll be prompted for your root MySQL password.

3. Type “USE mail;” to use the mail database.

4. Type “INSERT into `forwards` (`source`, `destination`) VALUES (’@domain.com’, ’sendhere@domain.com);” to add an entry to the table saying that all emails sent to domain.com that don’t resolve to an account get forwarded to sendhere@domain.com.  Obviously, replace the appropriate values for your site.

5. Quit the MySQL console with “quit;” and then reload Postfix with “sudo /etc/init.d/postfix reload”

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Slashdot
  • Facebook
  • Google Bookmarks

Continue reading

, , , ,

Facebook Chat plugin for Pidgin

I just tried the new Facebook Chat plugin for Pidgin.  My experience so far has been flawless.  I shut off Pidgin, ran the Windows Installer and started Pidgin back up.  Then I created an account in Pidgin’s “manage accounts” area.  I didn’t have any trouble at all.  So far, it’s worked 100%.  I really like how it doesn’t show me my friends’ screennames, but just shows me their full (First, last, sometimes middle) name.  It’s extremely clean.  Now I don’t need to log in to Facebook to talk with certain friends, and I get to use the Pidgin interface that I love.

Note: My friend’s virusscanner picked up the installer as a virus.  I used Symantec, with the latest virus definitions (October 28, 2008 rev 4) to scan the install and it didn’t detect anything wrong.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Slashdot
  • Facebook
  • Google Bookmarks

Continue reading

, , , ,

eBay selling tips

I’d say I’m a casual eBay seller.  But somehow, everything I list ends up selling for more than the average comparable product.  My friend asked me how I do this.  Here are my tips:

  • Set your initial price low.  That gets people interested.  If you set it at the price that you want, nobody will even add it to their watchlist.
  • List the auction to end on Saturday or Sunday night sometime between 6pm and 11pm.  When somebody bids on it, the item gets added to their watchlist.  Saturday and Sunday nights are when people have time to watch the auction and make last minute impulse bids.
  • Set the auction to go 7 days.  I’m not sure this is the best tactic, but I think it is.  This gives enough time for a lot of people to see the item and to bid but it isn’t so long that potential bidders might get disinterested.
  • Make sure you have all the specifications listed.  I usually go to the product’s website and copy that.
  • Be honest in what you say.  Describe the scratches and blemishes but reassure them of the functionality and quality of the product.
  • Make sure you include a picture of the actual product (Not one copied off the internet).  This gives the user more comfort that they know what they’re getting.
  • Make sure you answer questions quickly.  That gives potential bidders more time to bid.
  • This is one of the most important things: you want the customer to have a good experience, which is why you should be completely honest in your description of what you post, ship it off promptly, and send them a congratulations/thanks email when you’ve shipped it so they know when it’ll be there.  Good reviews mean people will be a lot more willing to trust you in the future and therefore are more willing to bid.
Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Slashdot
  • Facebook
  • Google Bookmarks

Continue reading

, , , ,

DIY cow USB flash drive

I saw some pictures of animal USB drives on the internet and thought it would be cool to make my own with a stuffed animal and a Sandisk Cruzer 256 mb drive I had laying around.  Here is the usb drive and cow (sorry, I forgot to take a picture of the cow before I cut the seams of the head off).

USB drive before

USB drive before

Chick-fil-A cow before

Chick-fil-A cow before

 

 

 

 

 

I had to cut the seams of the head as well as a couple seams in the back towards the tail.  The cuts in the back are so the lanyard would have a place to come out.  The next step is to take out some of the stuffing and fit the usb drive inside the body.  You might need to take some of the stuffing out to make space for the drive so it doesn’t push itself out.  The stuffing in this cow was particularly stiff (unlike cotton) so it had a lot of pressure at first.  Once you get the pressure right, you’ll need to thread the lanyard through the hole in the back that you carved.

The next step is to glue the usb drive in so it doesn’t pop out.  I used hot glue–at first I was afraid that it would damage the electronic components, but it seems to be fine.  Pull the USB drive out a little bit and add a generous layer of hot glue all around the drive.  Be sure not to put the glue too high because it will stop the cap from being able to attach.  Apply the glue then push the drive down into the body and put pressure around the neck so the outsides are affixed with the glue.  Do the same with the head.

Cow body

Cow body

 

Head with glued cap

Head with glued cap

 

 

 

 

 

 

And here’s the finished product (notice the light from the USB lights up when plugged in):

Cow plugged in

Cow plugged in

Drive turned on

Drive turned on

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Slashdot
  • Facebook
  • Google Bookmarks

Continue reading

, , , , ,

Fixing Error 550 when sending to/from Google Apps email

My problem was that whenever I sent an email from my boogly.net email (hosted by hostgator) to my email at celiacclub.com (email managed with Google Apps for domains), the message bounced, replying with this error:

550-Verification failed for <email>

550-No Such User Here

550 Sender verify failed (state 14).

It only happened for the boogly.net-to/from-celiacclub.com connection–emails from hotmail got through successfully.  If your email isn’t working at all for communication with any email, refer to the Google Configuring MX records page and use dnstools.com to check your work.  Also, make sure your SPF record is set correctly.  At first I thought it was an issue because I’m running Google Apps for Domains.  Thought something was misconfigured on my DNS.  But it wasn’t.  It took a while before I found the Gmail Troubleshooter.  This told me that it was for sure the other host that was attempting to check that the user exists on Google Apps (This is supposed to help alleviate junk mail).

After exchanging emails with hostgator support, I found that the issue was with the hostgator servers’ configuration of localdomains/remotedomains.  In other words, boogly.net thought that celiacclub.com was a local domain so it tried to look on its own system to validate that email address.  You’ll need to modify your server’s awareness of the site.  Here is a good tutorial about how to go about changing this.  Of course, you’ll need to move from the localdomains to the localdomains.  Depending on your host, you might not be able to modify these files–in which case, you’ll need to get on the phone with their support and have them do this process.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Slashdot
  • Facebook
  • Google Bookmarks

Continue reading

, , , , ,

My experience moving to slicehost from HostGator

It’s been 11 days since I’ve had a slicehost account, so I figured I would write about my experience with it.  Slicehost is a Virtual Private Server (VPS) host that pretty much gives you webspace, an internet connection, and lets you do whatever you want with it.  It’s nice to have the control…but that also means you need to configure it all yourself.  I was nervous making the switch because it would mean more responsibility and more liability.  It’s taken a lot of time to configure my slice (almost a week), but I think it was worth it.

Since I’m not extremely experienced with Linux, it took me a while to find my way around.  You start off with a flavor of Linux installed on your slice (you can choose from Ubuntu, Fedora, Debian, and others).  Then you log in and need to secure your server and add the functionality you need.  I followed the tutorials at http://articles.slicehost.com and they were crystal clear.  They were the best tutorials I’ve ever seen.  I got up and running pretty fast.  The problem was customizing certain parts of my server to optimize for my site.  I also ran into some problems when I didn’t do things right.

Whenever I ran into problems, I would just go to http://chat.slicehost.com where there was always somebody there to help.  It’s some of the best tech support I’ve ever gotten.  I’d tell them my problem, then they’d usually ask me to check certain error logs, then they’d tell me what was wrong and how to solve it.  So far I’ve probably taken 20 problems there and they solved 100% of them.  That’s what I love the most about slicehost.

I still use HostGator–some of my websites can’t be transferred yet (too much hassle).  I just had an issue today with my email that I needed to talk to their support about.  I think my experience today was typical of how it’s been the past two years there.  I used their liveperson chat client.  Here’s the conversation(with boring content removed):

[hostgator]: Welcome to HostGator Live Chat, how may I assist you?

Jon: I have an email where all of the emails bounce[problem description]. here is the error:[error]

[hostgator]: Check to see if the mailbox is full.

Jon: it’s not

[hostgator]: That is an odd error. What email can I send a test to?

Jon: [email]

[hostgator]: Sent

Jon: I got your test email

[hostgator]: There has to be something wrong on the Google aps email that cant send out. On the Google aps account try repling back to me.

Jon: sent

[hostgator]: I got it. I am stumped on this. It is like that google aps account just cant send to that one account.

[hostgator]: I would suggest emailing support@hostgator.com to see if the admins can look into the email records and figure out the problem.

Jon: ok

[hostgator]: Sorry I could not help you.

[hostgator]: It confused me and I do not have access to the records.

[hostgator]: Is there anything else I can help you with?

Jon: no thats all

[hostgator]: Excellent, take care and have a great day!

[hostgator]: Thank you for using HostGator Live Chat! If you could take a minute to rate your experience with HostGator as well as my overall performance, that would help us to improve our customer service. To do that, just click the button that says “close” in the upper right hand corner. The survey takes less than a minute to fill out.

This support conversation was actually one of the pleasantest ones that I’ve had–others have been really bad.  Here are the things that pretty much happens every time I talk to support:

1. First off, they blame it on somebody else.  Here they blamed it on Google.  In about 60% of my calls, they blame it on me and tell me that it might go away later.

2. They don’t really understand what your problem is.  They usually always give me a “solution” that’s unrelated, which tells me that they’re telling you to do stuff before they really understand what’s going on.

3. They tell you “I can’t help you.  I don’t have access to that.  You’ll need to email support@hostgator.com”

Yea, I would always like to email support@hostgator.com first to get the support guys that actually have permissions to fix my problem.  But the problem with that is that it takes them way too long to answer them.  One time I had a huge server problem and I emailed them.  Our email conversation went through this process: [hostgator]it’s not our fault, [me]yea it is, look at the logs, [hostgator]okay I changed xxx, [me]no it still doesn’t work, [hostgator]oh, I’ll change this [me]no, it still doesn’t work, [hostgator] it’s not our fault.  That particular issue took 4 days to resolve.  Email support would respond about 5-30 hours later.  Meanwhile, I had customers calling me every hour or so.

Which is why I believe that slicehost will work a lot nicer.  I wrote this article mostly to provide the advice I wish that I had, not to get referral points or whatnot.  But if you do sign up for slicehost, I’d be appreciative if you use me as the referral by clicking this link–it won’t increase your price at all.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Slashdot
  • Facebook
  • Google Bookmarks

Continue reading

, , , , , , ,

Changing “wishlist” on Magento

I didn’t think it was fitting to call it a “wishlist” on CeliacClub.com.  Frankly, if I went to any website with a wishlist, I’m not really sure what it does.  I think calling it a “watchlist” is much more applicable.  This article shows how to change it on your Magento site.  This process could probably be adjusted to modify the other named aspects of Magento also.

1. We don’t want to mess with core Magento files so it’s best to modify the string translations.  Edit the following CSV files (I like to edit them with a plaintext editor like Notepad++ but you could use Excel to do it):

  • /app/locale/en_US/Mage_Wishlist.csv
  • /app/locale/en_US/Mage_Adminhtml.csv
  • /app/locale/en_US/Mage_Catalog.csv
  • /app/locale/en_US/Mage_Checkout.csv
  • /app/locale/en_US/Mage_Customer.csv
  • /app/locale/en_US/Mage_Reports.csv
  • /app/locale/en_US/Mage_Rss.csv
  • /app/locale/en_US/Mage_Sales.csv
  • /app/locale/en_US/Mage_tag.csv

With these csv translations, the original string is the first value on the line, indicated by quotation marks (or on the left side, if you’re using Excel).  The replacement string is the value following it, separated by a comma (or on the right side, if you’re using Excel).  You’ll need to use the “replace” function, but we need to be careful not to change any of the original string values–we only want to change the translation values.  We also need to be careful to preserve the case of the strings–that’s why I use Notepad++ where I can match the case.  Do a Replace search for “wishlist” and check the box for “match case”, replacing with “watchlist”.  Don’t do a “Replace All”.  You’ll need to individually replace each string, making sure to only change the second value on each line.  After you’re done doing that, do it again, but for “Wishlist”.

2. We need to change the rewrite configuration of the URL so that requests for http://website.com/watchlist/ get referenced to http://website.com/wishlist/ .  Unfortunately, I don’t have a solution for this yet.  I spent 4+ hours on this but run into 404 errors that I think are caused by Magento.  I’ll update this blog when I find a solution.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Slashdot
  • Facebook
  • Google Bookmarks

Continue reading

, , , ,

Configuring bridging on Westell modem

I wanted to set up my Verizon Westell modem so that my router has the IP address and does all the networking functionality.  This makes administering my network easier.  After searching the internet, I found that lots of people had this problem but there didn’t seem to be any clear answers.  After spending a couple hours on the phone with tech support, I finally got it working.  Here’s my setup:

phone line–>modem–>router–>wifi/ethernet

modem: Verizon DSL Westell 6100F (but any modem with the Verizon firmware should work)

router: Asus WL-520gu with DD-WRT firmware (but any router should work)

Here’s how I did it:

1. Use a pencil or other pointy object to hold the reset button on the modem for 30 seconds.  This will restore the factory configuration so we can start fresh.

2. Connect the ethernet port of the modem directly to your computer.  Make sure your computer is set up to acquire an IP address through DHCP.

3. In an internet browser, open 192.168.1.1/verizon/redirect.htm .  This will bring you to a page that allows you to disable redirection.  Click the “disable” button.

4. Browse to 192.168.1.1 .  Now we need to set up the modem for bridge mode.  Click “My Network” at the top, then “Network Connections” on the side.  Click the “edit” icon for “Broadband DSL”. and then click the “edit” icon for “VCs”.  This will bring you to a page that allows you to configure the bridging.  Make sure that “Protocol” is set to “Bridge” and “Bridge mode” is set to “Bridge”.    Make sure it’s not set to “Routed bridge”.  That’s not what we want.  Then click to apply changes, but don’t let the modem restart yet.  We still have to change one more thing.

5. Click the “advanced” button at the top of the webpage.  Then click the “Private LAN” link.  The first checkbox should say something like “Enable DHCP server”.  Uncheck that.  We don’t want the modem dishing out IP addresses.  Then click “apply” to save.

6. We’ll need to turn off the modem now.  Turn it off.  Turn of your router too.  When we turn the modem back on, we won’t be able to connect to it any more to configure it.  Unplug the cable connecting your modem to your computer and plug it into your router’s WAN port.  At this point, I needed to call Verizon support to tell them to release my IP address.  If you don’t do this, your modem will still try to take the IP address.  I think you could get by without calling support by waiting a few days, but most likely you want internet now. =)  After tech support is sure that the IP is released, power on your modem.  Wait for the modem’s “DSL” light to turn solid green.  Then turn on your router.  If all went well, your router should now have an IP address given from Verizon.  If not, read step 7.

7. (optional)  If your router didn’t automatically get the new IP address, there’s a chance that it wasn’t configured the way we need it.  I have my router configured to get the WAN through “Automatic Configuration - DHCP”.  Yours might be different, depending on your router type.  Then, you’ll likely want your router to be a DHCP server for your LAN–by doing this, any computer that connects to your network will be able to get an IP address and get on the internet right away.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Slashdot
  • Facebook
  • Google Bookmarks

Continue reading

, , , , , ,

Nutrition label creator

While working on the design for celiacclub.com, I found that I needed to create several nutrition labels, but couldn’t implement it dynamically.  With the help of Jonathon Eric Cihlá?’s CSS, I wrote a PHP script to generate the code for the labels dynamically. You’ll need to unzip the files into a php-enabled directory. Here are the files:
nutritionmaker.zip

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Slashdot
  • Facebook
  • Google Bookmarks

Continue reading

, , , ,

prev posts