a:2:{i:0;a:1:{s:4:"data";a:2:{s:7:"entries";a:10:{i:0;a:6:{s:5:"title";s:24:"Weekly Link Round-Up #24";s:4:"slug";s:23:"weekly-link-round-up-24";s:2:"id";s:3:"228";s:10:"typeHandle";s:4:"blog";s:4:"body";s:2996:"

So many late nights this week watching basketball and working on a freelance project. Lots of good things to read this week:

";s:10:"bodyBlocks";a:0:{}}i:1;a:6:{s:5:"title";s:42:"Using Web Development to Make a Difference";s:4:"slug";s:42:"using-web-development-to-make-a-difference";s:2:"id";s:3:"229";s:10:"typeHandle";s:4:"blog";s:4:"body";s:1873:"

During my senior year of college, I wasn’t quite sure what I wanted to do with my life, so I applied to some graduate programs. I knew one thing for sure: I wanted to make a difference. Thankfully, I was rejected from both graduate programs I applied to.

While I may not be making a difference in the Army or anything like that, I think that there are definitely ways to make a difference using web development.

At my company, we are broken up into 4 teams, each of which has a pro-bono client:

While there are times that we have to tell our pro-bono clients that we are simply too busy to fill their needs, we always try and get to them as quickly as possible.

A few weeks ago, some of the employees from Doorways came in to talk to us more about their organization. It was pretty powerful to hear what they had to say. To think that these people sacrifice so much time for the betterment of others is amazing to me.

I think it is extremely important for those of us who can to give back to those who are less fortunate. Whether it is donating time to a local non-profit to help them establish their web presence or just to provide some consulting time, it all will help.

Last year, I donated time to slice and integrate the Worldwide Breast Cancer site into WordPress, and I encourage everyone to try and find something to donate their time or services to.

Make a difference.

";s:10:"bodyBlocks";a:0:{}}i:2;a:6:{s:5:"title";s:24:"Weekly Link Round-Up #23";s:4:"slug";s:23:"weekly-link-round-up-23";s:2:"id";s:3:"230";s:10:"typeHandle";s:4:"blog";s:4:"body";s:1802:"

Wow, crazy week at work. I felt like everything I had to do had a deadline of immediately. I’m so glad it’s the weekend, and I can watch some college basketball. So, here are a few interesting things from this week:

";s:10:"bodyBlocks";a:0:{}}i:3;a:6:{s:5:"title";s:45:"Sometimes, it’s the Small Things that Count";s:4:"slug";s:41:"sometimes-its-the-small-things-that-count";s:2:"id";s:3:"231";s:10:"typeHandle";s:4:"blog";s:4:"body";s:2533:"

Last fall, I bought a 2008 Nissan Altima. I absolutely love it, and I chose it over other cars like the Accord and Camry because of the way it drove. But, there is one thing that really bugs me: the steering wheel controls. More particularly, the volume and next/previous track controls.

Nissan Altima Steering Wheel ControlsAs I wrote in The Importance of Testing, I feel like some problems with products could be resolved pretty easily with just a little testing. The steering wheel controls on the 2008 Nissan Altima are no different.

For some reason, Nissan decided to have the volume, which you turn up and down, be a horizontal control. So basically, if you want to turn the volume up, you hit the control to the right. If you want to turn the volume down, you hit it to the left.

Also strange, when you want to go to the next song, you hit the control up, and to go to the previous song, you hit the control down.

Is that just completely opposite or what? It reminds me of the Seinfeld episode: The Opposite

George: Hey, I just found twenty dollars! I tell you this, something is happening in my life. I did this opposite thing last night. Up was down, black was white, good was —

Jerry: Bad.

George: Day was —

Elaine: Night.

Seinfeld: The Opposite

Every time I am about to adjust the volume level or change the song, it takes me that extra second to think about it. Maybe it’s because I’m not used to it yet, but if the volume were up and down, and the change track control were left and right, it would be what I expect and wouldn’t take that extra time to process.

So to relate it to the web, sometimes, it’s the small things that count. Think about conventions that exist in everyday life and see if they can be applied to the web as well. Don’t Make Me Think.

";s:10:"bodyBlocks";a:0:{}}i:4;a:6:{s:5:"title";s:24:"Weekly Link Round-Up #22";s:4:"slug";s:23:"weekly-link-round-up-22";s:2:"id";s:3:"232";s:10:"typeHandle";s:4:"blog";s:4:"body";s:2060:"

Well, I didn’t get much sleep this week, because I spent the entire week staying up late playing with my new MacBook Pro. It’s amazing. Best purchase ever. When I wasn’t playing, this is what I found interesting this week:

";s:10:"bodyBlocks";a:0:{}}i:5;a:6:{s:5:"title";s:53:"Use jQuery to Open All External Links in a New Window";s:4:"slug";s:53:"use-jquery-to-open-all-external-links-in-a-new-window";s:2:"id";s:3:"233";s:10:"typeHandle";s:4:"blog";s:4:"body";s:2120:"

In a recent project at work, I had completed implementing a site, and the client was reviewing it. Their company decided that they wanted all external links to open in a new window. This is not a practice that I really like, and others agree:

Opening up new browser windows is like a vacuum cleaner sales person who starts a visit by emptying an ash tray on the customer's carpet. Don't pollute my screen with any more windows, thanks (particularly since current operating systems have miserable window management). If I want a new window, I will open it myself!

Jakob Nielsen: The Top Ten Web Design Mistakes of 1999

Breaking the back button is never a good thing. But this article is not about that.

Back to the site I was implementing. I was really not interested in adding target="_blank" to every single external link, so I came up with a better solution…

The Solution

The site was already using jQuery for other functions, so I figured that I should just use some of its powerfulness to make my life easier.

With a couple lines of code, I solved my problem:

$(document).ready(function(){
 $("a[@href^='http']").attr('target','_blank');
}); 

Check out the demo to see the results.

Explanation

If you know anything about attribute selectors, that should look familiar to you. Basically, it is saying, apply the attribute target="_blank" to all links that begin with http.

Really easy, really powerful, problem solved. Some may say it almost might be preferable to browse the site with JavaScript disabled so that the external links would just open in the same window. But that debate is for another time.

";s:10:"bodyBlocks";a:0:{}}i:6;a:6:{s:5:"title";s:24:"Weekly Link Round-Up #21";s:4:"slug";s:23:"weekly-link-round-up-21";s:2:"id";s:3:"234";s:10:"typeHandle";s:4:"blog";s:4:"body";s:3149:"

It was a busy week at work this week, but a good busy. I was slicing a site, and implementing it into Wordpress. It’s going to be a good edition to my portfolio when it’s done. So, enough of the small talk, this is what I found interesting this week:

Oh and in other news, my brand spanking new 15" MacBook Pro should be arriving Monday. The anticipation is killing me. I didn’t know they ship from China!

";s:10:"bodyBlocks";a:0:{}}i:7;a:6:{s:5:"title";s:48:"PNGs, the AlphaImageLoader Filter, and hasLayout";s:4:"slug";s:46:"pngs-the-alphaimageloader-filter-and-haslayout";s:2:"id";s:3:"235";s:10:"typeHandle";s:4:"blog";s:4:"body";s:2194:"

I recently wrote an article discussing how to use PNGs effectively in all browsers (including IE6). For work, I had to slice a site that used a lot of PNGs, and I ran into something that I had never encountered before.

I was trying to use the Microsoft proprietary AlphaImageLoader Filter because they background images were PNGs that were going to scale to fit the background. The div that I was setting the PNG as the background to, did not have a height or width specified. Apparently, to use the AlphaImageLoader property, the element that you are using it on must have another Microsoft propriety property: hasLayout.

From the Microsoft Developer Network Site:

The object that the filter is applied to must have layout before the filter effect will display. You can give the object layout by setting the height or width property, setting the position property to absolute.

An Example

I am going to use the same working example I used in my Ultimate PNG Guide. But this time, I am going to add the following to the head of the page:

<style type="text/css">
div#container div.inner { width: auto; }
</style> 

Obviously not how you would want to really add that style to the page, but I am just trying to prove that in IE6, to use a PNG with the AlphaImageLoader Filter applied, the element must have layout. So here is the new page, which should be broken in IE6.

So there you have it, remember to give elements layout if you are going to use the AlphaImageLoader Filter.

";s:10:"bodyBlocks";a:0:{}}i:8;a:6:{s:5:"title";s:24:"Weekly Link Round-Up #20";s:4:"slug";s:23:"weekly-link-round-up-20";s:2:"id";s:3:"236";s:10:"typeHandle";s:4:"blog";s:4:"body";s:1663:"

Wow, I can’t believe I have written these weekly link round-up 20 times. The time sure has flown by.

";s:10:"bodyBlocks";a:0:{}}i:9;a:6:{s:5:"title";s:13:"Gracious Spam";s:4:"slug";s:13:"gracious-spam";s:2:"id";s:3:"237";s:10:"typeHandle";s:4:"blog";s:4:"body";s:567:"

I’m glad that some of my spam comments appreciate the time that I put into my site:

You have an outstanding good and well structured site. I enjoyed browsing through it.T

Good site - you're a pretty good writer.u

Thanks bro! Real good work!i

Good site, thanks!

simple but quality, thanks!

I don’t even know how Akismet figures out that those are spam and not real comments.

";s:10:"bodyBlocks";a:0:{}}}s:5:"total";i:270;}}i:1;O:25:"yii\caching\TagDependency":3:{s:4:"tags";a:4:{i:0;s:7:"element";i:1;s:29:"element::craft\elements\Entry";i:2;s:40:"element::craft\elements\Entry::section:4";i:3;s:7:"graphql";}s:4:"data";a:4:{s:40:"CraftCMSce35088bdfe0816226cd17fd051a4803";s:21:"0.46162700 1707493692";s:40:"CraftCMS2743a789e8993267a348eee1ee7e4450";s:21:"0.34758900 1706282441";s:40:"CraftCMS2ac34726f299f7e18e449d8e536c67f8";s:21:"0.22771600 1711953912";s:40:"CraftCMS3817d4a648fcfac939af46605323feb0";s:21:"0.87777500 1713035607";}s:8:"reusable";b:0;}}