GranitW
Lockergnome
Home

Archive for January, 2008

Palm: The Tables Have Turned, Apple Has Struck Back

I like Palm, it’s one of my favorite personal mobile computer maker, but it’s slowly fading away.  I don’t believe Palm will close it’s doors however, I do believe it’ll come back.

The story of Palm started in 1992, the year it was founded to create small portable devices.  In the same year Apple had started work on something they called a personal digital assistant, aka PDA.  Apple’s name for the PDA was Newton, and it would become the standard maker for all PDAs to come.

Palm, started work on a PDA called the Zoomer.  It was, however, a commercial flop.  Palm managed to stay in business by selling software for HP, as well as Apple’s Newton.  Eventually Palm learned from it’s mistakes and created the Palm Pilot line.  The Palm Pilot is also considered the first generation Palm PDAs.

Although Palm never had to much success they had better success than Apple.  Apple’s Newton although very powerful, had a $1000+ price, and it’s size made it eventually lose in the market.  In 1997, Steve Jobs announced the end of the Newton.

Three years later in 2000, Palm and Apple were in talk about something, but nothing seemed to happen.  In 2001, Apple started a small unnoticeable fight to claim the name iPhone.  In 2002, Apple added some of Newton’s API’s like its writing recognition system into OS X(it has yet to be used).

Around 2004 the rumors of the iPhone started and by 2006 the rumors started to become factual evidence. The president of Palm responded to Apple bringing out a phone by saying:

“We’ve learned and struggled for a few years here figuring out how to make a decent phone.  PC guys are not going to just figure this out. They’re not going to just walk in.”

In January of 2007, Apple announced the iPhone.  About 9 months later, 3 months after the iPhone was released,  Palm sadly said they are pulling their new generation device/OS.  Palm had spent much time on the new operating system, but the iPhone killed it before it was even released.

“Palm is canceling its Foleo product right before the company was due to ship the new notebook-like device to retailers.  Palm founder Jeff Hawkins unveiled the Foleo at the Wall Street Journal’s D: All Things Digital Conference in May, calling it ‘the most exciting product I have ever worked on.’ Shaped like a notebook computer, the Foleo was designed to work in tandem with smartphones such as Palm’s Treos. The idea behind it was to provide a larger screen and keyboard that would allow smartphone users to more easily check their email and edit documents stored on their mobile devices. The company originally planned to sell the device starting this summer for about $500 each.” Troy Wolverton reports for The Mercury News.

The above post was made right after iSuppli reported that the iPhone had out sold all smart phones in July.

I do believe Palm can bounce back very easily, it has had rough times before so this is nothing new.  At this time however, Palm has commented that they are closing all their retail stores.  Palm seems to be doing what Apple did in 1997, closing down projects and other resources to focus on one path and then build up from there.
At this point people are say it’s going to be war between RIM and Apple for 2008, but maybe in 2009 Palm will join it again.

HowTo: Mac OS X Application Development Guide, Part 2

This is a series of guides about OS X Programming.

Who Should Read this:
This is a continuation of a guide that teaches people how to program in OS X. You can find the previous article here.

This tutorial is written for both beginners and experienced programmers alike. Much of it can probably be skipped by skilled developers. You should at least have good experience with Mac OS X. This part does not include using OS X yet, and more focuses on the background of OS X programming and the Objective-C language.

For “already” programmers, this guide focuses on programmers that develop in C, C++, BASIC, Java, and other similar languages.

Organization:
I have split up the categories and concepts into grouped paragraphs to make it easier to skip or navigate through the article. An example of this is right below with the title of the group: “Basics of C“, in bold. I have also highlighted parts of the text like this: “example“, for beginner programmers that other developers can pass over. There is also something called “In Depth“, which explains more in detail of something.

Basics of C:
C is the most widely used language in the computer world. Almost every language whether C++, Objective-C, or Java, your using the concepts and ideas created by C.

In Depth:
In the 60s, AT&T Bell labs was developing an operating system called Unics, they created a language to write it in called B. In the late 60s to early 70s, the programmers wanted to make the OS more portable, B was to integrated with the hardware to allow this. They need to develope a new Languages, this is what started the development of C. A few years later, AT&T Bell labs finished their OS in C renaming it UNIX. C is a very portable system that can rest on almost any hardware setup making it very popular. C was also very easy to use compared to other languages.

To start off with with basics of C, you need to understand the “#include” keyword. This is a needed asset which imports and connects outside resources to your code. The most imported resources would be from the standard library for the language along with other resources to your code. In Objective-C, you’ll normally be adding something called Cocoa.h to each document in your project.

If you’ve used another language like BASIC, this concept might be new. In BASIC, the library/compiler is normally proprietary and built into the IDE(Integrated Development Environment) application. In C and languages based off of it, the compiler is noramlly not a part of the IDE, this means it needs more information on what to do and what code to use. Also, compilers like this are more open and extensible. This can help expand developers’ applications by giving them the ability to use 3rd party frameworks and systems. This is one of the big reason for the include keyword. Besides making the applications more feature rich by allowing outside sources to connect to it, it can also make your code more organized and make your programs smaller.

In an environment like Realbasic, for instance, a application is given a dylib(Dynamic Library). This dylib contains all the functions and resources built into Realbasic, not just the ones you’ve used. This can add up to large file sizes. In C and other languages, the include keyword is not just needed to import the standard set of libraries, but to import only the ones you want, making your applications small.
Another great feature about the #include, is that it allows you to split up your code into multiple files. This allows more people to work on the same project, and it makes it easier to go over a specific asset. Here’s an example line for including a source file, which normally is a header file.

#include <stdio.h>

The first part is “#include”, which tells the preprocessor(a system before the compiler) to include a source file. The next part is “<stdio.h>”. The “<” and “>” tags mean that you want to get the source file from a standard system folder, normally one containing files from the standard set of the Language. The “stdio.h” is the source file your looking for. Now this code is not for the actual compiler. This line is for something called the preprocessor. All keywords with the “#” in front of them are for the preprocessor, which gets the code polished up and ready for the compiler.

Lastly with the #include keyword, to access normal source files you’ve made, you should use quotes instead of tags like this:

#include “foo.h”

This means that it will look in the same folder as your code, for the file foo.h.

The next part to know about C are the variables. Variables are an incredibly valuable resource in programming. a variable like explained in the last part is a space that holds data. Here is an example of declaring or making a C variable, with a BASIC version of the code underneath:

int foo;
Dim foo As Integer

alternative:

int foo = 100;
dim foo As Integer = 100

alternative:

int foo, foo2;
dim foo, foo2 As integer

The next important part to learn about before getting into Objective-C, is the conditional statements. A conditional really helps make a program non-linear and more feature rich. Just about every program out in the modern world uses many of these conditional statements. Here’s an english readable version of one:

If a person presses the computer’s power button, then the computer will turn on.

Now above, a computer won’t understand what that means. We have to translate it into a more simplistic form like this:

if(person.presses == computer.powerButtonPressed) {
computer.turnOn;
}

Above, I wrote out the same sentence in C. At this point ignore the parentheses and curly brackets. The first part is “if” which is a keyword that starts the conditional statement. The next part is “person.presses”. I made the person into an object, and presses into a method. The method returns a boolean(true or false) value. Next I added a “==” which means I want to see if the right side of the statement equals the left. After that, I add “computer.powerButtonPressed”, in which computer is an object and powerButtonPressed is a method returning a boolean value. “Computer.turnOn” is the results of the conditional statement.

For beginners you might want to look over the last paragraph a few times before continuing.

Now about those brackets and parentheses. In a language like C, these are normally used as containers. These containers hold code with in them, away from the global code. A real world example would be: in a house, a refrigerator is a container that holds food. Now in the conditional statement above, the parentheses are used as a container that hold the statement. The curly brackets are used as a container that holds the results.

In C, “=” and “==” are to different operators. “=” means you want a variable or another asset on the left side to contain the value of the asset on the right side. The “==” means you want to know if the value on the left equals the value on the right:

int var1;
var1 = 5;
this makes var1 have the value 5.

if(var1 == 5){
do.this;
}
this checks to see if var1 does equal 5.

Objects and Classes:
The Language C, is not an object oriented language. It is a procedure language, which means it uses steps to reach it’s desired output or state. In Object oriented languages like Objective-C you use objects and methods to create a network or structure that forms your application. Another concept you need to learn about are classes. When you create your own custom object, your making what is known as a class. A class holds the information needed to create the objects and is more like the factory than the product(in a sense).

A class tells the compiler what the object is and what methods and other assets it has. When you build a class in some languages it looks like this:

function Class1{
this.method1 = function{alert(“hello world”);};
this.var1;
}

Above is an example of a class from Javascript. In many languages there is something called a function. A function separates code like a container from the global code, it’s useful because the container can be called from anywhere. This can save you from writing down the same code more than once since it’s already in the function. Many languages were created before or away from the idea of the object oriented concept. To adapt, many languages just expanded on the functions to create class interfaces. To make the above function class into an actually object also called an instance of the class, you do this:

var object1 = new Class1;

In Objective-C, normally a class takes up two files, the header file and what is called the implementation file. I’ll get into those later. here’s how to create an Objective-C object:

NSImage * image1 = [[NSImage alloc] init];

Understand Some Objective-C Concepts:
In Depth:
Objective-C is based off of C, but more specifically it’s an extension to Ansi C. “Ansi”, just means that the C code used is the standard set by the American National Standards Institute(ANSI). To be even more specific, Objective-C is based off of a language created at Xerox PARC known as Smalltalk.

Smalltalk, released in 1980, was the first language called object oriented. Smalltalk and Objective-C are what is considered pure object oriented. Unlike C++ or Java, in a pure OOP primitive values(integers,characters,etc) are the same as object values. To add to this, in a pure OOP, primitives like integers are objects themselves. Like for instance, in C++ you’d use a variable like int, in Objective-C you’d use NSInteger. NSInteger isn’t just a variable, it’s an object.

In C, like above, you have the include keyword, written as “#include”. This resource happens to be in Objective-C as well, since Objective-C is on top of C. Now to tell you the truth, you should never use #include in your Objective-C programming. Apple, replaced this concept with something called #import. This has the same properties as include and works almost the same way. The only difference with the import keyword compared to the include, is that it tells the preprocessor to check to see if the code it’s trying to import has already been imported. If you use “#include”, it wont care if it already imported the code, it’ll do it again making your apps bigger than they need to be by having 2 or more of the same exact thing. here’s an Example:

#include <Cocoa/Cocoa.h>

#import <Cocoa/Cocoa.h>

If you plan to use ObjC to make applications in OS X your going to have more than one source file in your program. Each one of these files connects to the Cocoa.h header file. If you use #include you will be compiling Cocoa.h in your application multiple times. This can lead to a large file size, and even a long compiling time.

Objective-C or ObjC uses a different means of building objects and accessing methods and variables than most languages including C. You can however use C functions and methods with ObjC with no problem, like this:

NSLog(@”this is an Objective-C String”);

NSLog although looks like an ObjC function of some sort, is actually C. The part in the parentheses is ObjC. The “@” tells the compiler that this happens to be an ObjC String Object also called an NSString.

Like I said in the previous part of the guide, ObjC uses what’s called messages to communicate to objects. Here’s two simple example:

[Object method:argument];

[Object method:[Class method]];

The first might be easy to understand. You first have the Object which you want to talk to, then you have the method. The last part is the arguments that the message is sending to the object’s method.

The example under the first one, might look a little harder. It’s exactly the same until you reach the argument part. What you have is “[Class message]”,
which is a simple and common way to get an action done by a method of a class with out making the class an object. I could have done this:

Class * Object2 = [[Class alloc] init]; //I’ll get into “alloc” and “init” later

[Object message:[Object2 message]];

above is the same as:

[Object message:[Class message]];

The great power of ObjC is the ability to use a class with out creating an instance of it. For example, to load an image to be used by an item in the tool bar, you would do this:

[tbOpenFile setImage:[NSImage ImageNamed:@”OpenFile.png”]];

This is a real world message used in many programs to add a graphical image to a tool bar item. The first part is “tbOpenFile”, this is the tool bar item you are accessing. The next part is the method: “setImage”, this will set the image. After that you add to the setImage argument: “[NSImage ImageNamed:@”OpenFile.png”]”, which is a sub message inside a parent message. This sub message uses a class called NSImage and it’s method, ImageNamed, to locate the file OpenFile.png in the Resources folder. In all OS X applications, there is a folder called Resources which holds all the assets for the program.

Next Part:
Finally, we’ll get into the IDE called Xcode, provided by Apple. I’ll show you how to build a basic web browser for the Cocoa application environment; it’s easier than you might think.

MacBook Air Up to $3089? The Reason Inside…

As I’ve seen many people post about it, the MacBook Air has a very noticeable price. It starts at $1799 and can reach up to $3098. Most people that complain about it’s price believe it’s a laptop that fits into the same category as a low-end subnotebook, one of which might be the Asus Eee PC. The Eee PC sells under $500, but the fact of the matter is, the MacBook Air is a high-end sub-notebook. These notebooks, like the Sony Vaio VGN-TX, are closer to $2000-$3000.

Why the high prices? Well, they have better specs, materials, and higher manufacturing costs than lower end subnotebooks. What I’ve noticed is that Apple’s starting price of $1799 for their laptop, is very competitive. Most subnotebooks like it range around $2000-$2200, while having lower specifications. Here’s a basic comparison of the MacBook Air and two others in it’s category.:

MacBook Air($1,799):
from store.apple.com
13.3″ Glass screen -Largest
Intel Core 2 Duo 1.6Ghz, 4MB L2 Cache - Fastest
80GB ATA Hard Drive - Largest, slower
2GB RAM(667Mhz, 800Mhz FSB) - Largest, fastest
Intel GMA x3100 - Highest
802.11n Wireless - Highest
Bluetooth 2.1-EDR - Highest
Built-in Camera/Mic - Same
Double-layer Super Drive - Lowest
Score: 19

Sony VAIO TZ Series VGN-TZ190N/B($2,699):
from www.bhphotovideo.com
11.1″ Screen - Smaller
Intel Core 2 Duo 1.2Ghz, 2MB L2 Cache - Slower
32GB NAND Hard Drive - Smallest, but Fastest
2GB RAM(533Mhz, 533Mhz FSB) - Highest, but Slowest
Intel GMA 950 - Lowest
802.11n Wireless - Highest
Bluetooth - Highest
Built-in Camera/Mic - Same
Double-layer Super Drive - highest
Score: 14

Fujitsu Lifebook($1,899):
from store.shopfujitsu.com
10.6″ Screen - Smallest
Intel Core Solo 1.2 Ghz, 2MB L2 Cache - Slowest
60GB ATA Hard drive -Highest, but Slowest
1GB RAM(667Mhz, 533Mhz FSB) Smallest, Slower
Intel GMA 950 - Lowest
802.11g Wireless - Lowest
Bluetooth 2.0 - Lowest
Built-in Camera/Mic - Same
Double-Layer Super Drive - highest
Score: 7

As you can see above, comparing the three prices with the specs, I think the MacBook Air is very competitive. It has the largest screen, the fastest processor, the highest amount of RAM(tied with the VAIO), the fastest RAM, and the highest level graphics card. It also is the only one to have a multi-touch track pad. The only downside is the missing optical drive, which is an extra $99 for a USB attached one.

One big thing I noticed from looking at a couple subnotebooks, comparing them to the MacBook Air, is that all most every one followed what Steve Jobs said in his Keynote. All of them had a smaller screen then the MacBook Air, all had a lower-end processor, and almost all of them cost more than the MacBook Air even though they had lowered components. I must take note though, the MacBook Air is roughly one of the heaviest subnotebooks, most range at 2.7 pounds, not 3.0 like Jobs pointed out. Also, I haven’t noticed one with a miniature keyboard, unless I don’t understand Jobs’ definition of one.

Now what about the other version of the MacBook Air, the $3098 one? To get from $1799 to $3098, all that’s added is the 64GB solid state drive and the 1.8Ghz upgrade for the CPU. At first this might sound like a rip off, but i did a little investigation about the price of SDD.

I found a very interesting thing, the average cost of a 64GB SSD card seems to be around $1500. Apple’s is at a price of $999, a very good deal. The most expensive 64GB solid state drive went up to almost $3000, and for 128GB it’s $5000. Remember this is just a drive, not a computer.

In the end, although the MacBook Air is a very expensive computer, in its ultra portable notebook category it’s a premium computer at a very generous price.

HowTo: Mac OS X Application Development Guide, Part 1

This is a series of guides about OS X Programming using Xcode.

Who Should Read This:
This tutorial is written for both beginners and experienced programmers alike. Much of it can probably be skipped by skilled developers. You should at least have good experience with Mac OS X. This first part does not include using OS X yet, and more focuses on the background of OS X programming and the Objective-C language.

For “already” programmers, this guide focuses on people that develop in C, C++, BASIC, Java, and other similar languages.

Organization:
I have split up the categories and concepts into grouped paragraphs to make it easier to skip or navigate through the article. An example of this is right below with the title of the group: “Objective-C and Cocoa“, in bold. I have also highlighted parts of the text with a blue color like this: “example“, for beginning programmers that other developers can pass over. There is also something called “In Depth“, which explains more in detail of something. I have also styled the code examples so they’re easier to read.

Objective-C and Cocoa, a Little Background:
If your a developer who is use to C, C++, Java, and other forms of programming like this then learning how to develop software in OS X might actually seem harder to you than to a novice who’s never programmed before. The reason; OS X uses something know as Objective-C. Objective-C or simply objC, is the primary language for writing OS X applications. It has to be the most odd balled language I have ever used. Now saying that, I don’t mean it’s bad. On the contrary, ObjC is about the most powerful and versatile language I’ve ever used and to a novice it is also the easiest excluding BASIC.

What I’ve realize with ObjC, is that you have to forget the concepts of programming that your use to. It’s not that ObjC by itself is hard to understand, but when mixed with OS X’s primary application environment known as Cocoa it can be.
An application environment in basic terms is the set of frameworks, libraries, programming languages, and other tidbits that build up and run an Application. Sometimes it’s said as “application development environment”, which more specifies to the tools used to make the application.

The new version of OS X(Leopard) has 4 main application environments: Carbon, Cocoa, Java, and BSD. If your using OS X Tiger or lower, then the main application environments you have are: Classic, Carbon, Cocoa, and Java.

This series of tutorials is based around the Cocoa environment. If you would like to program in C++, you should look at Carbon. Carbon was the universal application environment between MacOS 9 and Mac OS X, it has now become an alternative to Cocoa for C++ programmers. Carbon does not contain many of the great features and tools as Cocoa however and your Applications wont fully feel or look like OS X programs. If you are an experienced C++ user, but would like to use Cocoa, you should look into Objective-C++ which I’ll explain in a later part of this guide.

In Depth:
Cocoa was originally created by the company NeXT. At the time, Cocoa was called NeXTStep. If you read my article here, it’ll explain how NeXTStep became OS X. Well NeXTStep was more than an OS, it was also the name of the application environment. Eventually NeXT threw out the OS(the Mach Kernel) and with help from Sun Microsystems, evolved the Application environment into OPENStep. OPENStep was a multi-platform environment that became a competitor to Java. Eventually Apple bought the company NeXT over BeOS, to use it’s OPENStep system as there next evolutionary operating system. Apple then changed the name OPENStep to Yellowbox and there new OS based on OPENStep was called Rhapsody. Yellowbox up until developer release 3 was built to run on Macs, as well as on top of Windows, Linux, UNIX, and Solaris. Do to low developer support, Apple canceled the multi-platform model and instead focused on Rhapsody for Macs. Eventually in 1999 Apple release Rhapsody to the public as Mac OS X Server 1.0. In 2001, Mac OS X 10.0 was released. It took until Mac OS X 10.2 for Apple to finish the x86 version of OS X in 2002, which was never released until 2006 with Tiger. If you still want to use a Cocoa like environment with the Objective-C language to build multi-platform software, look into GNUStep. GNUStep is very much like OPENStep, but is much older and still has an active community.

Along with the NeXTStep environment, NeXT needed a language that was dynamic and powerful. In the end they created an object oriented language called Objective-C. Objective-C in NeXTStep was only two basic frameworks: Application Kit and the Foundation framework. Today, OS X contains over 80 built-in frameworks. This allows more powerful applications and features, but it also makes it harder when you first start learning about Cocoa.

There are some pieces of NeXTStep still in Objective-C and Cocoa. Like for instance, the built in objects have the Prefix “NS”, this stands for NeXTStep. The interface files, that you’ll learn about later have the file extension “NIB”, which stands for NeXTStep Interface Builder. In Mac OS X 10.5 Leopard, Apple has started to faze out these connections. The new NIB format now can have the extension “XIB”, which means Xcode Interface Builder. Xcode is the name of Apple’s development application as well as the rest of the suite that comes with it. Like with Mac OS X, there is only one version of Xcode, and it’s free from Apple here.

Object Oriented(OO) Languages:
An object oriented language or OO is a high-end or high level language. This doesn’t necessarily mean it’s hard, on the contrary this means it’s easier. The higher the level, the more human readable and understandable it becomes. OO languages are about the easiest to learn.

In Depth:
Back in the day people use to program from binary. Binary is the lowest language there is and it is not considered a programming language. Binary is actually a computer language. A computer language is a language that the computer natively understands but a programmer might not. To make it easier to program, new languages that were more human readable were developed. These languages would then translated or compiled into binary for the computer to understand.

Today the languages that replaced the need to program in binary have as well been replaced by languages that are either based from them, or on top of them. This bring in the concept of levels. Binary is at the lowest level, and something like Objective-C is up in a much higher level on top of something known as C.

The most used language in programing is C. Even if you haven’t used C, you might have programmed with a language on top of or based off of C. In the next part of the guide, I’ll explain more about the C language.

Objective-C is a language based off of and on top of C. This means that you can use the C language along with Objective-C. for example:

If(str1==@”hello”) this is C using ObjectiveC variables
{
[str1 setString:@”Hi”]; This is ObjectiveC
}

Another language, C++, is based off of C as well. You can’t directly integrate C++ and Objective-C together, but they can work together indirectly. This indirect way of using C++ and Objective-C together is called Objective-C++. I will get into this more later.

OO languages use a concept in which there or these things called objects. To make it relative to the real world, you can picture an object as a physical item like a house or table. I’ll use “car” as an example Object. A car has assets that contain functions, a few are: a steering wheel, a acceleration peddle, and a brake peddle. These assets, in an object oriented language are called methods and are used to create an action of some sort. A Steering wheel for example creates the action of turning the car left or right. In OO you would create this action through a command or sentence like this:

car.steeringWheel 45

Above is an example written in the BASIC language. First I wrote down the object that will be accessed, then I add a dot. The dot explains that you want to access something in the object. Then I added on the asset, steeringWheel. In OO these assets are called methods. In most object oriented languages you are not allowed to add spaces in side the method’s name. The last part is called an argument. An argument is what you want to tell the method and in turn it tells the object what to do. In the example I tell the object 45. 45 means that that I want the car to rotate 45 degrees to the right. If I said -45, it would rotate 45 degrees to the left. Now for beginners that might be wondering if this object is real, it’s not this is just an example object I just made up out of thin air. Car doesn’t exist in the main language of BASIC.

A great power of OO is the power of hierarchy. Besides Functional assets(methods) like a steering wheel, you can have objects in side objects. So let’s say, to make it easier for programmers to understand how to turn the car object, let’s make the steering wheel an object which has 2 methods. The methods are left and right. Here’s what it would look like:

car.steeringWheel.right 45

Now let’s say that you want to record this rotation value. Then you need to add a property or variable to the object. a property/variable(differently named depending on the language and usage) is like a container that holds information or data. Let’s say there is a Gauge of some sort on the car’s dashboard that shows how much the car’s steering wheel has rotated. We’ll call this swRotateGauge, the “sw” stands for steering wheel. here’s the example again:

car.steeringWheel.right 45
car.swRotationGauge = 45

We just added to the swRotationGauge container, the number 45.
Now most methods and objects will do more than one thing. A normal object in the BASIC language would probably add the two commands above in one like this:

car.steeringWheel.right 45

The above method would rotation the car and add the number 45 to the swRotationGauge on one line. Car is the main object, steeringWheel is the subObject, and right is the method. Again, 45 repersents the argument the programmer gives to the method right.

A Little Bit of ObjC Code:
In this example you’ll see the same action, written in 3 different languages. There will be an object called car. Car has a method called steeringWheel with 2 arguments that turn the car. Read the first two actions, one written in BASIC, the other in C++. See if you can identify what both the arguments mean. Then look at the Objective-C example.

BASIC:
car.steeringWheel 50,10

C++:
car.steeringWheel(50,10);

Objective-C:
[car steeringWheelRotates:50 Speed:10];

In the first example, we are rotating the steering wheel 50 degrees with the object, car, at the speed of 10. The big problem with BASIC, is not knowing anything about the arguments on paper. If you don’t know the arguments you have to look in the reference. Also when someone reads your code, with out knowing the argument names of a method, they might not understand what the code is doing.

In C++, you have the same problem as BASIC, you don’t see the names of the arguments. However, it is strict with the semicolon, which can help advance users organize code better.

When you went down to the third example, you might have been confused. The Objective-C example might not make any sense, or it might have made the most sense. First off you might notice the brackets “[” and “]”. These surround what is called a message. ” [car steeringWheelRotates:50 Speed:10];” is a message. You are sending a message to the object car to rotate the steeringWheel, which in turn turns the car. So now what do you think the method itself is? well this is the method:

steeringWheelRotates:Speed:

In Objective-C, the Methods are split into sections, each section is separated by a colon(”:”), and each section represents an argument. steeringWheelRotates:Speed: is the full method name and the two arguments are steeringWheelRotates: and Speed:. The colons are apart of the name. To compete the arguments, you add the values: positionLeft:50 and Right:50.

Some methods in Objective-C don’t have arguments, if they don’t you just write the name with out any colons like this:

[car turnOn];

BASIC:
car.turnOn

C++:
car.turnOn();

Next Part:
In the next part of the guide, I will explain about the C language(for beginners) and how Objective-C adds to it.

Apple Finally updates its Mac Pros!

After almost a year, Apple finally updated its high-end computers. Both the Mac Pros and Apple’s server side computers, XServes, have been upgraded.

Mac Pro Starting Stats:

-Two 2.8GHZ Quad core Xeon Processors (8 core now standard)

-2 Gigs of RAM

-320GB of Hard Drive Space

-ATI Radeon HD 2600 XT 256MB

-16x SuperDrive

Mac Pro Maxed/Add-ons:

-Two 3.2Ghz Quad core Xeon Processors

-32 Gigs of RAM

-RAID Card

-4 Terabytes of Disk space

Video Cards:

-2 x ATI Radeon HD 2600 XT 256MB

-NVIDIA GeForce 8800 GT 512MB (Two dual-link DVI)

-3 x ATI Radeon HD 2600 XT 256MB

-4 x ATI Radeon HD 2600 XT 256MB

-NVIDIA Quadro FX 5600 1.5GB (Stereo 3D, two dual-link DVI)

-Two 16x Superdrives

Xserve starting Stats:

-One 2.8Ghz Quad Core Xeon

-2 Gigs of RAM

-80GB Hard Drive

-ATI Radeon X1300 64MB SDRAM(The server is for computing, not graphics)

-Comes with Mac OS X Server

Xserve Upgraded Stats:

-Two 3.0Ghz Quad Core Xeons

-32 Gigs of RAM(not new)

-3 Terabytes of Hard drive space

Avon CEO Andrea Jung + Apple = NBC on iTunes?

Today Apple posted a press release.  It was about a new Member on the board of directors for Apple.  Andrea Jung, CEO of Avon, was added to the board.  Avon is the largest global corporation for women beauty products.  When I first read this, I thought this made no sense.  Then I read on, I found that she is also on the board at GE(General Electronics).  This really caught my eye.  As I’m a person that follows the film and broadcasting industries I know that GE happens to own NBC.

Last year NBC didn’t like Apple’s concept of payment for iTunes.  They wanted to make it more variable and even have some of there shows prices at 2.99-4.99 an episode.  Apple of course threw down this idea and NBC got mad.  Since then NBC has  left iTunes and become some sort of competitor to Apple creating their own system.  They also appear to be partnering with Microsoft, one of Apple’s biggest competitors.

Since Apple now has  Andrea Jung, Apple has some power over NBC.  This could end with NBC coming back to iTunes, a failing attempt to get NBC back, or just a simple coincidence.

Macworld Predictions and Probabilities

Every year since 1985 there has been a Mac only conference called Macworld Expo. Here companies show off their new products, and many keynotes are held. Steve Jobs’ keynote took over in ‘97, after he returned to Apple. Until 2005, there were normally two Macworld Expos, one in the west U.S. and one in the east. Today, only the San Francisco one is held.

Below is a list of rumors and predictions and their probability due to facts and data online:

New iTunes Movie Rental - 99.99%
Update AppleTV (Minor) - 75%

New Sub Notebook - 95%
New docking screen for Sub Notebook - 20% (based on a patent by Apple here)

Update MacBook (New case) - 90%
Update MacBook Pro (Minor) - 99.99%
Update Mac Pro (Minor) - 80% (Apple might wait for NAB)
Update Mac mini (New case) - 60%
Remove Mac mini - 20%
New Mouse (Touch screen features) - 10% (Based on patents by Apple)

Update iPhone (Minor) - 99.99%
Update iPod Touch (Minor) - 30%
Update iPod Classic (Minor) - 10% (Many companies are getting out of sub HDDs)
New Apple PDA - 60% (There have been many signs that Apple is bringing back its PDA line)

1 2 3 ... 999999