Become a fan of Slashdot on Facebook


Forgot your password?

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

"The way of the world is to praise dead saints and prosecute live ones." -- Nathaniel Howe