Steve Wozniak *didn’t* say Android will win the smartphone race [Updated]

Update: Woz spoke with Engadget to clear up the newspaper quote. He told Engadget that he was describing the Android’s ability to respond to certain voice commands, specifically, “Navigate to Joe’s Diner.” He says that he then suggested that Apple would most likely catch up through its acquisition of Siri and Poly9. That was the extent of it, Woz says.

He goes on to say that he’d “never” claim that Android was superior to iOS and that “Almost every app I have is better on the iPhone.” But don’t take our word for it, listen to it from Woz himself at Engadget.

And with that, reason and sanity have been restored.

In a recent interview with Dutch-language De Telegraaf newspaper [Google translation] in the Netherlands, Apple co-founder and Geek Hero Steve Wozniak said that he believes Android will eventually win the smartphone race. He also noted that Apple began working a smartphone in 2004.

Woz believes that Android will eventually dominate the smartphone market the way Windows has done with desktops. Why? More features, high quality and greater choice for consumers were the deciding factors for Woz. He went on to clarify that he’s not dissing the iPhone. ” [The iPhone] Has very few weak points,” he said. “There aren’t any real complaints and problems. In terms of quality, the iPhone is leading.”

In that same article, Woz noted that Apple was working with a well-known (but unnamed) Japanese consumer electronics company in 2004 to create a smartphone that would “amaze the world.” The iPhone was released in 2007.

[Hat tips to NieuweMobiel and Engadget]


Steve Wozniak *didn’t* say Android will win the smartphone race [Updated] originally appeared on TUAW on Thu, 18 Nov 2010 08:45:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

TUAW’s Daily App: Train Conductor

Train Conductor is a sort of line-drawing game, although it’s not quite as open as most games of that ilk. The idea is that you’ve got four rails of trains running at each other, and as the conductor, it’s your job to make sure nobody hits anybody else. You can stop and start trains when you want, and you can just draw tracks across from one set of rails to the other. It sounds simple, and of course, it is when you start. But as with most puzzlers like this, things get crazy quick, and eventually you’re shooting trains back and forth, desperately trying to keep them coming without any crashes.

The game’s a lot of fun, and it’s free on the App Store right now. In fact, there’s even a sequel out with more locations, train types, and tons of additional features (including some coming down the update pike soon). The sequel’s just 99 cents, and man, a buck is a small price to pay for all the game that’s squeezed into these two apps.

TUAW’s Daily App: Train Conductor originally appeared on TUAW on Thu, 18 Nov 2010 08:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Capcom’s free-to-play Smurfs’ Village out-grossing Angry Birds

If you, like me, responded to the release of Smurfs’ Village by saying, “Really? A freemium game from Capcom? Based on the Smurfs franchise?” then you probably want to rethink how the App Store works, because apparently it’s a hit — Smurfs’ Village has topped even Angry Birds recently for the top grossing app on the App Store. The game is free-to-play, though players can buy “smurfberries” via in-app purchase that work like mojo in We Rule to speed up growth of players’ crops or buildings. And those smurfberries must be selling like hotcakes, because the game is trouncing Angry Birds’ millions and millions of 99-cent downloads.

It’ll be really interesting to see what effect this has on the market as a whole. Sega just released a freemium MMO in the form of a game called Kingdom Conquest, and EA is scheduled to do the same very soon. Capcom has been fumbling around for a big hit on the iPhone with all of their various properties, and while the Street Fighter IV game has been doing well, it hasn’t seen nearly the intake that this Smurfs game has.

Which probably means we can see some more freemium games coming from Capcom and other big companies in the future. You have to wonder who’s spending all this money on these things — are there legitimate game buyers out there shelling out for smurfberries instead of Starbucks, or is this all kids whose parents will be extremely surprised when the iTunes bill comes in next month?

Capcom’s free-to-play Smurfs’ Village out-grossing Angry Birds originally appeared on TUAW on Wed, 17 Nov 2010 22:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

SlingPlayer for iPad delivers all kinds of television to Apple’s tablet

Sling Media has posted a preview video of their upcoming iPad app, and you can watch it in action right after the break below. It looks pretty darn good — the app of course allows you to stream everything that comes from your Slingbox DVR device, including live TV, DVR’d content, or any on-demand offerings you might happen to have. The iPad app uses Apple’s own H.264 codec, so while this is just a video demonstration, presumably the real thing will look just as good.

Unfortunately, this won’t be the cheapest option — the app isn’t universal at all, so you’ll have to pay another $30 on top of the $30 you may have already paid for the iPhone version. And that’s after you buy and install a Slingbox in the first place, which itself requires yet another television subscription to actually deliver the content. Compared to a more subscription-based service like Netflix or Hulu, that’s pretty pricey, though of course this setup can do things those can’t. At any rate, if you’re already hooked up to a Slingbox somewhere, $30 is cheap to get that content anywhere on the iPad. The app should be out soon.

[via Engadget]

Continue reading SlingPlayer for iPad delivers all kinds of television to Apple’s tablet

SlingPlayer for iPad delivers all kinds of television to Apple’s tablet originally appeared on TUAW on Wed, 17 Nov 2010 23:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Android App Development – Layouts Part One: Linear and Relative Layouts

The way we construct the user interface in Android is pretty interesting. You can construct the UI widgets programmatically. But Android presents a decent way to construct the UI which is XML-based layouts.

The layout of an activity can be constructed by a XML file. These files are considered resources as they reside in res/layout folder. Each xml file consists of the declarations of widgets and their containers. The xml file is constructed in a hierarchical way, there is a tag that defines the layout of the widgets, inside this tag there are nested xml tags that define widgets, each widget tag has attributes that define the widget’s properties.

take a look at a simple layout xml file called main.xml which resides in res/layout directory:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="launch Activity 2"
    android:id="@+id/btnLaunch"
    />

</LinearLayout>

This layout defines a TextView and a button. The root xml node is <LinearLayout> node which defines the layout of all controls inside it.

We use the following code to construct the UI based on this xml definition.

setContentView(R.layout.main);

Also the TextView node contains attributes like :layout_width which can have the values fill_parent which denotes the the width of the control should occupy all the available width, also it could have the value wrap_content which denotes the control should occupy only width according to the width of its content which is the text inside the textView

The Button node has an extra attribute which is the android:id attribute, why this attribute is used in the button and not used in the TextView? The answer is that the TextView represents a label (just a static text to display) so there is no need to give it an id cause we will not reference it in the code, however if we need to display dynamic text in the TextView we can give it an id

To reference a control from the code we do it like this:

Button btnLaunch;

btnLaunch=(Button)findViewById(R.id.btnLaunch);

notice that the android:id attribute should be in the format of @+id/Control’sID as shown above, if you write it like android:id=”btnLaunch” the IDE would denote an error and you won’t be able to reference the control from the code.

Why to use XML-layouts and when to construct the layout programmatically ?

  • Using xml layouts achieves separation between the interface and the application logic, instead of writing a bulk of code that constructs the UI, defining it as XML is easier and less confusing.
  • You can save using code for constructing more complicated UI such as populating check-box columns in a grid.
  • It is a trend to construct the UI with XML definitions like in Microsoft’s XAML or even HTML, so people who are familiar with technologies like these would find it easy to deal with Android.

Finally we’re going to explain in more details all about Android different layouts

We have many layout forms:

  1. Linear layout: manages controls in horizontal or vertical way.
  2. Table layout: manages the controls in a group of columns and rows.
  3. Relative layout: manages the controls relative to one another or to the parent.
  4. Absolute layout: manages the controls in absolute position by coordinates.
  5. Frame layout: manages the controls in a dynamic way.
  6. Scroll view: manages the controls in a scrollable layout.

Linear layout:

Linear layout is like a box that contains controls inside it. Controls are drawn one after each other either horizontally or vertically according to the Orientation of the layout.

When dealing with Linear layout there are five properties that we can deal with:

  1. Orientation.
  2. Fill model.
  3. Weight.
  4. Gravity.
  5. Padding.

Orientation:

Orientation property determines whether the controls would be put in a horizontal way like in a row or in a vertical way like a column. The layout orientation is to set the property android:orientation.

vertical Orientation:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Linear Layout"
    />
    <Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="this is a button 1"

    />
    <Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="this is a button 2"
    />
</LinearLayout>

Horizontal Orientation:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Linear Layout"
    />
    <Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="this is a button 1"

    />
    <Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="this is a button 2"

    />
</LinearLayout>

If you want to set the orientation programmatically you can use this code:

.widget.LinearLayout mainLayout=new LinearLayout(this);
        mainLayout.setOrientation(LinearLayout.VERTICAL);

Fill Model:

The widgets inside linear layout have width and height properties. These properties can have three values:

  1. A numeric value in pixels or inches that gives the width or height properties an absolute value.
  2. They can have the value wrap_content meaning the widget should occupy it’s natural size unless there is no space then android can use word wrap to make the widget fit.
  3. They can have the value fill_parent meaning the widget should occupy all the available space of the closing container.

To set the fill model programmitaclly use this code:

Button b=(Button)findViewById(R.id.btn);
        b.setWidth(LayoutParams.WRAP_CONTENT);
        b.setHeight(LayoutParams.FILL_PARENT);

This is an example to two buttons one with width set to fill_parent and the other set to fill_parent:

Weight:

The weight property determines the ratio by which controls share free space. For example if we have two buttons and the weight of both is set to 1 (this is the default value) then the free space will be divided equally between them.

But if the value of the weight of one of them is 2 and the other is one, then the first button will occupy space half as that occupied by the second and so on.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlayout"
    >
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Linear Layout"
    />
    <Button
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="weight set to 2"
    android:layout_weight="1"

    />
    <Button
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="weight set to 1"
    android:layout_weight="1"
    android:id="@+id/btn"
    />
</LinearLayout>

 

To set the weight of a widget programmatically it’s a little bit different, we use this code:

Button b=(Button)findViewById(R.id.btn);
        LayoutParams params=new android.widget.LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams.FILL_PARENT,android.widget.LinearLayout.LayoutParams.FILL_PARENT,3);
        b.setLayoutParams(params);

the widget does not have a method to set the weight directly, instead you define

LayoutParams params=new android.widget.LinearLayout.LayoutParams

object and use the widget.setLayoutParams(params) method.

The LayoutParams class has many constructors including this one:

public LinearLayout.LayoutParams (int width, int height, float weight)

Gravity:

By default widget are positioned in the top-left of the screen, but if you want to change this you can use the layout_gravity property:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlayout"
    >
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Linear Layout"
    />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="left"
    android:layout_gravity="left"

    />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="center"
    android:layout_gravity="center"

    />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="center_vertical"
    android:layout_gravity="center_vertical"

    />

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="center_horizontal"
    android:layout_gravity="center_horizontal"

    />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="right"
    android:layout_gravity="right"

    />

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="bottom"
    android:layout_gravity="bottom"

    />

</LinearLayout>

Some additional gravity properties include:

The layout gravity properties fill_vertical and fill_horizontal expand the size of the control horizontally or vertically if needed so that they fill the container.

If we used fill it will stretch from both files.

Difference between android:layout_gravity and android:gravity:

The android:layout_gravity sets the position of the view in the container, while android:gravity sets the position of the content of the view.

For example if the android:layout_gravity=”right” then the view would be placed in the right position in the container while if the view’s android:gravity=”right” then the text of the view would be placed at the right.

To set the android:gravity property programmatically you can use this code:

Button btn=(Button)findViewById(R.id.btn);
        btn.setGravity(Gravity.RIGHT);

 

Padding:

The android:padding property sets the padding between widgets. if you specify the padding property to the container then the container with all of its widgets would be shifted by the value, if you specify it to a single widget then the contents of that widget would be shifted by the specified value

 If you use the android:padding property then this would apply the padding values to the four edges of the widget. If you need to be more specific you can use:

android:paddingTop or android:paddingLeft or android:paddingRight or android:paddingBottom

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlayout"
    android:paddingLeft="20px"
    >

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="button 1"
    />

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="button 2"
    android:paddingLeft="40px"
    android:id="@+id/btn"
    />

</LinearLayout>

Relative layout:

Relative layout lays out widgets based on their position relative to each other. You can place  a widget in a position relative to another widget’s position or relative to the container.

Relative layout is recommended to be used in your application’s layout because it fits with different screen resolutions of the different devices.

As we said in relative layout widgets can be placed

  1. Relative to the container.
  2. Relative to  other widgets.

Relative to the container :

The widgets are placed in position relative to their container like by setting the following properties:

  • android:layout_alignParentTop|Bottom|Right|Left to true. This aligns the Top|Bottom|Right|Left side of the widget with the Top|Bottom|Right|Left side of the container.
  • android:layout_centerVertical: the widget should be positioned vertically in the center of the container.
  • android:layout_centerHorizontal: the widget should be positioned horizontally in the center of the container.
  • android:layout_centerInParent: the widget should be positioned both vertically and horizontally in the middle of the container.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlayout"
    android:paddingLeft="20px"
    >

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Relative layout"
    />

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="android:layout_alignParentTop"
    android:layout_alignParentTop="true"
    />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="android:layout_alignParentBottom"
    android:layout_alignParentBottom="true"
    />
    </RelativeLayout>

this xml gives the following layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlayout"
    android:paddingLeft="20px"
    >
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="android:layout_alignParentLeft"
    android:layout_alignParentLeft="true"
    />

</RelativeLayout>

and this one:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlayout"
    android:paddingLeft="20px"
    >

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="android:layout_alignParentRight"
    android:layout_alignParentRight="true"
    />
</RelativeLayout>

gives this one:

this one:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlayout"
    android:paddingLeft="20px"
    >

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="android:layout_centerVertical"
    android:layout_centerVertical="true"
    />

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="android:layout_centerHorizontal"
    android:layout_centerHorizontal="true"
    />

</RelativeLayout>

gives this:

and finally this one:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlayout"
    android:paddingLeft="20px"
    >
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="android:layout_centerInParent"
    android:layout_centerInParent="true"
    />
</RelativeLayout>

gives this:

Position Relative to other widgets’ positions:

There are four properties that determine the position of the widget in relation to other widgets:

  1. android:layout_above: the widget should be placed above the referenced widget.
  2. android:layout_below: the widget should be placed below the referenced widget.
  3. android:layout_toRightOf: the widget should be placed to the right of the referenced widget.
  4. android:layout_toLeftOf: the widget should be placed above the referenced widget.

this example:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlayout"
    >
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button2"
    android:id="@+id/btn2"
    />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button1 is below button2"
    android:layout_below="@id/btn2"
    android:id="@+id/btn1"
    />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button3 below button 1"
    android:layout_below="@id/btn1"
    android:id="@+id/btn3"
    />

</RelativeLayout>

gives this layout:

and this one:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlayout"
    >
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button2"
    android:id="@+id/btn2"
    />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button1 is to the right of button2"
    android:layout_toRightOf="@id/btn2"
    android:id="@+id/btn1"
    />

</RelativeLayout>

gives this:

As we saw that there are properties that define the alignment of a widget relative to the container, there are also five properties that determine the position of the widget in relation to other widgets:

  1. android:layout_alignTop|Bottom|Right|Left: indicates that the widget’s Top|Bottom|Left|Right should be aligned with the Top|Bottom|Right|Left of the widget referenced in the property.
  2. android:layout_alignBaseLine: indicates that the two widget’s baselines should be aligned.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button2"
    android:id="@+id/btn2"
    android:layout_centerVertical="true"
    />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button1 is aligned to the top & Bottom of button2"
    android:layout_alignTop="@id/btn2"
    android:layout_toRightOf="@id/btn2"
    android:layout_alignBottom="@id/btn2"
    />

</RelativeLayout>

gives this:

Notes:

  • When you reference a widget in a relative layout property, you must assure that this widget has been already defined in the layout.
  • When you use the value fill_parent to assign athe height of a widget in a relative container, it could occupy all the available space so that any further controls defined in the xml file would not appear.
  • When referencing another control in relative layout property, we use the notation “@id/widgetID”

Hopefully you are enjoying this tutorial series and are learning something about Android App Development.

App developer Amazing Books brings 3D to the iPhone/iPad

The other day we conducted an interview with the guys from Amazing Books.

Thanks to my son (who just turned two yesterday) I have spent a great deal of time playing around with “Jack and the Beanstalk 3D” and “The Three Little Pigs 3D“. While these are timeless children’s’ classics Amazing Books has done an outstanding job of modernizing them. The Flomotion control system they developed puts you in control of the animation and really adds to the experience. My son loves interacting with the characters in the stories and this unique technology makes it all possible.

In addition to that, I enjoy the fact that I can either read the stories or let app do the reading for me. This is great when I am unable to read to him when he demands. We can play the book, I can finish up what I am doing, and he gets his story. Everybody wins. As far as graphics go I am not a huge fan but you can tell a lot of work went into them and they are very well done.

Both “Jack and the Beanstalk 3D” and “The Three Little Pigs 3D” can be purchased in the app store for $2.99. Amazing Books plans to expand their offierings this month with “Red Riding Hood 3D” and “My First Trip to Washington DC 3d.”

Finally, if you are looking for some great apps to entertain your kids during those long holiday breaks I highly recommend these books. If they love them half as much as my son does then $2.99 is a great investment.

How To Convert a SIM to a MicroSIM

Perhaps like me, you had the problem using your sim on the iPhone 4  and iPad  using a micro-SIM.

Above is a picture of the SIM cards – as you can see, they vary a lot, but the only parts that matter to us are the contacts which are common to the MicroSIM and SIM.  Electronically, the SIM and MicroSIM are the same so we can cut the rest away and not worry (so long as we are careful).

To begin with, line up the three contact on the MicroSIM with the same ones on the SIM card.  You can just look for the 2 centre lines and make sure they are in line and that the top of the MicroSIM is straight. Then get your meat cleaver and press down gently to score a straight line.

Cut along the score line carefully.  Once you have done this, line the top of the SIM with the MicroSIM and you should see that the contacts are aligned.

Turn the SIM & MicroSIM round 180 degrees, line up the bottom and repeat with the meat cleaver, then cut along the score line once again.

The SIM should now be the same height as the MicroSIM – we are halfway there!

Line up the centre of the MicroSIM with the SIM so that we can be sure it will be aligned within the iPad

Repeat the process with the meat cleaver and scissors, then you should have a SIM which is almost the right size, save for the top edge and corner.

Once again, repeat the process with the meat cleaver and scissors, then you should have a SIM which is the same size apart from the corner.

Cut off the corner of the SIM card – you can just use the meat cleaver for this if it is nice & sharp.

Your SIM card is almost ready to go in to your iPad.  As you can see, the AT&T MicroSIM has slightly rounded corners.

Use your meat cleaver to take off the tiniest of amounts.  Remember, you can take more off, but you can’t put it back on.

Your SIM should now fit in your iPad MicroSIM tray.

Gently insert it in to your iPhone 4 – iPad 3G.

Related Posts

No related posts.

Tron app updated with Light Cycles

Disney’s Tron movie is coming up quick, and today, the official Tron app (which has been out since Comic-Con, hosting exclusive previews and news from the movie) has added another new feature: Light Cycle battles. Yes, you can download the official app for free, and play a fun little 2D version of the famous Tron Light Cycle battle game right there in the app. The whole thing is pretty simple — just swipe to change direction, and of course the goal is to leave a light path that will block your opponents’ bikes (or you can create a field trap by drawing a rectangle with your Light Cycle). When you add in the tank game that was released a little while back, the app is definitely worth a download.

I got to see and play this app at Disney last week during an event there, and then talked to Disney Interactive’s Jeff Nuzzi about the app and Disney’s future plans for it. Disney already tried this “free app portal” method with Toy Story 3, and that one worked pretty well. Nuzzi said the same thing is happening with this Tron app — “it’s two great games,” he told me, “wrapped around a lot of promotional content.” Disney’s original plan for Toy Story 3 was to include some premium experiences in with the free content, but that didn’t work out as planned. “It was really a very complicated app, and I think the fans out there, the early adopters, people that are familiar with Toy Story, knew how to navigate and get through there, but then a lot of first time users and iPod touch users weren’t able to connect to Wi-Fi and had trouble downloading the app.” In the end, Disney sent the Toy Story 3 app completely free, and that’s why this Tron app is a free download as well.

Plus, Nuzzi and his company plan to keep updating the app with Tron content and information even after the movie releases. “As the movie goes through the box office and into more of a franchise, we can deliver news about the DVD or upcoming events,” Nuzzi said. “It really is a portal for all things Tron and it’s meant to live on beyond just the movie.” The movie hits theaters on December 17, but you can download the free app with all of its extras right now.

Tron app updated with Light Cycles originally appeared on TUAW on Wed, 17 Nov 2010 18:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Zen Bound 2 arrives on the Mac via Steam

Zen Bound 2, the second in the series of terrific iPhone and iPad games, is now out on the Mac platform as well, courtesy of Valve’s great Steam platform. If you’ve ever played this one (and you definitely should), you’ll know how it works — wrap a virtual rope around a series of weird shapes trying to cover a certain percentage of the surface with paint. The gameplay’s super intuitive and the whole experience is very zen, with solid colors and graphics backing up a great soundtrack and some intriguing realistic physics.

The iOS version is universal at $2.99, and the Mac version comes in at just a little bit higher than that at $4.99. But the visuals have been upgraded a bit, and the desktop version will even make use of trackpad controls on the MacBooks and the Magic Trackpad if you want to play that way. Plus, the title has been released under the SteamPlay banner, which means that buying it once will get you access to both the Mac and Windows versions if you want to install and run it on a few different computers.

Great game, and of course, it’s always nice to support Steam’s choice to step on over with us on the Mac, too.

Zen Bound 2 arrives on the Mac via Steam originally appeared on TUAW on Wed, 17 Nov 2010 19:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

What is it like to work at Apple?

Ever wondered what it’s like to work at Apple? AOL Jobs spoke to Joe Moreno, a software engineer who worked at Apple from 1998 to 2007. Joe touched numerous products and projects, notably WebObjects and the Apple Online Store (No, he wasn’t the guy who puts the yellow sticky note up when new products arrive). His accounts of Apple make it sound like working there is almost as innovative as their products. From HR to communications, there’s a lot other companies could learn from.

As TUAW is a blog about Apple, I found the following quite interesting:
As an Apple employee, you definitely get the feeling that blogging about the company is frowned upon. It goes to the extent that, if you have a personal blog about an unrelated topic, you don’t even want to mention that you work for Apple.

There are very few company blogs, even with notable exceptions such as Surfin’ Safari, their WebKit blog. Still, this is in contrast to Microsoft, where there are numerous blogs by product divisions and personnel. Then again, it’s been a long time since Microsoft routinely surprised and delighted their customers and fans, so perhaps Apple is on to something.

What is it like to work at Apple? originally appeared on TUAW on Wed, 17 Nov 2010 20:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Brazilian billionaire wants Apple manufacturing contract

Eike BatistaAppleInsider reports that Brazilian billionare Eike Batista, who made his $27 billion fortune in the mining industry, is trying to convince Apple to have its products made in Brazil rather than by Foxconn in Shenzhen, China. He is currently constructing the Port of Acu in southern Brazil — a $1.6 billion construction project — encompassing 90 square miles of available space that he hopes will lure companies to Brazil for product assembly. If Apple doesn’t bite, Mr. Batista says he is going to try to lure BMW to his new development instead.

Apple has been using Foxconn as its product manufacturer for years, but a series of suicides by plant workers earlier this year lead to a cut in overtime hours and increased wages, which Apple itself was rumored (and Foxconn formally denied) to be subsidizing.

Foxconn, part of Taiwan-based parent company Hon Hai, recently reported that it will be raising manufacturing prices, directly affecting Apple’s costs. Not sure what that means for product prices next year, but Mr. Batista could be approaching Apple at a time it might be willing to talk about developing a new manufacturing plan. If that’s the case, we wish him luck.

Brazilian billionaire wants Apple manufacturing contract originally appeared on TUAW on Wed, 17 Nov 2010 21:00:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

TUAW TV Live: The pre-Thanksgiving feast

Sure, Thanksgiving Day isn’t until next Thursday here in the good ol’ US of A, but I’m going to be taking next Wednesday off so this will be my pre-Thanksgiving TUAW TV Live show. Think of it as being one of those college football roundups that they do prior to Turkey Day, or perhaps a preview of the Macy’s Parade that gets rolled out on local network affiliates a week too early.

On today’s show, I’ll be covering a lot of ground, with everything from iPad synthesizer and cable TV remote apps to a new iPhone app that lets you see what song is next in your shuffle queue. I’ll also continue the Sunday night TUAW Talkcast topic about backups by making some recommendations and demonstrating some Mac backup apps. I’ve also got a pile of iPhone and iPad accessories to show off, some of which we’ve covered in TUAW posts over the last few weeks.

From your Mac or PC, go to the next page by clicking the Continue Reading link at the bottom of this post, and you’ll find a livestream viewer and a chat tool. The chat tool allows you to participate 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 and participate in the chat by downloading the free Ustream Viewing Application.

We haven’t neglected our iPad users, since 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. And one final note — if the show has started and you’re seeing a previously recorded show instead of the livestream, you can always pop on over to ustream.tv/tuaw to join the show in progress.

Continue reading TUAW TV Live: The pre-Thanksgiving feast

TUAW TV Live: The pre-Thanksgiving feast originally appeared on TUAW on Wed, 17 Nov 2010 16:50:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

SPB TV brings streaming TV to the iPhone and iPad, if you aren’t too picky

SPB TV Free is a little app that gives you more than 100 free TV channels for your iOS device. You get channels from 17 countries, including a few in the US. The only problem? You may not be interested in the television shows the app makes available. There are English language broadcasts from NHK in Japan, and other channels from Italy and Germany. I tried a local Florida station, and instead of the station I got a traffic camera feed. There are some Public Access stations, but I saw mostly city council meetings and water rate hearings. NASA channels are there, but NASA provides an app to see them anyway. There is a old Western channel and one with sci-fi, along with two US Christian-oriented feeds.

While the app is free, it won’t work unless you provide an email address. The developers promise they won’t sell or use your info improperly. A static ad also plays before you start every video feed. The app works in landscape and portrait mode, and while picture quality is variable, it’s certainly watchable. Playback does not require WiFi — it worked just fine for me on a 3G connection.

SPB TV is not a substitute for Hulu, but if you want to see a smattering of international news, and some rather mundane local broadcasts, this is the free app for you. It’s just been updated to support the iPad, so give it a go if the channels available interest you.

SPB TV brings streaming TV to the iPhone and iPad, if you aren’t too picky originally appeared on TUAW on Wed, 17 Nov 2010 17:30:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

Hands on: FingerPrint enables AirPrint for many non-compliant OS X printers

FingerPrint is a new Mac OS X application from Collobos Software that enables AirPrint printing for many OS X printers. AirPrint is Apple’s new wireless printing technology for iOS devices. It works over Bonjour, Apple’s version of zero configuration networking, allowing devices and services to communicate with each other on local area networks.

As originally planned, AirPrint was supposed to provide printing to shared OS X printers and to a small group of HP printers that support HP’s ePrint mobile printing service. However, this feature was disabled in the final Mac OS X 10.6.5 release, and AirPrint now only supports the HP printers. FingerPrint brings the capability back to shared printers without having to resort to Terminal commands.

The $7.99 application works by browsing for Bonjour printer services. When it finds them, it re-advertises the printers adding a special field to the Bonjour data that indicates AirPrint compliance. By projecting that compliance information, your iOS devices are able to detect and then write to those printers using standard OS X protocols.

Update: Come back tomorrow for an exclusive first look at Ecamm’s competitive offering, Printopia for Mac

Continue reading Hands on: FingerPrint enables AirPrint for many non-compliant OS X printers

Hands on: FingerPrint enables AirPrint for many non-compliant OS X printers originally appeared on TUAW on Wed, 17 Nov 2010 16:25:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments

iXtreamer streams audio and video from your iOS 4 device to your TV

iXstreamer

Didn’t see the iPad dock of your dreams in the Holiday Gift Guide: Docks that rock post from the other day? Looking for one that can turn your iPad into a media streaming device? You might want to check out Xtreamer’s new iXtreamer system, which enables wired and wireless AV streaming from your iPad, iPhone, or iPod to your TV. While it isn’t sold with any internal means to store your media, there is space for a 3.5″ HDD with a capacity of up to 3 TB storage along with two additional USB ports.

Priced at €175 or about US$237 with today’s exchange rate, notable features include 1080p playback, 802.11n connectivity, internet radio streaming, and Blu-ray ISO support. And unlike the Apple TV, the iXtreamer can seemingly handle almost any audio or video format you could dream up while also accessing media stored on networked drives or other computers in your home. This could be a big selling point for those who may think that the Apple TV is just for mom.

Click Read More to check out the video overview.

[via Engadet]

Continue reading iXtreamer streams audio and video from your iOS 4 device to your TV

iXtreamer streams audio and video from your iOS 4 device to your TV originally appeared on TUAW on Wed, 17 Nov 2010 16:40:00 EST. Please see our terms for use of feeds.

Source | Permalink | Email this | Comments