A Brief Review of PragProg’s Becoming Productive in Xcode Screencasts

I just finished watching the first 2 episodes of this screencast series. It has a pleasant tone and a lot of helpful information in it. You might imagine it as sitting down with another developer already familiar with Xcode and having him show you the very best features and highlights of the IDE. The author doesn’t play up Xcode too much, but by demoing all of the specific features he did, the viewer will find that ultimately they all make for a very powerful and pleasant to use IDE.

This is a great screencast to combine with reading the vendor documentation (here). The screencast gives you a jumpstart by highlighting the best features and getting you productive with the IDE while the vendor documentation gives you some important details that wouldn’t make sense to include in a screencast like this.

The author presented with a pleasant tone and a good meter, and the content was perfect for showing off Xcode. Apple should thank him as the documentation doesn’t come anywhere close to selling the great features that Xcode provides as the author does in these screencasts.

A Brief Review of PragProg’s Coding in Objective-C 2.0 Screencasts

I just finished watching the first 3 episodes of this screencast series. The videos have sort of an odd tone in that the content seems to be tailored to beginning programmers, but at times details are added that would only make sense to an experienced programmer. For example, “the debugger is cool” versus “sending the autorelease message causes the runtime to register the receiver with the most recent pool on the stack” (caveat, he did follow that by commenting that you don’t need to know what is the stack, the most recent pool on the stack, or how the runtime finds it, but nonetheless). The result is that for beginners it is distracting, and for experienced programmers it is disappointing because you never get the depth that you want.

Additionally, the author has the habit of making statements explaining the current operation that he is demonstrating, and then ending the explanation with “or whatever”. For example, “the program counter steps over the instructions of the generated assembly code… or whatever”. The result of such an approach leaves the viewer wondering whether or not he should believe what the author just explained to him.

I feel like the author did something of a “rush job” to get these screencasts out. The downside is that the time you spent watching them could have been better spent doing something else, like reading Programming in Objective-C 2.0 for example.

My gut feeling is that the author is very knowledgable on the topic, and that the screencasts don’t represent his expertise. I am interested to see how the screencasts compare to his soon to be released book.

Examining the Objective-C runtime information stored in Mach-O files

class-dump

This is a command-line utility for examining the Objective-C runtime information stored in Mach-O files. It generates declarations for the classes, categories and protocols. This is the same information provided by using ‘otool -ov’, but presented as normal Objective-C declarations, so it is much more compact and readable.

Why use class-dump?

It’s a great tool for the curious. You can look at the design of closed source applications, frameworks, and bundles. Watch the interfaces evolve between releases. Experiment with private frameworks, or see what private goodies are hiding in the AppKit. Learn about the plugin API lurking in Mail.app.

Cross-compiling Java to Objective-C for the iPhone

It seems that you can cross compile Java to Objective-C on the iPhone. I didn’t dig any deeper than that.

Here is the blurb for the technologies used:

The goal of XMLVM is to offer a flexible and extensible cross-compiler toolchain. Instead of cross-compiling on a source code level, XMLVM cross-compiles byte code instructions from Sun Microsystem’s virtual machine and Microsoft’s Common Language Runtime. The benefit of this approach is that byte code instructions are easier to cross-compile and the difficult parsing of a high-level programming language is left to a regular compiler. In XMLVM, byte code-based programs are represented as XML documents. This allows manipulation and translation of XMLVM-based programs using advanced XML technologies such as XSLT, XQuery, and XPath.

Apple’s iPhone has generated huge interest amongst users and developers alike. Like MacOS X, the iPhone development environment is based on Objective-C as the development language and Cocoa for the GUI library. The iPhone SDK license agreement does not permit the development of a virtual machine. Using XMLVM, we circumvent this problem by cross-compiling Java to the iPhone. Just like a Java application can be cross-compiled to AJAX, XMLVM can be used to cross-compile a Java application to Objective-C. The cross-compilation is also accomplished by mimicking a stack-based machine in Objective-C. Consider the instruction (integer remainder) that pops two integers off the stack and pushes their remainder after division back onto the stack. Using the following XSL template, the instruction can be mapped to Objective-C.

(via the PLT Mailing List)