White model to boost iPhone sales in upcoming quarter

Multiple rumors suggest Apple is gearing up to finally launch the white iPhone 4 later this week. While many are weary of these constant rumors, Ticonderoga securities analyst Brian White believes Apple fans and stockholders should be happy the handset may be ready for its long-awaited debut.

According to White “the white iPhone does matter” to Apple’s earning potential in the upcoming quarter. White believes Apple will delay the launch of the iPhone 5 until September and the arrival of the white iPhone 4 will bridge the gap between the launches of the original iPhone 4, the Verizon iPhone 4 and the iPhone 5.

Apple will see an incremental boost in sales as the white model has a certain “mystique” about it that will prompt some buyers to make the jump and scoop up an iPhone 4. The demand for white devices in China is also high and White predicts the blanc version of the iPhone will be especially hot in this Asian country. China is a growing market for Apple devices and White notes that China accounted for 10% of Apple’s total revenue over the past six months.

White model to boost iPhone sales in upcoming quarter originally appeared on TUAW on Tue, 26 Apr 2011 10:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Install and run iPad apps on an iPhone easily with iTelePad2Pod

iTelePad2Pod

OK, so this comes straight out of the why would you want to do this category, but thanks to the iSmooth Project folks from iJailbreakNow, installing and running iPad-only apps is now possible for the less tech-savvy on a jailbroken iPhone or iPod touch.

The process involves using an app called iTelePad2Pod on your Mac to alter the supported devices metadata of your target iPad app. The modified app is then sent to your iPhone or iPod touch using FTP across OpenSSH (which must be installed on your jailbroken device). It’s a fairly straightforward procedure and results in some relatively usable apps. This isn’t the first time an iPad app has been installed on an iPhone, the once iPad-only Netflix app had that pleasure courtesy of some clever hackery.

These apps are designed for the larger display of the iPad and users may encounter a problem when a button or dialog breaches the bounds of the iPhone’s resolution (960×640 for the iPhone 4). If there’s an app that’s only available for the iPad and you haven’t jumped on the tablet bandwagon yet, you now have a relatively user-friendly option. Read on for a video guide.

[via ModMyi]

Continue reading Install and run iPad apps on an iPhone easily with iTelePad2Pod

Install and run iPad apps on an iPhone easily with iTelePad2Pod originally appeared on TUAW on Tue, 26 Apr 2011 09:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

TUAW’s Daily App: Super Stickman Golf

Super Stickman Golf is a golf game, and a pretty good one at that. But it’s not like any golf game you’ve ever played before. For one thing, it’s played in 2D. Like Worms, you line up a shot, hit an energy meter right where you want it to go, then send your ball across a variety of 2D stages. But this is a wacky game of golf — some of the stages have floating islands and other obstacles in them, and some of your shots can either get hit or roll off at weird angles.

Fortunately, you have some help in the form of ball power-ups, so your golf balls can stick to the walls, freeze in midair or otherwise careen around the stages. It’s a lot of fun; it’s still golf, but it’s more of a wacky arcade sport than the “good walk ruined.”

The presentation is great, with solid controls and good music to back up the proceedings. There’s an amazing amount of content, with six clubs, over 250 holes to play, multiplayer and Game Center leaderboards and more content on the way. At just US$0.99 during a current sale, Super Stickman Golf is a bargain. If you’re still not sold, there’s a free version to check out as well.

TUAW’s Daily App: Super Stickman Golf originally appeared on TUAW on Tue, 26 Apr 2011 08:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Facebook’s iOS app starts polluting News Feed with ‘People you may know’

The folks at App Advice contacted us about something I just noticed myself this morning: Facebook’s iOS app is rolling out a “People you may know” feature identical to what’s on the social network’s full site.

This new Facebook feature has instantly got me and many other users annoyed at the app, particularly after the recent “#dickbar” debacle which convinced me to permanently abandon the official Twitter client for a third-party app. Some people may welcome this feature, but part of the reason I like Facebook’s iPhone app more than the actual site itself is that a lot of the useless cruft that pollutes Facebook is stripped away in its app. I don’t get deluged with ads or those annoying little app requests that people like to send out en masse; instead, all I’m presented with is all I actually want, the News Feed, photos and my friends list.

Much like the official Twitter app’s (now mercifully removed) QuickBar, this “People you may know” feature is something completely irrelevant to my interests (absolutely everyone ever suggested by this feature has been someone I do not actually know). Like Twitter’s QuickBar, I know I’ll never use this feature, but it’s also something that, for now, I’m unable to get rid of. I seriously hope the Facebook team has learned from the backlash over Twitter’s QuickBar and isn’t planning on making “People you may know” a permanent feature that users aren’t allowed to disable. Otherwise, at least there are always third-party options to tide me over until they come to their senses.

Facebook’s iOS app starts polluting News Feed with ‘People you may know’ originally appeared on TUAW on Tue, 26 Apr 2011 07:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

App Review: Tikal offers jungle brilliance for 10 action points a turn

tikal ipad game

Every six months or so, Codito/Sage Board Games releases another excellent Euro-style board game for iOS. The first example was the excellent Medici, which was followed by Ra. Coming up next is Puerto Rico. Last week they brought us Tikal, a truly wonderful game that won the 1999 Spiel des Jahres award and still stands up to any of the releases coming out today (last year, it even got a sequel, which is just fascinating). While the game is amazing, the Tikal app feels like a 0.9 version, but the crashes and quirks should be worked out quickly if Sage’s history tells us anything.

Tikal the board game is about exploring the jungle around Tikal, the archaeological site, for ancient Mayan temples and treasures. It may be troubling if you think about it in terms of colonizer and indigenous peoples, but sometimes you need to just enjoy brilliant gameplay when you find it. Read on to see how it all works.

Gallery: Tikal iPad App

Continue reading App Review: Tikal offers jungle brilliance for 10 action points a turn

App Review: Tikal offers jungle brilliance for 10 action points a turn originally appeared on TUAW on Tue, 26 Apr 2011 06:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

iTunes versions older than 10.0 now incompatible with iTunes Store

A 9to5Mac tipster has discovered that Apple is apparently not officially supporting the iTunes Store for older G3 iMacs and any Macs that need to run older versions of iTunes. This isn’t really surprising; if Apple won’t support software for those older computers, it’s unlikely that the company would bother to make sure its store was compatible with them. But what’s interesting here is that it’s only the store that’s incompatible. As you can see from the screenshot above, the rest of the old iTunes 8.2.1 works as expected.

It seems like Apple just created a new page for the latest version of the iTunes Store and redirected older versions to this one, asking customers to install iTunes 10. You’d think the company would want to at least let customers using older Macs spend their money buying iTunes audio and video, but apparently any potential sales from the older versions are outweighed by the costs of keeping the old site around.

iTunes versions older than 10.0 now incompatible with iTunes Store originally appeared on TUAW on Tue, 26 Apr 2011 03:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Star Wars Stormtroopers use Mac System 6

The evil Galactic Empire is well-known for cutting corners in its engineering, with gaping chasms scattered seemingly at random throughout the Death Star without a single guardrail in sight. It turns out the Empire’s computer systems are also woefully out of date; as designer Matt Chase demonstrates, it seems Imperial Stormtroopers, like TK-421, are still using System 6 on their Macs.

From the contents of TK-421’s email inbox, it appears a Stormtrooper’s work is never done. Not only is there some mandatory target practice scheduled, Darth Vader keeps sending increasingly frantic messages concerning a pair of missing droids. The final email, pictured above, is a rather ominous message from [email protected] threatening to blow up the Death Star. Not to worry, TK-421; any attack against the station would be a useless gesture, no matter what technical data they’ve obtained.

Check out the full graphic of this decidedly old-school Mac desktop here. Note that one or two items in the graphic may be NSFW depending on your locale, especially if your boss is anything like Darth Vader.

[via Neatorama]

Star Wars Stormtroopers use Mac System 6 originally appeared on TUAW on Tue, 26 Apr 2011 02:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

TweetDeck 2.0 for iPhone Now Available for Download!

TweetDeck, the popular Twitter client, gets huge makeover and new features with version 2.0. TweetDeck 2.0 for iPhone has not only been redesigned but also rebuilt from the ground up. TweetDeck is now much faster and contains powerful features.

Hit the jump for detailed TweetDeck 2.0 features…

TweetDeck allows you to monitor, manage and engage in your social world by bringing together your Twitter and Facebook feeds in a powerful and flexible column-based dashboard.

This is a brand new version of iPhone TweetDeck rebuilt from the ground up to be fast, flexible and full-on powerful.

Looks amazing
Designed by the same team that brought you Android TweetDeck, the new iPhone TweetDeck is smarter and more beautiful than ever.

Powerful and flexible
Super-customisable for power-users too. Combine any of your feeds into personalised columns to suit you.

Easy to manage
Adding columns is quicker and easier than ever before. Just browse, and tap ‘Add’ to save the column.

Download TweetDeck 2.0 for iPhone

You can download TweetDeck 2.0 for iPhone from the App Store for free. [Download Link]

TweetDeck 2.0 for iPhone (5)TweetDeck 2.0 for iPhone (4)TweetDeck 2.0 for iPhone (3)

TweetDeck 2.0 for iPhone (2)TweetDeck 2.0 for iPhone (1)

You can follow us on Twitter, Google Buzz, Facebook, and Subscribed to RSS Feed to receive latest updates.

Also checkout:

Digg Twitter StumbleUpon Facebook Reddit del.icio.us

Save iOS 4.3.2 SHSH Blobs with TinyUmbrella 4.32.01

TinyUmbrella 4.32.01 can save iOS 4.3.2 SHSH blobs (iPhone, iPad and iPod Touch). These are the steps to save SHSH blobs for iOS 4.3.2 / 4.2.7 with TinyUmbrella 4.32.01 for iPhone 4, iPhone 3GS, iPod Touch 4G, 3G and iPad 2, iPad 1…

TinyUmbrella is now updated to support 4.3.2 / 4.2.7 iOS versions. I’ve also added a simple feature to allow you to ‘Visit Blog’ when updates are available.

If you want to save 4.3.2/4.2.7 get the updated 4.32.01 as there was a file missing in 4.32.00 XD.

NOTE:

  • You can save SHSH blobs for iOS 4.3.2 only if it’s being signed by Apple. Go grab your iOS 4.3.2 SHSH blobs before it’s too late. Apple stops signing a firmware when an updated version is out.
  • TinyUmbrella can save SHSH blobs regardless of jailbreak.
  • With TinyUmbrella you can save SHSH blobs for iOS 4.3.2 even if you’re on an older iOS version.

Let’s save iOS 4.3.2 SHSH blobs for iPhone, iPad and iPod Touch.

How to Save iOS 4.3.2 SHSH blobs

Steps to save SHSH blobs for iOS 4.3.2 are exactly similar to the guide posted earlier. So, please navigate to the guide linked below and follow the steps there to save SHSH blobs.

iOS 4.3.2 Guides

You can follow us on Twitter, Google Buzz, Facebook, and Subscribed to RSS Feed to receive latest updates.

Digg Twitter StumbleUpon Facebook Reddit del.icio.us

Adding data using SQLite for iPhone

This is the Sqlite database app. Some times your app may have the need to store data in some kind of database. In iPhone application you can do so using SQLite.

Step 1: Open the Xcode and create a new Xcode project using Navigation base application template. Give the application name “SQL”. As shown in the figure below:

Step 2: Expand classes and notice Interface Builder created the RootViewController.h and RootViewController.m class for you. Expand Resources and notice the template generated a separate nib, RootViewController.xib.

Step 3: To create database in sqlite follow the below steps:
Now that the terminal is open let’s create the database. This is done with the command:

sqlite3 Datalist.sqlite

SQLite3 will now start and load the Datalist.sqlite database. By default the database is empty and contains no tables.
We only need to create one table. We will create a table called Datalist by typing the following statement:

CREATE TABLE Datalist(pk INTEGER PRIMARY KEY, name VARCHAR(25), age INTEGER);

One thing to note here is the pk field. It is the primary key of the table.
Now that our table has been created, let’s add some data. Type the following commands below.

INSERT INTO Datalist(name,age) VALUES(‘vishal’,29);
INSERT INTO Datalist(name,age) VALUES(‘nilesh’,30);
INSERT INTO Datalist(name,age) VALUES(‘vinod’,28);
INSERT INTO Datalist(name,age) VALUES(‘amrita’,25);

Your terminal window will look something as shown below:

Now go back to XCode. Do a Control-Click (right click) on the folder named Resources. Click Add -> Existing Files… and browse to your Datalist.sqlite file and click Add. It will then prompt you with a screen as shown below:

Step 4: Now that we have added the database, we need to load the Objective C libraries so we can use it. Do a control-click (right click) on the Frameworks folder. Click Add -> Existing Frameworks. So in the search bar type in libsqlite3. The file we are looking for is called libsqlite3.0.dylib.

Step 5: We need to add another file. Right-click on the Classes folder and choose Add -> New File. Under Cocoa Touch Class category choose Objective-C class. Name it SqlA.h and SqlA.m file.
This will be a very simple class that will take our dummy data file, read it in as an NSArray and provide some utility methods to access the data from the file.

@interface SqlA: NSObject {
        NSInteger age;
        NSString *name;

        //Internal variables to keep track of the state of the object.
        BOOL isDirty;
        BOOL isDetailViewHydrated;
}

@property (nonatomic, readonly) NSInteger age;
@property (nonatomic, copy) NSString *name;

@property (nonatomic, readwrite) BOOL isDirty;
@property (nonatomic, readwrite) BOOL isDetailViewHydrated;

//Static methods.
+ (void) getInitialDataToDisplay:(NSString *)dbPath;
+ (void) finalizeStatements;

//Instance methods.
(id) initWithPrimaryKey:(NSInteger)pk;

@end

Step 6: Open the SqlA.m file and make the following changes in the file.

#import "SqlA.h"

static sqlite3 *database = nil;

@implementation SqlA

@synthesize name,age,isDirty, isDetailViewHydrated;

+ (void) getInitialDataToDisplay:(NSString *)dbPath {
       
        SQLAppDelegate *appDelegate = (SQLAppDelegate *)[[UIApplication sharedApplication] delegate];
       
        if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
               
                const char *sql = "select name,age from Datalist";
                sqlite3_stmt *selectstmt;
                if(sqlite3_prepare_v2(database, sql, 1, &selectstmt, NULL) == SQLITE_OK) {
                       
                        while(sqlite3_step(selectstmt) == SQLITE_ROW) {
                               
                                NSInteger primaryKey = sqlite3_column_int(selectstmt, 0);
                                SqlA *coffeeObj = [[SqlA alloc] initWithPrimaryKey:primaryKey];
                                coffeeObj.name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 0)];
                                                               
                                coffeeObj.isDirty = NO;
                               
                                [appDelegate.coffeeArray addObject:coffeeObj];
                                [coffeeObj release];
                        }
                }
   }
   else
        sqlite3_close(database); //Even though the open call failed, close the database connection to release all the memory.
}

+ (void) finalizeStatements {
        if(database) sqlite3_close(database);
}

(id) initWithPrimaryKey:(NSInteger) pk {
        [super init];
        age = pk;
       
        isDetailViewHydrated = NO;
       
        return self;
}

Step 7: Open the RootViewController.h file and make the following changes in the file.

@class SqlA;

@interface RootViewController : UITableViewController {
        SQLAppDelegate *appDelegate;
}
@end

Step 8: Open the RootViewController.m file and make the following changes in the file.

(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [appDelegate.coffeeArray count];
}

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   
    static NSString *CellIdentifier = @"Cell";
   
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }
        //Get the object from the array.
        SqlA *coffeeObj = [appDelegate.coffeeArray objectAtIndex:indexPath.row];
       
        //Set the coffename.
        cell.text = coffeeObj.name;
   
    // Set up the cell
    return cell;
}

(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Navigation logic — create and push a new view controller
}
(void)viewDidLoad {
    [super viewDidLoad];
   
    self.navigationItem.rightBarButtonItem = self.editButtonItem;
       
    appDelegate = (SQLAppDelegate *)[[UIApplication sharedApplication] delegate];
       
    self.title = @"Name List";
}

Step 9: Open the SQLAppDelegate.h file and make the following changes in the file.

@class SqlA;
@interface SQLAppDelegate : NSObject <UIApplicationDelegate> {

   UIWindow *window;
    UINavigationController *navigationController;
       
        //To hold a list of Coffee objects
        NSMutableArray *coffeeArray;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;

@property (nonatomic, retain) NSMutableArray *coffeeArray;

(void) copyDatabaseIfNeeded;
(NSString *) getDBPath;

Step 10: Open the SQLAppDelegate.m file and make the following changes in the file.

(void) copyDatabaseIfNeeded {
       
        //Using NSFileManager we can perform many file system operations.
        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSError *error;
        NSString *dbPath = [self getDBPath];
        BOOL success = [fileManager fileExistsAtPath:dbPath];
       
        if(!success) {
                NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Datalist.sqlite"];
                success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];
               
                if (!success)
                        NSAssert1(0, @"Failed to create writable database file with message ‘%@’.", [error localizedDescription]);
        }      
}

(NSString *) getDBPath {
        //Search for standard documents using NSSearchPathForDirectoriesInDomains
        //First Param = Searching the documents directory
        //Second Param = Searching the Users directory and not the System
        //Expand any tildes and identify home directories.
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
        NSString *documentsDir = [paths objectAtIndex:0];
        return [documentsDir stringByAppendingPathComponent:@"Datalist.sqlite"];
}

Step 11: Now compile and Run the code and get the final output.

You can download source code from here SQL

Apple issues iMac Hard Drive Firmware Update 1.0

Apple has issued iMac Hard Drive Firmware Update 1.0. The firmware update fixes a hard drive issue that may prevent some iMac (21.5-inch and 27-inch, Mid 2010) systems from booting properly. The update requires Mac OS X 10.6.7 or later and weighs in at 767 KB. You can download it by running Software Update or via Apple’s support site here.

Apple issues iMac Hard Drive Firmware Update 1.0 originally appeared on TUAW on Mon, 25 Apr 2011 23:15:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

BananaTunes beta streams beautiful music from iOS to your Mac

One of the great things about being a buddy of Erica Sadun is that sooner or later, she surprises you with an amazing app. [Ed: This is also known as “assault by beta testing” under Utah’s penal code.] Her BananaTunes beta evolves iOS-to-Mac video app BananaTV to the next logical step — it transmits full stereo music from your iOS device to your Mac.

Built around the recent AirPlay reverse engineering, Sadun promises that this capability will eventually be factored back into BananaTV, her iOS-to-Mac video app. For now BananaTunes allows you to bring your iPhone, iPod touch, or iPad to the office or a friend’s house and use its built-in iPod app AirPlay functionality to stream music to a Mac running this software.

BananaTunes is currently available as a limited-time beta app so that Erica can work out bugs as time permits. It requires Mac OS X 10.6 and 64-bit, so be sure that you know what you’re running before you try out the Mac app.

When BananaTunes becomes part of BananaTV, users will need to bring their own key.pem file for authentication. Want to give it a spin? Either download these two zip files off of Erica’s site and follow the instructions, or use this all-in-one installer package. Word of mouth is that the installer package works great but our standard TUAW paranoia mandates that we warn you that we’ve been unable to authenticate its contents. (In other words, use at your own risk, but it’s probably just fine.)

In my limited beta testing today, I found that BananaTunes worked very well with my iPad 2. Tunes beamed from my iPhone 4 experienced some garbling. This could be due to network traffic, so be aware that your mileage may vary. Then again, it was a 1950s Dean Martin recording, so he may have been gargling Scotch while crooning the tune I was listening to.

In the end, BananaTunes is a fun Mac app for when you want to control your music world from your iPad.

BananaTunes beta streams beautiful music from iOS to your Mac originally appeared on TUAW on Mon, 25 Apr 2011 20:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Rumor: Next MacBook Pro to sport completely redesigned case

Get ready to say goodbye to the current form factor of the MacBook Pro family. MacRumors is reporting that the next MacBook Pros will sport an entirely redesigned case. A redesign next year isn’t such a surprise, as Apple does tend to redesign their laptops about every three years. However, the next MacBook Pro design, according to the rumors, could be the most significant to the line in years.

In February before the latest MacBook Pros were unveiled, iLounge stated that the 2011 MBPs would be the last to sport the current form factor and that next year’s MBPs were already under development at Quanta in Taiwan. The next MacBook Pros are reportedly a big “milestone” release for the Pro family. There’s no hard details yet on what the redesign will include, but given the popularity of the MacBook Air, it’s not a stretch to assume that Apple is going to eliminate the optical drive in hopes of making the MacBook Pro family as thin and light as possible.

Rumor: Next MacBook Pro to sport completely redesigned case originally appeared on TUAW on Mon, 25 Apr 2011 19:30:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Looking for Easter eggs in iOS and its apps

We’re one day late on this one, but rather than brightly colored hidden eggs for Easter, in this case we’re of course referring to “easter eggs,” little secrets that programmers hide in their applications and code. Macworld has a great roundup of four easter eggs hidden in popular App Store apps, from a secret edition of the 1926 Kelly Blue Book in the official Kelly app to the funny result you get when searching for “tilt” in Mobile Safari.

Off the top of my head, the only other app easter egg I know of is the fact that you can play with the various characters wandering around the title screen of Halfbrick’s Monster Dash. Yelp’s Monocle AR service was originally an easter egg, although it is now part of the full app.

And it’s not technically an easter egg, but some people may not know that you can access iTunes controls either by double clicking the home button while your iPhone is locked, or by double clicking it while unlocked to bring up the background app icons, and then swiping those to the right.

Any other hidden iOS features or app easter eggs that you know about? Share with the rest of us in the comments below!

Looking for Easter eggs in iOS and its apps originally appeared on TUAW on Mon, 25 Apr 2011 19:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Concept case would turn your iPhone into a Leica

OK, so yes, this Leica i9 case for the iPhone 4 is still just a concept. You can’t actually buy a case yet that fits around your iPhone and turns it into a Leica camera (though you can buy some nice lenses or an audio tape case). But this idea is just too cool to pass up. Outside of the standard retro charm of having a Leica attached to the back of your iPhone, the idea here is that you can use the iPhone’s dock port to attach a high-quality premium camera to the back of your high-quality premium smartphone, enabling some really excellent mobile photography.

There’s probably some technical magic that has to be worked here as well — I don’t know how feasible it is to have the dock hook up to and even control a high quality camera lens like this, especially with that design and size. But heck, if we can get the iCade made into a real product, this is certainly possible, right?

[via RazorianFly]

Concept case would turn your iPhone into a Leica originally appeared on TUAW on Mon, 25 Apr 2011 18:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments