Follow Slashdot stories on Twitter


Forgot your password?

Submission + - Beginning iPhone Development

Cory Foy writes: "When my wife got an iTouch several months back, the first thing I wanted to do was build some applications for it. Who wouldn't want to play with a device that has accelerometers, position sensors and multi-touch gestures? But being new to the Mac world, I needed something to help guide me along. Beginning iPhone Development aims to be that guide. But does it live up to the challenge of teaching a newbie Mac and iPhone developer?

The first thing you'll need to do is head over to the Apple Developers Site and register for an account. You can then download the iPhone API. Note that while the API download and simulator are free — deploying to a real iPhone or iTouch is not, even if it is your own. To do that you have to apply to the iPhone Developer Program which is $99. For the book, you'll be fine with just the simulator with the exception of any accelerometer application, since the simulator doesn't have that feature.

With that out of the way, I was quite impressed with the book. Although I've done quite a bit of development in the past, I haven't worked with Objective-C before, and was a little concerned if I would be in over my head. If you are in that position, don't fear — the authors do a great job of walking you through, and you'll find yourself working with it in no time.

The first chapters introduce you to the basics of the iPhone and development, starting with the canonical "Hello, World" application. The book walks you through how to get and install Xcode and the iPhone API. It then introduces you to Interface Builder, the partner-in-crime to Xcode. Even in the first chapter, the authors show their attention to detail, explaining common issues you might run into (like trying to Build and Run while your iPhone or iTouch is plugged in to your Mac).

Chapter 3 introduces the Model-View-Controller paradigm, a pattern that is probably one of the most misunderstood patterns in UI development. They give you enough information to be familiar with the terms you'll be using, and they very much mean it when they tell you not to worry if you aren't understanding something — they always loop back around to make sure you understand it.

Chapter 4 was a long chapter for me, but introduces some important concepts around user interaction and controls. By the end, you have an interface which has a variety of controls which interact with each other. As with the other chapters, the authors introduce tips and tricks to make things easier (for example, Option->Cmd->Up Arrow to switch from the header to implementation file in Xcode).

Chapter 5 covers autorotation and basic animations, including linking in the Core Graphics Framework. I especially like how the authors gave three different ways of making your app auto-rotation aware, describing the benefits and drawbacks of each. Chapter 6 follows this up by introducing multi-view interfaces, something very necessary as you get into more complex iPhone development.

Chapters 7-9 describe various methods to presenting information to users, including toolbars, table views, hierarchical navigation and hierarchical lists. However, it isn't all drag-n-drop, the authors get into some good (and sometimes deep) conversations about what you are doing. For example, in Chapter 8, they talk about issues with NSDictionary and how to create deep mutable copies.

Chapters 10-13 are the last of the "fundamentals" — application settings, basic data management, custom drawing using Quartz and Open GL, and taking inputs (including gestures and multi-touch). As someone who spends most of his time as far away from graphics libraries as possible, I was quite impressed with the basics that were introduced and what someone like me could get up and running.

Finally we get into the fun. Chapter 14 introduces Core Location, allowing to figure out where in the world you are. The book goes through a discussion about the various ways to get location information, and drawbacks of each. (Helpful tip: no matter which method, if you are polling every second, you'll drain the battery pretty quickly). For the simulator-only users, this is when things start to become tricky. Chapter 14 does work, though you aren't prompted for access to Core Location.

Chapter 15, however, is useless without an actual phone, even though it's perhaps the most fun. In this chapter, the book goes through the accelerometer and all the interesting things you can do with it. There's even a small discussion on the physics (but just enough!). Both apps you create (Shake and Break and the Marble game) are quite fun for someone just starting out with all of this. It's a shame Apple couldn't figure out a way yet to include the accelerometer in the simulator.

Chapter 16 covers using the iPhone camera and Photo Library. It's short, but it shows the power of the simple interfaces Apple provides. In just 9 pages you'll be capturing images right from the iPhone.

The final two chapters I thought were quite fitting — Localization and Follow-Ups. In the localization chapter, the book covers extracting strings out to resource files and using locale to read them in. Having a day job which ships our software in 12 different languages, I know first-hand how difficult localization can be to get right, so I was glad to see this chapter. The final chapter is just a wrap-up of resources you can reach out to for help and information.

All in all I was very surprised and pleased with the book. I've had the fortune of reading many technical books, and few do a great job of walking someone through the basics without making them feel like a dolt. It felt like every time I was stuck or unsure there was a tip, hint or paragraph which explained what was going on.

The main drawback to me is the fee to deploy apps to your own phone. This wasn't something I ran into doing either J2ME or Windows Mobile apps in the past, and it is a shame that to even work on your own phone you have to pay a fee. However, since the fee does give you the ability to submit apps to the App Store, then I guess it's a consolation. I'd rather Apple lock deployments to one iPhone (or iTouch) for the truly casual people who just want to do interesting things on their own phone.

In summary, I give this book five $1000 Rubys for making a clean, concise, easy-to-read and follow introduction to iPhone development. Great job guys!"

Submission + - Man Arrested for Cursing in Public Park (

Anml4ixoye writes: "While visiting Sarasota, FL, you could be locked up for breaking the law if you are theft, assault, or any of the other normal offenses. You can also be locked up for "prohibitions against gambling boats, visiting a 'house of ill fame' and 'being in a public place in a state of nudity or in a dress not belonging to such person's sex.'" These so-called "Offenses Against Public Morals" extend to what you can say in a public place. Just ask Christopher Haudt who had charges brought against him for swearing near a minor during a public park's opening."

Submission + - Teamprise releases free version of TFS Client

Cory Foy writes: "Microsoft's open-source site CodePlex has lacked something big since its inception — a way to access the underlying source control system, Team Foundation Server, from a non-Windows machine without buying a license from a third-party company. However, last week Teamprise, a company who makes a Java-based Team Foundation client, announced they were giving away a license to their client for open-source developers using CodePlex. This is great news for people who actually do cross platform .NET development."

Submission + - Review: Pro Java ME MMAPI

Cory Foy writes: "Several months ago Vikram Goyal emailed me letting me know he had a new book coming out from Apress — Pro Java ME MMAPI: Mobile Media API for Java Micro Edition. Having done mobile device development using J2ME, I knew how difficult it can be to do — or explain — some of the tricks in device development. So I wanted to see if this book could raise up to the challenge.

Vikram quickly sent me a copy, which I started to look through. And then we moved. Somehow in the move the book got packed in a box that was marked "Garage Sale items" and promptly shoved into our garage of our new house. While looking for some other things for my trip to Budapest, I stumbled across the box, and the book.

And am I glad I did. I've noticed as of late that the quality of the technical books I've been reading has deteriorated. Misspellings, wrong calculations, grammatical errors — not the thing to inspire confidence in the subject. In addition, the content can be hard to follow, it's hard to grasp where the author is going, etc, etc.

Not this book. I was immediately struck in the first chapter by how clearly written the book is. Yes, you need to have some knowledge of J2ME device development (specifically MIDlets), but Vikram does a great job easing you intothe subject, and providing good, easy to follow examples.

The subjects he is covering — dealing with media on mobile devices (specifically phones) is a particularly tricky subject. The problem? Many device manufacturers implements standards — differently. They claim to support things they don't. They ignore features you would expect. And worse, their emulators, the very thing you develop against, don't always match the phone. In fact, very rarely do they match the phone.

Vikram tackles this by testing his code on several different types of devices, and clearly lists out the dangers of relying on just the spec, or the reference implementation, or the emulator. Heck, I've seen versions of the same phone work differently based on what the provider had done to the phone. Verizon will always be evil to me based on my experiences of porting code that worked great on Nextel to Verizon phones, but that's another story.

Back to the book. The chapters are clearly laid out in an order I think provided a great learning roadmap. In chapter 1, he introduces the Mobile Media API (MMAPI) explaining what exactly it is, how it ties into things like MIDP 2.0 (Hint: MIDP 2.0 contains a subset of MMAPI functionality), and who supports it.

Chapter 2 provides an overview of the basics of the MMAPI. In particular, how to get data from a DataSource to play in a Player. Since the MMAPI is designed to be implemented by device manufacturers, it is a great read to see how an API can remain simple, yet cover a vast array of inputs and outputs. For example, Player instances can read files, streams, web sites, and a variety of other inputs. It can control audio, video, MIDI and tones. All of this using the same underlying API. Pretty good stuff.

Chapter 3 gets us diving into some code. We write a basic multimedia player, and then improve it to add functionality and increase performance by understanding what is involved in caching Players.

Chapter 4 continues on explaining the more about the underlying architecture, specifically the media player lifecycle and events. Since we are dealing with devices that generally have limited resources, the API provide a way to save claiming those resources until as late as possible. In addition, it provides ways to reclaim those resources, and Vikram covers some of those ways in this chapter. He then moves on to discuss the eventing architecture, and how to respond to custom events (he does briefly describe writing your own events — but I can attest that getting anything that low level on a device from US providers is usually pretty difficult).

It wouldn't be a good programming book if we didn't talk about threads at some point, and Vikram touches on it in Chapter 5. Specifically, we're diving into accessing files over the network, and we don't want to block the device while we are doing that. Yes, when you are running a MIDlet, the app thread is the main phone thread, so if it is waiting for network traffic, the phone is unresponsive to the user. So very wise use of threads is necessary. In addition, some security considerations start coming into play, and the book covers what to expect.

Now the fun starts. In Chapter 6, the book discusses Tone Control, the first of 2 entertaining chapters on making your device make noise. The chapter starts off with a very concise explanation of basic music theory to give developers an understanding of what they are going to need to do to generate tones of different pitches. It then moves on to the difference between Mono and Polyphonic notes, and how to create sequences of notes. By the end of the chapter, you too can have your phone playing "Happy Birthday".

Chapter 7 continues on with the party, going into one of my favorite subjects — MIDI. Again, we get a good, concise introduction to the fundamentals of MIDI. We then get to see how to send raw messages to a device that understands MIDI, and how to use MIDI in the MMAPI.

Chapter 8 touches on the other aspect of media — Video. To do this, it first discusses sampled audio, and how to capture and control it. It then goes into capturing video, which many devices may not support, and how to capture snapshots for those devices with cameras. It also covers what to do with the file when you've captured it (for example, save it or display it to the user), and closes with a discussion on streaming media.

I was surprised when I got to chapter 9 because chapter 8 ended by saying what we were going to cover in the final chapter, and I hadn't realized that I had read that much already! Chapter 9 is a great way to end the book — Vikram shows us how to implement our own mobile blogging website, complete with implementing uploads for Text, Audio and Video (if our devices support it). He even provides screen shots and full code, walking through it step by step to help us understand what is going on.

All in all I very much enjoyed the book. If you have a phone capable or supporting J2ME, this is definitely worth a read. The writing is very clear, and entertaining. If there is a downside, it the poor integration of J2ME in a lot of providers devices, and the inconsistencies in the implementations. But thankfully Vikram guides us through all that so we can quickly be up and running singing along to our favorite dance hit with the words on our phone, mobile blogging the whole thing."
Operating Systems

Submission + - Why do we use x86 CPUs?

bluefoxlucid writes: With Apple having now switched to x86 CPUs, I've been wondering for a while why we use the x86 architecture at all. The Power architecture was known for its better performance per clock; and still other RISC architectures such as the various ARM models provide very high performance per clock as well as reduced power usage, opening some potential for low-power laptops. Compilers can also deal with optimization in RISC architectures more easily, since the instruction set is smaller and the possible scheduling arrangements are thus reduced greatly. With Just-in-Time compilation, legacy x86 programs could be painlessly run on ARM/PPC by translating them dynamically at run time, similar to how CIL and Java work. So really, what do you all think about our choice of primary CPU architecture? Are x86 and x86_64 a good choice; or should we have shot for PPC64 or a 64-bit ARM solution?

Submission + - Cameras Help Cops Capture Cold-blooded Killer

CrazedWalrus writes: Philadelphia police recently captured a serial killer using a combination of Homeland Security and private surveillance cameras. Police pieced together relevant video from twelve different cameras, and eventually were able to identify the murderer. Once caught, he confessed to several other murders spanning the past eight years. Without these cameras, this killer would probably be lurking the streets of Philadelphia today. With results like that, is there really a good basis for argument against these cameras?

Submission + - A Microsoft-speak timeline: From Altair to Zune

netbuzz writes: "No company has had more to say about software over the past 30 years than Microsoft (for better or worse). How they've said it — the actual language used — reveals a lot about the company's evolution and is the focus of a new timeline-like "tag cloud" provided by the Seattle P-I. In addition to analyzing the linguistics of about 90 documents, there are also links to such gems as Bill Gates' Playboy interview and his famous "Open Letters to Hobbyists."

Blog item about it: 7

Link to P-I tool: "

Submission + - Apple's New Ipod Pea

An anonymous reader writes: With the new iPod Pea, Apple has finally managed to reduce their popular MP3 player to a size that barely accommodates its own headphone jack.
XBox (Games)

Submission + - Microsoft's Xbox 360 to Run Linux Soon?

An anonymous reader writes: In a very short presentation during the Lightning Talks at the 23rd Chaos Communication Congress in Germany an anonymous masked 'hacker' showed what could be an exploit in Microsoft's new console that will allow to boot Linux or other unsigned code. After booting and loading a game of King Kong the Xbox 360 displayed a logo of Xbox360, Tux and the old MacOS with the words "coming soon...". His retail 'Core' Xbox360 unit has a small custom PCB hanging out of the case and he's using a Apple Macbook pro to proceed with his hack. Discussions on community sites suggest he might have found an exploit in the vector shaders of King Kong which aren't signed or checked for validity by the Xbox 360.

Submission + - Open formats save the day

Amnl4ixoye writes: "This evening, I had the unfortunate experience of shift-deleting my entire Inbox for one of my accounts in Thunderbird. However, thanks in part to their openness of formats and standards, I was able to save the day by making some simple changes. Thank you open and clear formats!"
It's funny.  Laugh.

Submission + - UFO Above Chicago O'Hare International Airport

Aglassis writes: On Nov 7, 2006 at about 4:30 p.m. several United Airlines employees including several pilots observed a 6 to 24 ft diameter flying saucer-like object above Chicago's O'Hare International Airport. After hovering for several minutes without displaying any lights it then shot straight up and punched a hole in the 1,900 ft cloud ceiling. No explanation has been given nor did the air traffic control tower detect the purported craft on radar. One controller did note that "to fly 7 million light years to O'Hare and then have to turn around and go home because your gate was occupied is simply unacceptable."

Submission + - QuickTime Exploit Kicks Off Month of Apple Bugs

An anonymous reader writes: A previously undocumented security hole in Apple's QuickTime media player could expose Windows and Mac users alike to having unwanted software installed on their machines if they view a specially-crafted streaming media file, according to the first entry over at the controversial Month of Apple Bugs project. The problem apparently resides in the way QuickTime handles URLs that begin with "rtsp://". The Washington Post's Security Fix blog notes that while Safari and Internet Explorer will happily load such links, Firefox 2.0 does not. From the piece: "If the advisory is correct, this vulnerability does not strictly rely on tricking the would-be victim into clicking on a maliciously-crafted hyperlink. The exploit could be inserted into a video embedded in a Web page, one that loads automatically when the user visits the site. It also can be invoked inside of Macromedia Flash code or through Javascript commands.

Slashdot Top Deals

When you don't know what to do, walk fast and look worried.