Mastering the 960 Grid System


We’re already familiar with the 12- and 16-column variants of 960.gs, but did you know that a 24-column alternative exists too? In this article, you’ll master the 960 grid system by dissecting the 24-column version demo. If you’ve only used 960gs before for Photoshop mockups, consider this your lucky day. By the end of this article, you’ll be able to convert your designs to HTML and CSS in no time at all.


Introduction

A 960 Grid System Master—that’s what you’ll be after you’ve gone through this article. And, although we’re going to use the 24-column variant of 960gs, you’ll completely understand how the two older types (i.e., 12- and 16-columns) work too, by applying the same principles you’ll learn here. But first, take a good look at the 24-column demo in the 960gs site, as it’s all we’ll need in our leap towards mastery of this popular CSS framework.


A Look at the 24-Column Demo

We first need to check the HTML code of the demo, so view its source—if you’re using Chrome, Firefox, or Opera, just press ctrl+U; if you’re using Internet Explorer, change your browser! :) (on the Mac, use cmd+U for Firefox and opt+cmd+U for Safari and Opera; Chrome only does the right-click option). Keep the HTML source code window on your desktop, as we’re going to refer to it from time to time.

Next, you’ll need to download the 960.gs files (if you haven’t done so yet), and open the uncompressed CSS file 960_24_col.css. We must do this because the demo’s CSS is compressed, and will be difficult to inspect. (If you’re the masochistic type, feel free to use the demo’s CSS instead.

That’s pretty much all we need to prepare, aside from a semi-functioning brain. Now you’ll find that the demo page holds the key to completely understanding the grid system, and we’ll start by examining its three sections.


Inspecting the Framework: The Demo’s Three Sections

The three sections consist of the following:

1: Top Section

First, we have a top area that shows two columns for each row, where the left column grows wider as the right column gets narrower, until they are equal in size.

top section of the 24-column 960 demo

2: Middle Section

Next, we have a middle section that shows a 30px square progressively moving from left to right, while whitespace before and after it extends the row to take up the whole 960px width.

mid-section of the 24-column 960 demo

3: Bottom Section

Finally, there’s a bottom section that shows two rows of rectangles with different sizes, which split the 960px width in two halves.

bottom section of the 24-column 960 demo

Believe it or not, understanding completely what the assigned classes behind these columns do is all you’ll ever need to get a firm grasp of 960 grid system. Isn’t that great? Let’s examine each section further.


Top section: grid_1 to grid_24 classes

Peeking at the source code of this section shows us that, first, before any of the grid_xx classes were assigned, the class container_24 was given to the overall wrapping div:

<div class="container_24">
	<h2>
		24 Column Grid
	</h2>
	...
</div>
<!-- end .container_24 -->

The importance of this class cannot be overemphasized—it partly dictates the width of the columns where a grid_xx class is assigned. And as you might have guessed, it also “divides” the 960px width into 24 columns.

(Similarly, putting container_12 or container_16 at the top will “divide” the width into 12 and 16 columns, respectively. The word divide is in quotes because it doesn’t actually do that; you’ll see later how this process is achieved.)

Moving on, you’ll notice that the top-most row has a single div with a class of grid_24. The remaining rows in the top section have two divs each: the left divs range from class grid_1 up to grid_12, and the right divs range from grid_23 down to grid_12; the sum of the two classes in each row is 24.

<div class="grid_24">
	<p>
		950
	</p>
</div>
<!-- end .grid_24 --> 

<div class="clear"></div> 

<div class="grid_1">
	<p>
		30
	</p>
</div>
<!-- end .grid_1 --> 

<div class="grid_23">
	<p>
		910
	</p>
</div>
<!-- end .grid_23 --> 

<div class="clear"></div> 

<div class="grid_2">
	<p>
		70
	</p>
</div>
<!-- end .grid_2 -->



<div class="grid_11">
	<p>
		430
	</p>
</div>
<!-- end .grid_11 --> 

<div class="grid_13">
	<p>
		510
	</p>
</div>
<!-- end .grid_13 --> 

<div class="clear"></div> 

<div class="grid_12">
	<p>
		470
	</p>
</div>
<!-- end .grid_12 --> 

<div class="grid_12">
	<p>
		470
	</p>
</div>
<!-- end .grid_12 --> 

<div class="clear"></div>

This is how the assigned grid_xx classes would look like if we tried to visualize each div’s class name:

top section of the 24-column 960 demo with grid classes labeled

You might have noticed in the code that after the last div in a row, we have an empty div with a class of clear. Ignore it for now, we’ll deal with it later.

Next, let’s take a look at what happens behind the scenes, i.e., in the CSS, when we assign the container_24 class:

        .container_24 {
            margin-left: auto;
            margin-right: auto;
            width: 960px;
        }
        

As you can see, this class, which was assigned to the overall wrapping div of the document, centers our work area and gives it a 960px width. Easy enough.

Next, here are the grid_xx classes, which were placed on the main divs of the top section:

        .grid_1,
        .grid_2,
        .grid_3,
        ...
        .grid_23,
        .grid_24 {
            display: inline;
            float: left;
            margin-left: 5px;
            margin-right: 5px;
        }
        

We see that the grid_xx classes give the columns left and right margins of 5px each, which forms a 10px gutter when you place the columns side-by-side. This in turn is achieved by floating them all to the left.

Also, they are given a display of inline, to prevent the Double Margin Float Bug from being triggered in our dearly-beloved browser. (Apparently, it is triggered when you float an element that has margins assigned to it.)

top section: what the CSS does

Lastly, we have the descendant selectors formed by a combination of container_24 and grid_xx classes:

        .container_24 .grid_1 {
            width: 30px;
        }
        .container_24 .grid_2 {
            width: 70px;
        }
        ...
        ...
        .container_24 .grid_23 {
            width: 910px;
        }
        .container_24 .grid_24 {
            width: 950px;
        }
        

As you can see, these CSS declarations are the ones that actually determine the width of the columns where a grid_xx class is assigned. This is how assigning container_24 at the top “divides” the width into 24 columns— the pre-set width sizes are assigned according to which container_xx class a grid_xx class is combined with.

the container and grid classes in 24-col combined sets the width of the columns

For comparison purposes, here is how its counterpart CSS declarations in the 16-column variant looks like:

        .container_16 .grid_1 {
            width: 40px;
        }

        .container_16 .grid_2 {
            width: 100px;
        }

        .container_16 .grid_3 {
            width: 160px;
        }
        
the container and grid classes in 16-col combined sets the width of the columns

If you compare the HTML source code of the demo for the 12- and 16-columns with the 24-column demo, you’ll notice that there is no difference in how the grid_xx classes were assigned. And now you know why this is so—it’s not the grid_xx class that determines the width of the columns, but its combination with a container_xx class, as shown in the CSS above.

Another thing worth noting here is the actual size of each container when you assign a grid_xx class. Although it’s labeled 30, 70, 110, and so on in the demo, it’s actually 10px more because of the left and right margins on either side of the container.

actual size of the containers is 10px more than its label

As you can see,

  • grid_1 has a width of 30px + 10px horizontal margins (total width: 40px)
  • grid_2 has a width of grid_1 (40px) + 30px width + 10px margins (total width: 80px)
  • grid_24 has a width of grid_23 (920px) + 30px width + 10px margins (total width: 960px)

Seeing it this way satisfies the math we have for the width: that 24 40px-wide columns is equal to 960px (i.e., 40px * 24 = 960px).

This view more accurately shows what the CSS actually does to the markup. Although the container’s size is really just 30px, 70px, 110px, and so on (as it is labeled in the demo), it helps to know that the horizontal margins are the reason why the sum of the widths for each row do not equal to 960px. (It only amounts to 940px, except for the first row, assigned a grid_24, which spans 950px. The “lost” 20px for all the other divs is accounted for by the leftmost and rightmost 5px margins, and the 10px gutter between the 2 columns for each row.)

But here’s the more practical thing to remember: As long as you use the 24-column psd template when you create your designs (or the 12- or 16-column psd templates, for that matter), you can just count the number of columns you want for a particular design element, use that number for your grid_xx class, and the column is set. For example, if your logo takes up four columns, then give its containing div a grid_4 class.

Here’s an example of how to use it:

example application of grid_xx classes

Although the 960.gs site (shown above) actually uses the 12-column variant, we could just as well overlay the 24-column pattern on it and it will still fit the layout perfectly (because the 24-column version is, of course, just the 12-column version with columns divided by two).

As you can see, knowing that we have a 960px width divided into 24 columns makes life easier, as we only need to line up our design elements along the edges of the columns, count the number of columns they occupy, set that as our grid_xx class’s number, and we’re done.

But what if you want a lot of empty spaces in your design? Or what if you want to center a small design element, and just have white spaces around it?

Enter the prefix_xx and suffix_xx classes.


Middle Section: prefix_xx and suffix_xx classes

If you check the markup for the middle section, what you’ll see are variations of this code:

<div class="grid_1 prefix_xx suffix_xx">
    <p>
        30
    </p>
</div>
    

…where prefix_xx + suffix_xx = 23. (That is, 0 + 23, 1 + 22, 2 + 21, 3 + 20, and so on..)

What’s happening here?

First, you’ll notice that each row class assignments amount to 24 columns (grid_1 + combined values of prefix_xx and suffix_xx classes, which is 23).

Next, you’ll see that the prefix_xx classes are in ascending order (from 1 to 23) while the suffix_xx classes are descending (from 23 to 1). Also, when prefix_xx or suffix_xx has a value of 23, it doesn’t have a counterpart suffix_xx or prefix_xx class, because it no longer needs it (value is already 23).

Lastly, each of these units is 30px-wide, and as we’ve seen in the grid_xx classes above, they also have 10px horizontal margins.

classes added for the 30px boxes

We already know that assigning an element a grid_1 class gives it a 30px width and 5px paddings on either side. But what does the prefix_xx and suffix_xx classes do?

As you may have already guessed, they give additional left (prefix_xx) and right (suffix_xx) padding, increasing the size of a grid_xx class unit. Thus, prefix_1, prefix_2, and prefix_3 will give your element left paddings of 40px, 80px, and 120px, respectively; while the same amount of paddings are given to its suffix_xx counterparts, but in the opposite side.

.container_24 .prefix_1 {
    padding-left: 40px;
}
.container_24 .prefix_2 {
    padding-left: 80px;
}

...

.container_24 .suffix_1 {
    padding-right: 40px;
}

.container_24 .suffix_2 {
    padding-right: 80px;
}

For whitespace in your designs, just add the prefix_xx and suffix_xx classes. They lock up your content to a certain width (determined by the grid_xx class you assign), while the space on either side in filled up with padding.

additional horizontal paddings in grid_xx units

For a simple example, let’s pretend again that the 960.gs homepage is using the 24-column variant, and that the twitter-bird graphic is the logo of the site.

suffix class in use: 960 gs homepage

We can see that it occupies three columns, so we give it a grid_3 class. Let’s also assume that there are no other elements along its row. We would therefore also give it a suffix_21 class (3 + 21 = 24), since the additional padding needs to span the whole width.

Obviously, if there are other elements on that row, we need to adjust the suffix_xx class to create some space for another element that spans a few grid_xx classes (e.g. a search form). Also, depending on where your design elements are located relative to the left edge of the row, you might also need to add a prefix_xx class.

Always remember: the numbers used in the classes for each row (whether grid, prefix, or suffix) should be equal to 24.

Next, we’ll perform a bit of ‘magic,’ as the next set of classes allow your content to appear differently than what the markup predicts it would.


Bottom Section: pull_xx and push_xx Classes

For this section, if you’re not using Firefox at the moment, I’d like to ask you to switch to it temporarily, as you’ll understand the next concepts better with Chris Pederick’s Web Developer Toolbar (WDT) extension for Firefox. (If you haven’t installed it yet, now’s the time to download and install it. I understand there’s already a Google Chrome version of the WDT, but in my opinion, it’s nowhere near its Firefox counterpart.)

Once you’re running Firefox with the WDT already installed, go back to the 24-column demo page, and scroll down to the very bottom. You’ll see the two groups of boxes I showed you a while ago—different-sized, yet fitting together to form this last section of the demo.

Now check out the HTML code for this section:

<div class="grid_12 push_12">
    <div class="grid_6 alpha">
        <p>
            230
        </p>
    </div>
    <!-- end .grid_6 .alpha --> 

    <div class="grid_6 omega">
        <p>
            230
        </p>
    </div>
    <!-- end .grid_6 .omega --> 

    <div class="clear"></div> 

    <div class="grid_1 alpha">
        <p>
            30
        </p>
    </div>
    <!-- end .grid_1 .alpha --> 

    <div class="grid_11 omega">
        <p>
            430
        </p>
    </div>
    <!-- end .grid_11 .omega --> 

    <div class="clear"></div> 

</div>
<!-- end .grid_12 .push_12 --> 

<div class="grid_12 pull_12">
    <div class="grid_1 alpha">
        <p>
            30
        </p>
    </div>
    <!-- end .grid_1 .alpha --> 

    <div class="grid_11 omega">
        <p>
            430
        </p>
    </div>
    <!-- end .grid_11 .omega --> 

    <div class="clear"></div> 

    <div class="grid_6 alpha">
        <p>
            230
        </p>
    </div>
    <!-- end .grid_6 .alpha --> 

    <div class="grid_6 omega">
        <p>
            230
        </p>
    </div>
    <!-- end .grid_6 .omega --> 

    <div class="clear"></div> 

</div>
<!-- end .grid_12 .pull_12 --> 

<div class="clear"></div>

Compare it again to what you see on the demo page.

What’s happening here? Shouldn’t the first group of boxes (230-230-30-430) be shown before the last group (30-430-230-230), as in the markup?

Well, that’s the power of the push_xx and pull_xx classes. But before we go into them, go to the WDT, click the Information button, and choose Display Div Order, just to make sure that you’re correctly seeing how the CSS affects the markup.

web developer toolbar's display div order command chosen

Here’s a screenshot of what you should see:

bottom section with display div order command activated

I needed to show this to demonstrate that the two groups are divided into left and right sides, and not top and bottom. That perception error is easy to make (as I did) because: (1) we’re used to seeing div groups that stretch the whole 960px width; and (2) the two groups have similar-sized boxes that are easy to confuse with each other.

(Nathan Smith, the 960gs creator, could have probably used boxes with different sizes—e.g. 70-390-190-270 and 230-230-30-430—to achieve the same effect and would have avoided the potential confusion, but he didn’t….)

But now that you’ve seen how the first group (as it appears in the markup) was “pushed” and how the second group was “pulled” by these classes, check out the CSS to see how they’re doing it:

.push_1, .pull_1,
.push_2, .pull_2,
...
.push_22, .pull_22,
.push_23, .pull_23 {
    position: relative;
}

...

.container_24 .push_1 {
    left: 40px;
}

.container_24 .push_2 {
    left: 80px;
}

...

.container_24 .push_22 {
    left: 880px;
}

.container_24 .push_23 {
    left: 920px;
}

...

.container_24 .pull_1 {
    left: -40px;
}

.container_24 .pull_2 {
    left: -80px;
}

...

.container_24 .pull_22 {
    left: -880px;
}

.container_24 .pull_23 {
    left: -920px;
}
        

First, giving these two classes to HTML elements positions those elements relatively, so that we could move the divs to the left, right, top, or bottom relative to where it would normally occur in the document. (More on CSS positioning here.)

Next, in combination with the container_24 class, the pull_xx classes give the div a negative left padding, which makes it possible to “pull&#8221 the div’s content to the left. On the other hand, the push_xx classes, as expected, does the opposite and gives the div a (positive) left padding to “push&#8221 its content to the right (by giving way to the left padding).

bottom section with display div order command activated

“But why the hassle?” you might ask. “Why not just put them in the correct order in the markup in the first place, so you won’t have to use these unnecessary classes?”

Good questions. The answer lies in the pursuit of having semantic and accessible markup—our designs should not force the markup to a structure that doesn’t make sense or isn’t up to standards when the stylings are turned off. And CSS has been proven to handle such situations elegantly—it lets us achieve the look of our designs regardless of how the markup was written (well, largely).

In the 960gs site, Nathan Smith shows the header as a good example of how he used these classes:

960.gs header

On the surface, we might think the markup will show the Twitter logo first, then the Download link, and finally the 960 logo. But that wouldn’t be semantic—the title of the site (i.e. 960 logo) should come in first. And as you probably know, this arrangement also has SEO benefits. So, the markup for the header actually goes something like:

<body>
<div class="container_12">
    <h1 class="grid_4 push_4">
        960 Grid System
    </h1>
    <!-- end .grid_4.push_4 -->
    <p id="description" class="grid_4 pull_4">
        <a href="#">Download</a> - Templates: Acorn Fireworks, Flash, ...
    </p>
    <!-- end #description.grid_4.pull_4 -->
    

As you can see, the logo does come in first, and after it, the download link. (The markup for the Twitter logo is found after the footer, was given an id of twitter, and is absolutely-positioned. It wasn’t given a 960.gs class, so we won’t concern ourselves with it.)

You also saw in the markup (as predicted) that the logo was pushed and the download link section pulled. To visualize it more clearly:

960.gs header labeled with classes

And that’s how you use the push or pull classes—know that they either give your divs a negative or positive left padding, then “pull&#8221 or “push&#8221 your content according to the number of columns you need your content to be pulled or pushed.

There’s one last set of classes that are integral to 960.gs—and they let you create complex layouts. A column that spans several rows, for example. Let’s tackle them next.


alpha and omega Classes

If you’ve read tutorials or articles on 960.gs before, you probably already know by now that the alpha and omega classes cancel the horizontal paddings set by grid_xx classes. And most likely you also know that their primary use lies when you have grid_xx classes inside nested divs.

For the benefit of those who don’t know yet, let’s go to our CSS and see what these classes do to the elements they are assigned to:

.alpha {
	margin-left: 0;
}

.omega {
	margin-right: 0;
}
	

Pretty straightforward—they simply zero out the left (alpha) and right (omega) margins. And as we’ve seen a while ago, when we assign an element a grid_xx class, we automatically give it horizontal margins of 5px on both sides. With nested divs, we don’t want to double these margins, so we give an alpha or an omega class, or both, accordingly.

bottom section div group showing alpha and omega classes

A nested div that’s touching the left edge of its parent div would be given the alpha class. Similarly, the omega class is assigned to the nested div that’s placed on the parent div’s right edge. But what if we have a nested div that touches both edges of its parent div? That’s right, we assign both classes to it.

Let’s move on to an example so that you can see how it’s done.

Though not shown in the 960.gs demo, here’s an instance of how a complex layout is achieved with the aid of the alpha and omega classes (and nested divs with grid_xx classes):

blocks of content to demonstrate alpha & omega and nested divs

Here we have columns that span several rows on both sides, with rows and boxes in the middle. You can also visualize it as a typical 3-column layout; but for our example, we’re just using 15 columns. Of course, you can easily expand it to 24 columns.

The key to creating layouts like these in 960.gs is to:

  1. Remember that 960.gs makes the layout possible by floating divs to the left.
  2. Create your nested divs from those initial floated divs&#8212. This means you’ll have floated divs within floated divs.

Here’s one way of approaching our layout: group them into three columns first, and assign them the appropriate grid_xx classes:

blocks of content to demonstrate alpha & omega and nested divs

Next, assign the additional grid_xx classes for the nested divs (note that we don’t have any nested div for the right column):

blocks of content to demonstrate alpha & omega and nested divs

Since we have at least two levels of grid_xx classes inside nested divs, we also need to add the alpha and omega classes appropriately:

blocks of content to demonstrate alpha & omega and nested divs

The nested divs inside the left column touches both edges of its parent div, so we need to add both alpha and omega. The same holds true for the divs with grid_8 classes in the middle section. But each grid_4 div on top only has to have alpha or omega, since it only touches either the left or the right edge of its parent div.

As you may have concluded from this simple example, you can nest divs with grid_xx classes as deep as you want (if your design demands it), as long you correctly mark them up, and give them the right 960.gs classes, so that they are floated correctly and any excess margins are canceled.

And speaking of floats, the last group of 960.gs classes, though not unique to 960.gs, make it all possible—they clear the floats that are automatically created when you assign a grid_xx class.


Leveling the Field: The clear Classes

Earlier, we noticed this in the markup—every div that was given a grid_xx class, that was also the last div for its row, was followed by an empty div with a class of clear.

<div class="grid_5">
    <p>
        190
    </p>
</div>
<!-- end .grid_5 --> 

<div class="grid_19">
    <p>
        750
    </p>
</div>
<!-- end .grid_19 --> 

<div class="clear"></div> 

<div class="grid_6">
    <p>
        230
    </p>
</div>
<!-- end .grid_6 --> 

<div class="grid_18">
    <p>
        710
    </p>
</div>
<!-- end .grid_18 --> 

<div class="clear"></div>
    

The no-brainer reason for this is that we need to clear floated divs, because once we float them, they no longer take up space, causing the elements below it to be “pulled up,” which ultimately leads to a broken layout.

As we’ve seen in the demo, a solution for this potential problem is to place an extra non-semantic div with a class of clear, which does the following:

.clear {
    clear: both;
    display: block;
    overflow: hidden;
    visibility: hidden;
    width: 0;
    height: 0;
}
    

The code above is basically Nathan Smith’s own solution to the problem, as discussed in his blog. A lot of web designers don’t have any issues with it, except probably for standardistas who might cringe at the thought of using extra non-semantic divs in the markup for a styling problem.

Thankfully, Nathan Smith also included the clearfix solution in the 960.gs CSS, first discussed on PositionIsEverything.net. It does away with the extra div, as you can place it alongside the grid_xx classes and achieve the same effect:

<div class="grid_5">
    <p>
        190
    </p>
</div>
<!-- end .grid_5 --> 

<div class="grid_19 clearfix">
    <p>
        750
    </p>
</div>
<!-- end .grid_19 --> 

<div class="grid_6">
    <p>
        230
    </p>
</div>
<!-- end .grid_6 --> 

<div class="grid_18 clearfix">
    <p>
        710
    </p>
</div>
<!-- end .grid_18 -->
    

That’s the same example markup above with the extra divs removed, and the clearfix class added. It will do the same thing, so you can choose this method of clearing if you find it to your liking. Here’s the CSS for it:

.clearfix:after {
    clear: both;
    content: '';
    display: block;
    font-size: 0;
    line-height: 0;
    visibility: hidden;
    width: 0;
    height: 0;
}
/*
The following zoom:1 rule is specifically for IE6 + IE7.
Move to separate stylesheet if invalid CSS is a problem.
*/

* html .clearfix,
*:first-child+html .clearfix {
    zoom: 1;
}
    

The code might be a bit different from what you’re used to. This is because Nathan Smith based it on a blog entry by Jeff Star, which supposedly updates the original clearfix hack, to do away with code intended for a browser that’s now extinct (i.e. IE for macs), and tweaks it for newer ones (i.e. IE6 and IE7).


Conclusion

Using just the 24-column demo of 960.gs (and in some instances, the 960.gs site itself), I’ve shown you how each of its classes work and how you could use them in converting your 960-based designs into HTML and CSS.

Every section in the demo imparts lessons to be learned, and once you see what the classes do to your markup by examining the CSS, the mystery of 960.gs vanishes, and you gain a better understanding of what happens behind the scenes. You might even find new ways of using the classes, since you now know what they do.

Applying your newfound knowledge becomes easy, because once you’ve set your columns using 960.gs, you’ll just have to assign id’s to the divs (as the situation warrants) as hooks to further adjust the divs’ paddings or the sizes of its text inside.

The Apple Store is down… on a Thursday?

Everyone’s favorite sticky note has appeared on the Apple Store, which is down as of 12 A.M. Eastern. We’re not aware of any upcoming products, and the store being down on any day other than Tuesday usually points to maintenance rather than new stuff. That said, we’ll keep an eye on it and update if we see anything new when the store comes back up.

As usual, thanks to everyone who tipped us off.

TUAWThe Apple Store is down… on a Thursday? originally appeared on The Unofficial Apple Weblog (TUAW) on Thu, 19 Aug 2010 00:15:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

Has the iPhone App Market already crashed?

At GDC Europe earlier this week, Bigpoint CEO Heiko Hubertz claimed that the iPhone app market “has already crashed. You cannot sell your game for 99 cents and expect a return.” Apple has said that developers are collectively making more than a billion dollars on the App Store, but Hubertz knocks that figure down a few notches, suggesting that because there are over 250,000 actual apps on the store, no one developer is making enough to cover the development costs of any game worth making.

Is he right? In a sense, he is — it’s already pretty clear that for a number of reasons, prices have raced to the bottom on the App Store. And while the audience is still growing (people are buying more and more iPhones every day), so is the pool of developers and apps. While there are definitely some runaway hits, the average developer isn’t going to see profits that will keep an EA-level game afloat.

That said, the market certainly hasn’t “crashed.” Apple wanted an app ecosystem that anyone with a Mac and some knowledge and time could join, and that’s what they’ve got — a developer who puts a worthy amount of time and talent into an app, with some help and promotion from sites like ours, can likely turn over a profit, if not make a good amount of money. Sure, the App Store’s not very friendly to big budget producers, but that’s probably not what Apple wanted in the first place anyway.

TUAWHas the iPhone App Market already crashed? originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 18:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

The iPad Project documents deploying iPads at school

We’ve been following the folks at D7 Consulting as they roll out a set of iPads awarded them by Box.net (and keep an eye out later this week for an update on that), but that’s not the only group of people attempting to use iPads in a collective space. Frasier Speirs (Mac developer at Connected Flow) is implementing iPads at a school he works at, and he’s documenting the whole process on his blog as The iPad Project.

It’s an interesting read — even if you’re not trying to follow in his footsteps and implement a large number of iPads across a system, it’s intriguing to see how he and his co-workers are trying to squeeze a very consumer-targeted product into a more professional space, from setting up profiles and activations on each device to more practical concerns like labeling them with names and finding a way to charge them all together.

Part of the iPad’s charm has been how many different places and ways people have found to use it — at its heart, it’s a reasonably powerful touchscreen computer, and that’s a device that’s got a lot of potential in a lot of fields. We’ll look forward to seeing other implementations in various fields and locations.

[via Cult of Mac]

TUAWThe iPad Project documents deploying iPads at school originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 20:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

An iPad, a couple, and a wedding

The iPad plays such a big part of some peoples’ lives that you could almost say they’re married to their iPads. And for others, they just get married by their iPads — well, sort of.

The iPad helped facilitate the wedding of Aaron and Katie, as it made its rounds to the priest and then the bride and groom. Not only did bride Katie read her vows to husband Aaron from the iPad, she composed them on it as well.

While the couple’s wedding was held outdoors, a gazebo provided shade to help make reading easier; the iPad’s glass screen and the sunlight usually don’t make a good combination for readability.

Offbeat Bride reports on creative wedding ideas; Aaron and Katie’s iPad-enabled nuptials certainly qualify.

If you plan on using your iPad in your wedding, you might as well plan your wedding using an iPad. These include 100 Wedding Tips and the Wedding Guests app, which aims to help you make a final decision on who to invite to your wedding and who not to.

TUAWAn iPad, a couple, and a wedding originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 21:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

Yahoo! Mail for iPad and iPhone contains tasty HTML5 goodness

While Yahoo! Mail isn’t as wildly popular as, say, Gmail, there are still a lot of people who have Yahoo! Mail accounts. After all, you need a Yahoo! account to use Flickr, so many people sign up for the free accounts without a second thought. For the most part, the Web-based mail client has been a real yawner — until now.

Yahoo! has rolled out an HTML5-optimized version of Yahoo! Mail for iPad, following a successful rollout of a similar Web app for iPhone. To get to the newly-refreshed mobile sites, you just point Safari on the iPad (or iPhone for that matter) to http://mail.yahoo.com.

The iPad app is very usable, particularly in landscape mode where the side-by-side panes have room to “stretch out” for readability. When you’re offline, Yahoo! Mail uses HTML5’s local caching capabilities to let you read and search messages that you’ve previously received. Organization of messages is made easy by using a full search function and personal folders, and there are preset Smart Folders that collect messages from those in your Contact list, save attachments from incoming mail, and store photos that have been mailed to you. When photos are attached to an email, you can view them as previews in the inbox view or in their full size by tapping a Full View button.

If you’re a current Yahoo! Mail user or are just looking for a new free email account, you might want to give the new HTML5 mail sites for iPad and iPhone a try. They’re surprisingly clean, trouble-free, useful, and most importantly, free.

TUAWYahoo! Mail for iPad and iPhone contains tasty HTML5 goodness originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 11:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

New iPad TV ad highlights various apps

A new iPad TV ad started airing in the US this week. It begins with the statement “IPad is…” before moving through several adjectives and related apps. For example, a brief appearance by The Photo Cookbook is followed by “delicious.” Flipboard is followed by “current,” and so on.

One interesting tidbit is that when Twitter is shown (followed by “friendly”), the ad shows a close crop of twitter.com. Presumably this is because there’s still no official Twitter app for the iPad (“Twitter,” formerly Tweetie, is for the iPhone and not a universal app).

It’s a clever spot that shows off some quality apps while answering the common question, “But what is it for?”

TUAWNew iPad TV ad highlights various apps originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 12:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

WSJ: iAds not starting off so well

The Wall Street Journal is reporting this week that the iAds launch is off to a bumpy start as advertisers learn to deal with Apple’s tight-fisted control.

As Gruber said, “Better get used to it.”

The WSJ notes that, of the 17 partners revealed at the program’s start (iAds was announced in April and officially rolled out in July), only two — Unilever PLC and Nissan Co. — had ads run last month. Since then, only J.C. Penny, Disney and Citigroup have launched ads. Personally, I’ve only seen the Nissan Leaf ad.

The process, some customers complain, is taking longer both in the early stages and final execution. Brainstorm sessions have taken up to 10 weeks, according to sources, and Apple has tacked on another two weeks while assembling the final ad.

Not all participants are complaining, however. A Nissan spokesperson told the WSJ about the great results they’ve seen from their campaign. “[iAds] has driven exceptional results to date,” the company said, noting that iOS users are tapping through the ad at a rate 5 times greater than clickthroughs generated by an online campaign.

Apple’s tight grip on the creative tools is legendary and not about to loosen. Advertisers used to quick turn-around ought to, as John so succinctly said, get used to it.

TUAWWSJ: iAds not starting off so well originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 13:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

TUAW TV Live this afternoon — The Steve and Tim tag team show

Long-time viewers of TUAW TV Live will remember that we had OWC Radio and MyMac.com Podcast host Tim Robertson on the show a while back, and it was a blast. That’s Tim in the photo at right, doing his best to imitate a fish out of water. Tim and I tend to riff off of each other pretty well, so it was a fun and fast hour of TUAW TV Live.

Well, we were talking (which we both love to do) a few weeks ago, and I decided that it’s time to liven things up with another dose of Tim. He’ll be joining me this afternoon for another hour of fun talk about Macs, iPads, iPhones, and just about anything else that comes out of Cupertino with an Apple logo on it.

The action and general silliness will begin at 5 PM EDT (2 PM PDT) today, here at TUAW.com. Just drop by at about the time the show is scheduled to start, and we’ll have full instructions on how to watch the show and join in on the live chat.

TUAWTUAW TV Live this afternoon — The Steve and Tim tag team show originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 13:30:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

Helping autistic children with iOS devices

Autism is a developmental brain disorder that, in some manner, plagues one out of every 110 children (according to the Centers for Disease Control). It’s usually discovered by the time the child is three years old. Varying medical and scientific authorities characterize the condition in different ways, but scientists generally agree that autism spectrum disorders (ASD) manifest themselves in social, communication, and behavioral challenges. The SF Weekly recently wrote about a number of families with autistic children and how the iPad is proving to be quite useful in helping them.

A number of studies have been done on the use of iPhones and iPods as aids for the autistic. One such study was titled iPod Therefore I Can: Enhancing the Learning of Children with Intellectual Disabilities Through Emerging Technologies, and it tracked the progress of 10 autistic children who were using iPod touches in Australia.

The results were quite encouraging. In one case, a child who could not wash his hands was exposed to photos (combined with voice-overs) of a child doing it successfully. Through this method, the correct behavior was reinforced, and in short order, the child was able to wash his hands by himself. About 60 percent of the goals of the study were achieved.

The results of this and other studies have been encouraging, but a major problem for 60 to 80 percent of autistic children is poor motor skills, including poor motor planning, which makes using the small buttons on an iPhone or iPod touch quite difficult. Because of the larger size of an iPad, it can be much more accessible to a larger number of autistic children.

TUAWHelping autistic children with iOS devices originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 14:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

iCade-like "Freekade" iPad arcade cabinet up for auction

freekadeLast April — as is their recent tradition — ThinkGeek put on its show of April Fool’s Day items. Most of these fake items are of the “OMG I need to have that!” variety, like the Tauntaun sleeping bag from a past year. This past April’s list included the “iCade” iPad gaming cabinet, which would have allowed you to slide your iPad into a wood-vaneer, classic-looking mini arcade cabinet.

Just because it was a fake item doesn’t mean someone else could take a stab at it, and that’s just what happened. You can now bid on the pictured item — dubbed the “Freekade” — to have your very own iCade-like iPad mount. The controls work via Bluetooth and require a jailbroken iPad and emulated games provided via the Cydia store. Check out the video demo after the break (just turn your volume down — the clackety-clack of the arcade buttons is annoying as hell).

If you’re not one to go bidding on something like this, it’ll reportedly be available on an online store in the future. I half wish someone would just make a cheaper, non-functional version of this thing just to serve as an iPad dock.

TUAWiCade-like “Freekade” iPad arcade cabinet up for auction originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 15:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

Snoop iPhone data with limitations

The iPhone Spy Stick can be used to snoop information that is stored on a user’s iPhone (even deleted data), within limitations. The ill-intentioned will want to keep reading.

The way that it works sounds simple (we haven’t played with one yet). Just connect the stick and the target iPhone to a computer and run the included software, which pulls all sorts of data from the phone. You’ll find deleted texts, calendar events, photos, and contact information. It’ll also find recent map searches, locations tracked via GPS, Web history, and voice memos.

Are you scared yet? Don’t be. In order to work, the iPhone Spy Stick requires a Windows machine (Windows XP, Vista, or 7 only) and an iPhone that is running iOS 3.2.1 (and earlier). In other words, you can’t run it on any iPhone from any machine. That’s still some hard core snooping, though.

I love that the manufacturer boasts that the device “Looks like an ordinary USB flash drive – no one will suspect that it’s a professional grade forensics tool.” I suppose that’s in spite of the fact that is says, “iPhone Spy Stick” in huge, black and white letters. You can get yours for US$199.

[Via Übergizmo]

TUAWSnoop iPhone data with limitations originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 16:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

TUAW TV Live – Today it’s twice the fun

Welcome back for another hour of TUAW TV Live, our weekly live show where you can join in on the fun.

Today, of course, the show is going to be twice the fun when Tim Robertson of OWC Radio and MyMac.com joins host Steve Sande for a lively discussion of the Apple world. Whether we’re talking about the new iPad ad, upgrading old Mac hardware, the iPhone 4, favorites from the App Store, or if we’re following up on something you said in the chat, it’s going to be a raucous discussion. And of course, since Tim’s on the show, we’ll be sure to do a quick round of “This or That” before we’re done.

To join in from your Mac or PC, just go to the next page by clicking the link at the bottom of this post, and you’ll find a live stream viewer and a chat tool. The chat tool allows you to join in on the fun by asking questions or making comments.

If you’re driving somewhere and would like to watch TUAW TV Live while you’re stuck in traffic, please don’t — keep your eyes on the road! However, if someone else is doing the driving, you can watch the show on your iPhone by downloading the free Ustream Viewing Application.

We haven’t forgotten about iPad users, as you can tune in to TUAW TV Live on your iPad! That link will send you to a non-Flash page, although you won’t have access to our chat tool.

Remember, old episodes of TUAW TV Live are always available for your viewing pleasure on Ustream.

TUAWTUAW TV Live – Today it’s twice the fun originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 16:50:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

TrueHDR for iPhone updated for Retina Display and iPhone 4 camera

HDR (High Dynamic Range) photography isn’t for everyone, but it can really help when taking pictures with extreme shadow or light. HDR images basically combine two or more pictures taken at different exposures. Using a process called tone mapping, you get a new image that displays more detail in the darker areas and restrains the areas that are too bright.

TrueHDR for the iPhone has been updated to support the full resolution of the iPhone cameras, both front and back. It now supports the Retina Display, and claims better image alignment and more natural looking results.

I’ve reviewed the original version and today I gave the new version a try. The updated app works as advertised, although I was a little short of dramatic scenery for my tests. The added resolution and quality of the iPhone 4 camera makes a welcome difference.

Gallery: TrueHDR example

TUAWTrueHDR for iPhone updated for Retina Display and iPhone 4 camera originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 17:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

TUAW’s Daily App: Evolution Defense

Evolution Defense is a pretty good tower defense title. While it doesn’t add a whole lot to the genre (there is some innovation in terms of how towers are upgraded, and support towers can be built and added in around damaged towers), it is a smooth and direct TD game that’s made for the iPhone.

Your job is to attack pathogens that are invading a bloodstream, and as with the usual tower defense spiel, you need to build up towers along the pathway (according to the currency that you have). It’s pretty basic stuff, but a solid amount of tower choices and some excellent (if a little strange) graphical representations make for a quality game.

Best of all, it’s completely free. It seems like it’s been a while since we featured a freebie, so head on over to the App Store, and pick it up right away. Facebook integration will add a little extra oomph to the gameplay, and there’s supposed to be a pretty good multiplayer mode (that, unfortunately, didn’t work on my 1G iPhone) where you put your own creations up against a friend’s tower setup. All in all, it’s an excellent bit of fun for the low, low price of free.

TUAWTUAW’s Daily App: Evolution Defense originally appeared on The Unofficial Apple Weblog (TUAW) on Wed, 18 Aug 2010 08:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments