The most Important things to Know in Xcode2

There are a few things are are *SOOO* subtle in Xcode. You need to know them of you will hate Xcode2. Thanks to my buddy Jeff Kahn and some good IM – I learned these tricks. Each thing easily has wasted several hours to a half day for me. But once you know them Xcode2 becomes more tolerable.
I am having fun with Objective C. I like the message pattern. It is fun to send messages to things. I worry a *lot* about memory leaks though.
On to the critical bits.

Continue reading

How does one Set the delegate value for an NSOutlineView in Interface Builder in Xcode 2

Sometimes these implicit interfaces are just too obtuse. I wasted a DAY figuring this out.
I needed to mark my class (SakaiDesktop) as a delegate for a NSOutlineView control on my window. I knew that it had something to do with dragging. The last step is what is missing.
Place Mouse over the Outline Control on the Window
Control-Drag from the Window to the instance of SakaiDesktop and release
The Inspector will switch to Outlets (this is what kept confusing me)
Switch *back* to Actions in the Inspector – delegate and datasource will be there – click on the row for delegate and the instance willbe the designated delegate.
Funny how this did not work:
[myOutline setDelegate:self];
When I did it in init.
The problem I had was without being set to the delegate, the
– (void)outlineViewSelectionDidChange:(NSNotification *)notification
Notifications were not being delivered.
If the people who built NIB builder just made it so that picking a delegate used a drop down list instead of this multi-click gymnastics, I would be much happier.

Wrestling With Google Video

So far I have had trouble with Google Video meeting their technical requirements. This does NOT work:
Any form of Quicktime MP4 export does not work – I think that this is because Google demands MP3 audio and Apple only supports AAC audio.
So my next try is to use Pinnacle on the PC – I have tried both MPEG-1 Video and MPEG-2 Video. The audio is MP2 rather than MP3 – we shall see if it cracks the Google video viability filter.
I had to upgrade my Pinnacle 9.1 to get the MPEG-2 encoder.
If MPEG-2 works – that could be really cool.

UCB Meeting Notes

OOB Course Specific Roles Student/Instructor/TA – Form archetypes for other roles can be formed
Enrollment status – What is is – Is a a string sufficient?
o What do we do with manually added sttudents?
o Course Site level and section level
o Status of student and status of course
o Restricting Student membership from more than one course section – granularity and how to flag
Prohibiting student in cross-listed course from joining course without cross-listed membership – Can a section parent be another section?
Different types of roles – Can’t all be OOTB – Fine grained permissions rather than roles. Applications =roes Framework = Permissions. Course Sites .vs. project sites. Multiple roles within Applications (Discussion Forum). Need to define metadata associated with roles for purpose of defining them in sections. Combine roles. Restrict roles.
System Admin Requirements –
Surfacing configuration Settings in Sakai – like user setting FERPA.

UNIT Testing In Sakai

Well I fooled with Unit Testing in Sakai for a few hours and kind of came to a dead end. It was pretty fun and the basic stuff worked. My problem is that I just don’t know where to stop when creating mock versions of stuff. I looked at unit tests in the gradebook and common and there is not much interaction witht he rest of Sakai – I want to create unit tests that can interact with the rest of Sakai. But that means firing up components somehow (or mocking that up), firing up component manager (or mocking that up) etc etc. The problem is that with the structure of unit tests it seems that everyone who writes a unit test is responsible for mocking up the entire rest of the system. This is icky when dealing with a system as large as Sakai with a goal of a rich framework that *everything* depends on. So we will need to develop a way to make unit testing easier. Someone other than me will need to figure this out.

But here are my notes. Thanks to Josh and Lance for their examples.

Continue reading

Sakai Developer QuickStart

The big picture/outline:

http://cvs.sakaiproject.org/release/2.0.1/SourceInstallGuide.html

The attached script is the “magic developer bootstrap thing” – when it runs – you are in great shape.

Pre-requisites

SVN for Mac:

http://metissian.com/projects/macosx/subversion/

Maven

http://maven.apache.org/start/install.html

Add this to your .bashrc_login (or equivalent)

JAVA_OPTS='-server -Xms512m -Xmx512m -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps'; export JAVA_OPTS;

Continue reading