A creative blog,

with reason.

Walk A Mile In Someone Else’s Shoes

Written on December 14, 2009 at 6:49 pm, by Brian Schwartz

I’m at work and just got this picture from my wife. It made me chuckle:

Gabe Walking In My Shoes

How to win a fight on the internet

Written on December 11, 2009 at 12:12 am, by Brian Schwartz

I don’t recommend arguing on the internet, however if you do feed the trolls and end up getting into an heated argument I have the solution for you.

Send them here.

They will be so absorbed by the pure awesomeness of this page, they will have no choice but to smile, accept their defeat and walk away.

Seriously though, I saw this page about 4 or 5 years ago on a URL called e-thug.net (intentionally not linked, because the site is no longer up). The page cracked me up and I loved the irony of the URL and it was used for the above purpose: to end an argument (or sometimes as a similar link prank as rick-rolling).

Anyway, earlier today someone’s ringtone reminded me of that song and to my chagrin the site was no longer live. So I spent 10 minutes and went to the wayback machine, did a little digging, found the page, tweaked it to work on my site and voila, it’s resurrected. I hope you enjoy.

P.S. - If you are the real “Thomas” and want me to take this down, by all means contact me and I’ll be happy to remove it.

Twitter Without Columns

Written on December 5, 2009 at 6:10 pm, by Brian Schwartz

I love Twitter, which is obvious if you met me there (and you likely did if you’re reading this)… I’m usually on it all day, except for meetings with clients and dates with my wife.  I love the instant nature of it, the ability to make connections to people with like interests, follow inspiring designers / developers and for a variety of other reasons.

That said, I’m probably getting close the have a cap to the amount of people I can follow. Why? Well, I don’t use tools that separate people into groups. Twitter apps like Tweetdeck, Seesmic (and others I’ve never tried) allow you to follow your friends and group the people you follow into logical columns so you can track certain accounts together.

I used to use this approach… I had a column in Tweetdeck for people I follow who tweet about Sports, Business, Design, Web Development, “Good Friends”, etc and a few saved searches – mostly related to Spoke or our clients. But I gave up Tweetdeck and the column approach altogether. Why? Two reasons — One was a problem I had with links in AIR apps and the second I didn’t realize until was a problem until I started using Tweetie for Mac: I wasn’t interacting with a lot of people.

Tweetie is great!See using these columns I was virtually ignoring the All Friends column.  I was interacting with the same people over and over again and unless I added the account to one of those columns when I started following it, I would most likely not see any of their tweets.  I didn’t even realize that I was doing this until I switched to Tweetie.

Tweetie is a one-column application (a la – All Friends column in Tweetdeck) and after I started using it, I noticed that I read (or at least skimmed) through the tweets in the stream (when I’m on twitter, I don’t worry about trying to catch up when I’m not). After a while I noticed I was interacting with more and more people. Making new friends, unfollowing people who spammed my tweet stream. Life is good.

I found one draw back to this approach — I’ll run into a maximum number of people I can follow. I’m right around 1,000 now, and I’ve decided to start removing people from the list if they are tweeting the same thing alot or if they are business bots that just tweet blog posts, etc.

My Advice: Find Your Approach

I’ve talked with people each with different points of view about how many people to follow. Some only want to follow 100 people so they can keep up, other’s don’t care and just pick and choose what they pay attention and some people care about their follower numbers, so they follow everyone.

I made a comment on Mark Murnahan’s blog post about the following / unfollowing trend about my approach and his reply was that the communication matters less than the approach. He’s right, he also follows 18,000 people, something that I’ve come to realize I probably never want to do. It’s just not me… I want to interact with a large majority of the people I follow. I want to follow people who’s tweets I care about reading, and I want to actually read them.  That’s the twitter approach that works for me. Make sure to find the way it works best for you.

I Like Google Wave… But…

Written on December 2, 2009 at 7:40 pm, by Brian Schwartz

There is never anyone else on it when I am.

I’m a member of 6 or 7 big public waves, each with hundreds of users. Other than when I first got my invite (and when a few of my friends got theirs) have I seen another person actively using the same wave as me.

If you zoom in on the picture below you should see green dots next to people online (unless I’m missing something) and there are none. Most of the public waves I go to haven’t been updating in a couple days (if that recently).

In order for Wave to be truly effective, it needs to be an interactive experience. Once my team at Spoke get their invites, we can give it a run for collaboration, but until then, it’s a ghost town, and it bores me.

Category Thumbnail View for Magento

Written on November 21, 2009 at 10:36 pm, by Brian Schwartz

Background

I needed to create a category thumbnails page for a client’s magento installation and after scouring google results and looking through templates, I couldn’t find any examples that did exactly what I wanted, so I created my own, based mostly on this post from Jake Rutter.  I figured I should share this in case someone had a similar need to mine.

I ran into a few problems one of which I solved, one of which I didn’t:

  1. Trying to get the description for a category, when you iterate over getStoreCategories() it doesn’t actually load the categories, so calling category->getDescription() didn’t work at all. I had to actually load each category to do this.
  2. Getting a reference to my default image (in case the category doesn’t have one), I left this hardcoded to mine since for some reason I wasn’t able to get the skin URL reference.

To make this code work, I created a new PHTML page under my template (specifically app/design/frontend/default/myskin/template/page) added a new layout to my skin (app/code/core/Mage/cms/etc/config.xml or if you prefer your own local.xml)
and made a static page use this template. That was it.

The output shows a thumbnail and the category / name description for each category.

Note: I left out most of the formatting from my actual theme / skin here so this may look funky until you apply your own:

<?php
 
$_helper    = $this->helper('catalog/output');
$_description = "";
 
function getCategoryImage($category) {
    $categoryCollection = Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->getCollection()->addAttributeToSelect('image')->addIdFilter($category->getId());
 
    foreach($categoryCollection as $category) {
        return $category->getImageUrl();
    }
} 
 
function getCategoryDescription($_category) {
	$_loadedcat = Mage::getModel('catalog/category')->load( $_category->getId());
	return $_loadedcat->getDescription();
}
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->getLang() ?>" lang="<?php echo $this->getLang() ?>">
<head>
<?php echo $this->getChildHtml('head') ?>
</head>
<body <?php echo $this->getBodyClass()?'class="'.$this->getBodyClass().'"':'' ?>>
<?php echo $this->getChildHtml('breadcrumbs') ?>
<div id="main">
  <div class="wrapper">
        <h3>All Categories</h3>
        <?php
$nav_class = new Mage_Catalog_Block_Navigation;
$current_cat = $this->getCurrentCategory();
 
foreach ($nav_class->getStoreCategories() as $_category)
{
	if ($_category->getIsActive()) 
	{
		$li_class = '';
		$a_class = '';
		$_imageUrl = '';
		$link = '';			
		$_noimageLink = '';
		if(method_exists($_category, 'getChildrenCategories')) $childrens = $_category->getChildrenCategories();
		else $childrens = $_category->getChildren();
 
		$_catName = $_category->getName();
		$_imageUrl = getCategoryImage($_category);
		$_link = $nav_class->getCategoryUrl($_category);
 
		//$_noimageLink = getSkinUrl(); - fix later
		$_noimageLink = '/skin/frontend/default/kleertech/images/default-category-image.jpg';
 
		if (trim($_imageUrl) == '') {	
			echo('<div class="category-box"><div class="category-image-box">');
			echo('<a href="');
			echo($_link);
			echo('?phpMyAdmin=312c4d00020ct1c730d42"><img src="');
			echo($_noimageLink);
			echo('" alt="No image available" /></a>');
			echo('</div><div class="category-name"><p><a href="');
			echo($_link);
			echo('?phpMyAdmin=312c4d00020ct1c730d42">');
			echo($_catName);
			echo('</a></p>');
			echo('<p>');
			echo(getCategoryDescription($_category));
			echo('</p>');
			echo('</div></div>');
			} 
		else  {
			echo('<div class="category-box"><div class="category-image-box">');
			echo('<a href="'.$_link.'?phpMyAdmin=312c4d00020ct1c730d42"><img src="'.$_imageUrl.'" alt="'.$_catName.'" /></a>');
			echo('</div><div class="category-name"><p><a href="'.$_link.'?phpMyAdmin=312c4d00020ct1c730d42">');
			echo($_catName.'</a></p>');
			echo('<p>');
			echo(getCategoryDescription($_category));
			echo('</p>');
			echo('</div></div>');
		}
	}
}
?>
</div>
<?php echo $this->getChildHtml('footer') ?> <?php echo $this->getChildHtml('header') ?> <?php echo $this->getChildHtml('before_body_end') ?> <?php echo $this->getAbsoluteFooter() ?>
<?php $layer->setCurrentCategory($_maincategorylisting);  ?>
</body>
</html>

Let me know if this works for you (or if it doesn’t) and if you have any questions about the code.

Lessons From a Failed Hard Drive and Failed Genius

Written on November 11, 2009 at 9:22 pm, by Brian Schwartz

So last week I had an unexpected problem with my MacBook Pro when it just stopped working… Uh oh:

Uh Oh

I guessed based on what was going on that it was a problem with the hard drive and decided to schedule an appointment with the “Geniuses” at the Apple Store [Mistake 1].

I was running late due to an accident on the highway, so I politely called to say I’d be a few minutes late [Mistake 2], the nice woman I talked to said:

No problem, I booked you a backup appointment in case you can’t get here on time.

So I showed up about 5 or 10 minutes late for my appointment and I wasn’t listed as still having an appointment at that time, but instead for 2 or 3 hours later. I explained the situation and the “concierge” said they could still get me in at my original appointment time because the woman with an appointment before me wasn’t finished yet… Nor did her appointment finish for a while. So I sat there waiting patiently… fast forward a 1/2 hour and the “Genius” tells me that since I missed my appointment he would try to fit me in between his next appointment… Which of course, is wrong, because he was running 30 or 40 minutes late for my appointment. I explain the situation, he looks at my Mac and says:

I think it’s the hard drive

Umm, really, Genius, me too. Got anything to help confirm that suspicion?

Well I could try a boot DVD or drive?

That would be great since I’m here and all, and by this point I’ve been here about an hour. For the next hour or two he tries this to no avail, asks me if I brought the original Leopard install disk with me [mistake 3] and of course, I didn’t. He explains he can’t confirm it’s the hard drive without taking out the hard drive (?) and if I want the repair it’ll cost upwards of $300, at which point I said I’d be happy to do it myself.  My only real reason for bringing it in was to confirm it wasn’t a logic board or something worse, nevertheless, I left went to Best Buy and bought a new hard drive (after googling it myself since the Best Buy staff had no clue what size hard drive fits in a MacBook Pro).

I followed these great instructions on iFix for replacing my hard drive, and in the process fixed my loose bluetooth antenna and put it all back together.  

So I take the laptop to the office, install that boot DVD the goofball from the Apple Store told me about and tried to restore from my Time Machine backup that I had from about an hour before my Mac crashed, waited three and a half hours and… nothing. ugh

Why? Well since I’m running Snow Leopard, I can’t restore from a Leopard install disk. Thanks again guy at Apple Store.

So after another 3 hours of booting from Snow Leopard install DVD, success, MacBook Pro is working, good as new (faster / bigger hard drive, better Wireless antenna).

What did I learn in this process? Well a few things:

Finally

#SpokeFriday the 13th (spooky)

Written on November 9, 2009 at 8:10 pm, by Brian Schwartz

This coming Friday (November 13th) is our next SpokeFriday, it’s also our official anniversary party.

If you are coming, click here to tweet about it, view event and RSVP on facebook, or click on the image below to download the PDF to share with friends.

If you’ve never heard of SpokeFriday, it’s Spoke’s monthly networking happy hour that is open to the public. We invite our friends, clients, vendors, friends from social media, etc… Basically it’s open to all, it’s free and drinks and appetizers are provided (pretty good deal huh)?

Spoke Friday Invite

Reason #1,244 Why I Hate Microsoft Word

Written on October 13, 2009 at 4:54 pm, by Brian Schwartz

So if you’re a designer and you’ve ever had to create a Microsoft Word or Powerpoint template for a client, you’ve felt this pain.

One huge UI improvement that would make my life easier is the ability to swap out one image for another but keep everything else the same. Size, layout, placement, etc.

If I need to export a new image in Illustrator or Photoshop because the client decides they want the color to be different (or if it doesn’t look right printed, or whatever), I end up having to reset all of these settings, by hand. Every time.

Instead of just choosing a new version of the image in Word, I’m forced to do a screen scrape and paste them in Photoshop just to be able to try a new version of the image. This is stupid and should be fixed.

Here is the screen grab of my settings in Photoshop with my feelings on the matter:

Word Failur

Word Failure