« June 2004 | Main | August 2004 »

July 2004 Archives

July 10, 2004

Off to Wocoa

I am going with ZNeK to Wocoa in Würzburg for the weekend. I have nothing to show, but ZNeK will easily make up for that I think.

Hopefully next weekend, this page will become more active.

July 12, 2004

Back from Wocoa

This Wocoa was really nice. Enough people but not too many. Good location. Sufficient amounts of beer. Interesting people. Plenty of flies. Here are some impressions taken with my mobile phone camera (quality is fair to suckish, but my gosh don't you know it).

Anjo
(Anjo) Isn't anyone going to ask me about Cosada ?
Dirk and ZNeK
(Dirk and ZNeK) Some mischief played on an unsuspecting participant's iBook.
Helge and Michael
(Michael and Helge) The future looks even brighter with a beer in your hand.
Nat!
(Fiege Pils) My personal view of Wocoa.
Lars
(Lars and Helge) Was that a fly I swallowed?
Sopex
(ZNeK) "This presentation marks the end of WO and the beginning of SOPE X!"

July 13, 2004

Brainiacs and MulleIDE

I am making as much progress on the MulleIDE, as time permits. The general idea behind this IDE is, that I want to do the least amount of work, yet get the optimal result. The only way to achieve this is through a community process, where other people write the stuff for me :). The MulleIDE isn't even close to any alpha stage, but yet I have to make all the provisions to it being extendable.

For that I am using Brainiacs all over the place. The Brainiac is a little class, that uses NSNotification to figure out suitable subclasses for handling some unspecified stuff. There is a priority scheme involved, there maybe user selection, and there is NSUserDefaults also somewhere in the mix.

One kind of Brainiac, the FilesystemGenericBraniac for example is used on files, to edit them or retrieve icons of a particular file. The MulleIDE supplies the FilesystemGenericBraniac which offloads the work to the operating system :). More specialized Brainiacs can be written that do more.

Another type of Brainiac are RenderBraniacs, that are used to write the internal representation into Make, JAM or Antfiles. MulleIDE will just supply a MakeRenderBrainiac. In the distant future it would be nice to also have an import Brainiac, that imports regular Makefile into the internal representation.

There will be very little subclassing for subclass writers in this environment, possibly none, except maybe for Brainiac classes.

July 14, 2004

Mercy Killing

Java Clown Mercy Killing Just a little icon ZNeK sent me, featuring the Java Clown.

Doom 3 has gone into production

Not to worry, this site won't mutate into another link heap, but this is probably the most significant event in the digital realm since -uh- well Quake 3 came out :) And therefore needs to mentioned.

July 15, 2004

Java Clown

It has been brought to my attention that the Java mascot is usually not referred to as the Java Clown, but rather as the Juggler. I find this strange as I think the moniker "Java Clown" is most befitting in so many ways. Alas please read my previous entry as "Just a little icon ZNeK sent me, featuring the Juggler" instead of "Just a little icon ZNeK sent me, featuring the Java Clown".

Thank you.

Java Clown Mercy Killing

July 19, 2004

Java Clown's name is Duke

So final correction, the Java Clown is not called Juggler (no thanks to ZNeK for this disinformation) but called Duke. Thanks to Stefan K. for this.

Java Clown Mercy Killing

Java ClownDuke's and fate's paths cross...

July 20, 2004

Installed a certain feline Preview OS

As I am under NDA I have to word this carefully.

Anyway... For some head scratchin', use your new spanking IDE, finally with some intimations of thoughtful design, navigate to objc_msgSend and check out the first five instructions. If you figured out what it does, do you have an idea what it is good for and makes this worth it ?

July 21, 2004

Quartz tidbit

I wasn't at the WWDC so this stuff maybe redundant and boring to you.

An interesting new development in Quartz can be noticed by opening the Quartz Debug application in your Tiger Development Performance Tools application folder. Check out the option at the bottom of the main window, which is by default disabled. I think its easy to guess what this does.

July 22, 2004

Fun with Quartz Composer

Here is my first little demo hacked together using Quartz Composer: Mulle-RSS-Demo.qcp. Obviously not very original but yet kinda nice. Whoever did Quartz Composer, thanks a lot. Its a lot of fun. Unfortunately you can't use .qcp's as screensavers yet ? Or ?

The file is so small I am not quite sure, that the texture is embedded. If not please substitute it with the picture on the right side in Bitmap with File, the blue box. mulle-mobile-logo-burn2

As to the objc_msgSend, keep the ideas coming. Next week hopefully I will be able to present a result within the legal confines...

July 23, 2004

Bochum Total

Because of a little local event that happens here yearly, there won't be many updates until next week. Bochum Total is four days of live music for free and plenty of beer .. for money :) All this in the center of Bochum, which I call my hometown, although technically I reside in Witten.

Schmöpf!

July 26, 2004

More Fun with Quartz Composer

Quartz Composer is a lot of fun. Tonight I did a little ST-Demo look alike with it. On my G5 it runs with 13 fps in full resolution, so it might be a bit overpowering for most machines. So download Mulle Zoomer give it a try and throw it away. It's nice, but it's not that special...

Next up, that objc_msgSend thing revealed, as much as possible under NDA.

Check out Pol-Online.net and have a look at Pixelshox Studio. This is a great application to create interactive visuals, which has been discontinued... Thanks to Stephane Sudre for this tip.

objc_msgSend, the strange code revealed

I can't take much credit for this. The reason d'etre for the new objc_msgSend code was discovered by Dietmar Planitzer.

Because of the NDA requirement, I can't spell the solution out, but people with access to Tiger will be able to find this hidden feature. Also it's more fun this way. Here goes:

First look at Foundation, you should have a bash shell for the copy/pasting of this stuff:

otool -L /System/Library/Frameworks/Foundation.framework/Foundation | 
tail -3 | 
head -1 | 
awk '{ print $1 }' 
just notice that it's there. You don't need to do anything with it.
Now we extract a new compiler option from the libc library, which helpfully provides it:
NEWFLAG=`strings /usr/lib/libobjc.dylib | 
grep fobjc | 
awk '{ print $6 }' | 
cut -d , -f 1`
echo "NEWFLAG=$NEWFLAG"
Now make yourself a small test file:
cat > x.m << EOF
#import <Foundation/Foundation.h>

main()
{
   NSObject   *p;

   printf( "retain: %lx (%lX %s)\n",      
         (long) [NSObject instanceMethodForSelector:@selector( retain)],      
         (long) @selector( retain),
         (long) @selector( retain));
   printf( "autorelease: %lx (%lX %s)\n", 
        (long) [NSObject instanceMethodForSelector:@selector( autorelease)], 
        (long) @selector( autorelease),
        (char *) @selector( autorelease));
   printf( "release: %lx (%lX %s)\n",     
        (long) [NSObject instanceMethodForSelector:@selector( release)],     
        (long)  @selector( release),
        (char *) @selector( release));
}
EOF
compile and run it.
gcc -o x1 x.m -framework Foundation ; ./x1
There shouldn't be anything unexpected about the output. Now lets use the new compiler option
gcc $NEWFLAG -g -o x2 x.m -framework Foundation ; ./x2
Foundation should print out a dead give away in the start, but also look at the other values that are output.

Finally to round it off, examine with gdb the instructions of interest:

cat > gdb.batch << EOF
set prompt 
fb objc_msgSend
run
x/3i \$pc+4
quit
EOF

( cat gdb.batch | gdb -q x2 | tail -3) 2> /dev/null
Ok you need to know a little PPC assembler, but it shouldn't be too difficult to understand what an XOR together with a compare do.
Hint: $r4 is usually the selector address, and r11 is a scratch register.

July 29, 2004

Work

Just doing work for pay. Nothing to write about.

About July 2004

This page contains all entries posted to Nat!'s Web Journal in July 2004. They are listed from oldest to newest.

June 2004 is the previous archive.

August 2004 is the next archive.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.34