It's up

I have the Drupal site running. I’m still having some trouble with the filestore module I’m using. It’s possible to upload files, but downloads seem to hang most of the time. I also don’t like that it stores files in the SQL database instead of as actual files, since 1and1 limits the database size. I’ll look at the file module instead or just write my own.

When I posted about the problem I was having yesterday, one of the Drupal developers emailed me about it and we exchanged several emails. He pointed out a work-around in the cvs repository for a server setting I wasn’t able to change. Drupal seems to be the most flexible & customizable system around. At first look, it seems to be primarily for blogs, but that’s not the case.

Crossing my fingers

I may have an interview with this company. It would mean moving to Pittsburgh. I’m pretty excited about it.

I’m now actively looking for a new job, since I’m afraid the company I work for now may cancel their Mac product. They’re concerned because it isn’t selling, despite the fact that they haven’t even put out a press release for it and you wouldn’t even know they have a Mac product from looking at their web site. They think if we have a Mac OS 9 version it will magically start selling, so that’s what I’m working on now.

Right now I’m willing to relocate anywhere if I can continue to do Mac development. There are no Mac programming jobs where I live now, so staying here isn’t an option.

Cool XCode feature

I just noticed a cool feature since updating to XCode 1.1. It now shows marks in the scroll bar of the code editor window where errors or warnings occurred.

It's not dead yet

It looks like I’ll be doing a Mac OS 9 product after all. Several months ago there was talk of a Mac OS 9 version of computrace since some schools were interested in it. The idea was shot down, but now it looks like there’s renewed interest. This is going to be LOTS of fun, porting a Mac OS X product back to 9 😉

A few cool things about Cocoa

I have several fields with date formatting in my application. Since I enabled natural language, you can enter something like ‘today’ or ‘next year’ and it will be converted to a valid date. I didn’t even have to write any code to do that!

By simply writing methods such a getXXX and setXXX I was able to support key/value coding without any extra programming.

I would have to write lots of extra code to do any of those things in Carbon.

My first Cocoa application

I just wrote my first real Cocoa application. I ended up using mostly ObjectiveC++ since I needed to use some pre-existing C++ classes for most of the functionality. Most of the code I wrote was for bridging the C++ & ObjectiveC code.

Microsoft Retires NetMeeting

Microsoft is retiring its six-year-old NetMeeting online conferencing application. Instead, the company will push Office Live Meeting, formerly known as PlaceWare, for online meetings. NetMeeting helped pioneer online conferencing when it was released in May 1996, before the advent of instant messaging and other services for real-time online communication. The software still ships as part of Windows and some of its features, such as whiteboarding and application-sharing, are used by the MSN Messenger and Windows Messenger IM applications.

(Meryl) [Lockergnome Bytes]

The application I was developing at Teaching Network (R.I.P) was based on NetMeeting. One of the nice things about NetMeeting was that it exposed its objects for use by other applications. We were able to build a whiteboard module with NetMeeting as the underlying communication medium. It would be nice if we could do the same with iChat.

Toolbox programming rule

Posted to comp.sys.mac.programmer.codewarrior:

With every CF function, there are two simple rules:
-If the function name includes “Create”, you should release the result
-If the function name includes “Get”, you should *not* release the result

RSS Reader in PHP

Here’s the bit of code I grabbed from PHP-Nuke with some modifications to display headlines from an RSS feed:

function headlines($url) {
	$fp = @fopen($url, "r");
	if ($fp) {
	    $string = "";
	    while(!feof($fp)) {
	    	$string .= chop(fgets($fp,300));
	    }
	    fclose($fp);
	    $items = explode("</item>",$string);
	    $content = "";
	    for ($i=0;$i<10;$i++) {
		$link = ereg_replace(".*<link>","",$items[$i]);
		$link = ereg_replace("</link>.*","",$link);
		$title = ereg_replace(".*<title>","",$items[$i]);
		$title = stripslashes(ereg_replace("</title>.*","",$title));
		if (strcmp($link,$title) AND $items[$i] != "") {
		    $content .= "<strong><big>·</big></strong><a href="$link" target="new">$title</a><br>\n";
		}
	    }
	}
	return $content;
}