Icon Composer in 10.5

December 2nd, 2007 by Karsten

I just had to create an icon and used the new Icon Composer for this. There’re some really great new features in the new version. Not only that it can create icons like the previous version, it also provides a VERY nice preview panel. You can preview your icon in any size from 1px to 512px on ANY background. It also provides the two default wallpapers so that one can immediately see how it looks on those.

Icon Composer Screenshot

Great improvements, especially all those little things that are of such a big help!

Karsten

Update on Xcode Templates

November 13th, 2007 by Karsten

Today I got a mail regarding Xcode Templates and it made me look into it again. I was surprised that Apple changed the way Xcode integrates into the system now. Until 10.5 everything was stored in /Library/, but as of 10.5 Xcode uses the folder /Developer/Library/. Everything related to Xcode is there (especially in the Xcode subfolder): the frameworks, plugins, templates… all of it. The plugins that were installed in 10.4 will have to be moved there I guess (got no time to try out if BSInspectors work yet).

So as of 10.5, install custom project templates in /Developer/Library/Xcode/Project Templates/ 🙂

A little bit on project management

November 6th, 2007 by Karsten

I just wanted to talk a bit about how I use to manage the projects I’m working on. I (ab)use Midnight Inbox for my project management. It may not be created for this task, but I’ve never really understood the whole GTD idea; maybe I should read the book, but I’m probably too busy for that 😉

Anyway, Inbox provides a REALLY great way to me to sort my stuff. I probably only use a small fraction of the app but for what I need it’s unbelievable reliable to me.

As you can see on the screenshots there’re several categories on the left like Collect, Process, Organize, etc. From all these I only use the organize category.

Inbox Categories

For each of my Projects I created a Item there and whenever I think of a new feature for some project I just add it there. When I finish a feature on the list i just check it and it’s grayed out but still there.

I started to put all the complete features into another item, named after each version that I published:

Inbox Screenshot

That’s really helpful when writing the change-list for sparkle and having such a bad memory like I do. 😉

I’m not sure if other people use the same sort of tool to manage their projects and I’m sure there’re tools that have more and better features, but I’m only working on my projects during the weekend so there can be quite a long break between the implementation of two features or even during one feature and Inbox was the simplest way that I found to help me keeping track of the work.

As of 10.5 there’s also a nice todo list in Mail.app which is really helpful, but I tried it and didn’t like it as much as Inbox for my project management. I only use Mail.app for my daily todo-lists now 🙂

Updates

November 6th, 2007 by Karsten

I just updated Camouflage and CuteClips. Both use a newer version of BSHotKey now. The new version should be on CodeBeach.org already. You may now specify a default hotkey when initializing the BSHotKeyManager. The code that is needed for this specification can be obtained by simply running the Test-Application that ships with BSHotKey. Just change the hotkey and see the message-send in the log-area of the window.

One of the new features of CuteClips is the integration of QuickLook in MacOS X 10.5. Thanks to Cocoa it’s possible to use the framework that is available only in 10.5 without linking to it. Linking the framework will cause your app to crash if the framework can’t be found (like in 10.4). But fortunately frameworks are just bundles with a bit of a different structure, but still they’re loadable code. That means you may just initialize a NSBundle with the path to the framework and then load the bundle. Simple, eh? 😉

Small Vacation

November 1st, 2007 by Karsten

Just a little status update from my side.

I’ll be at this years Macelodeon-Lan (a lan for mac-gamers here in germany) from today till Sunday, so don’t worry if you won’t receive an answer to your mails as fast as usual, I guess I’ll be offline there.

However, there’s a new version of Camouflage approaching, I just have to fix a small bug that happens in 10.5 when a screen is attached to the notebook.

I’m sure I’ll also have some time to work on CuteClips during the lan, so maybe there’s a new beta available next week as well 🙂

Have a nice weekend everyone

Karsten

Compiling Automator actions in Leopard for Tiger

October 31st, 2007 by Michele

Some of you may have read that part of Automator Programming Guide that reads:

An action compiled in Mac OS X v10.5 will not work in v10.4 due to binary incompatibility.

That is completely inaccurate. If you compile using the 10.4 SDK it will work in 10.4 without any problem (as long as you don’t use any new feature).As I couldn’t find much information about that (yet) I thought it would be useful to share my testing results with you.

NSFont fontNamed:@”Arial”

October 24th, 2007 by Karsten

Using fonts in a drawing method should be a pretty common thing. I use that in CuteClips for rendering the text of each clip. However, one should not believe that [NSFont fontNamed:(NSString*)aFontName] is sort of appropriate for using it there. This method is hell slow. If you’re going to draw some NSString instances with special attributes, you should really use caches for the font. The speedup is quite reasonable.

Oops it crashed again (BSCrashNotifier)

September 22nd, 2007 by Karsten

hey there,

there was a time, i think like 2 betas ago, where CuteClips was kinda instable. The current beta is rock solid compared to the previous one. The reason for this instability is that the preview if certain clips was implemented wrong. But it is hard to track bugs down when you can’t reproduce the crash.

What I needed was the data that CuteClips failed to process, so I needed a simple way to have people send me their data if CuteClips crashed. I created the BSJobList and the user was easily able to send me the crashlog and/or the clip-data.

That part works, people are sending me a lot of crash reports now. The downside (or upside) is that these crash reports are not current. That is, they are from crashes of previous versions. The problem that has arisen is that CuteClips thinks that it crashed, while maybe the whole system crashed. How should it know? it simply checks if it was quit properly.

So the obvious solution to track crashes, by setting some preference value to

YES

when your app quits is not the best idea. It is simple, and it’s working, but it has too many false positives.

I came up with another approach… instead of storing that we didn’t crash, lets do it the right way and store that we actually did crash.

I searched around a bit and soon found out that

signal()

should be the right point to start working. I tried to add my own signal handler and it worked just fine, i was notified when the crash happend. The downside was that I didn’t see the crashlog anymore. The fix was kinda simple, you just remove the signal handler and raise the signal again.

So registering the signal handler is done with:

	signal(SIGBUS,crashHandler);
	signal(SIGSEGV,crashHandler);

and the crashHandler looks like this:

void crashHandler(int num)
{
	printf("we just crashed with signal: %i",num);
	// reset the old signal handler
	signal(num,0);
	raise(num);
}	

yup, it’s that simple… and to make things even better, I created a bundle from it and uploaded it to Codebeach, so that you can just add the bundle to your application and you’re all set. The usage is fairly simple, just use this code:

NSBundle* bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"BSCrashNotifier" ofType:@"bundle"]];
Class crashNotifierClass = [bundle principalClass];
if (crashNotifierClass)
{
	[crashNotifierClass onCrashSend:@selector(weCrashed:) to:self];
}
else
{
	NSLog(@"couldn't load bundle");
}

and:

- (void)weCrashed:(int)signalNumber
{
	NSLog(@"we crashed: %i",signalNumber);
}

[BSCrashNotifier on CodeBeach.org]

Have fun
Karsten

p.s. I just wrote this post in MarsEdit, nice tool, works great

The effect of education on the software market

September 16th, 2007 by Michele

This entire rant is based on the situation of computer education in Italy, I’d love to hear what it is like in your country.

So, computers are part of our everyday life (really? is that true for everyone?), so maybe we better teach something about it in school! It goes like this, you take the little child or even adult, put them front of a computer and teach them how to write letters, make spreadsheet and if they are lucky databases and some programming.

Little details: Computers will have Microsoft Windows installed, the other task will be accomplished with Microsoft Office, Microsoft Access and Microsoft Visual Basic.

Other little details: Nothing will be taught at all! The students will only be trained on the basics of using this particular software products (teaching about databases and programming this way is particularly freaky and damaging to the students) and usually a different setup will scare the students to hell.

My personal experience is fresh, 2 years ago I still went to high school and I was in a school which claimed to have economic/programming orientation.
The first 2 years we were taught the fine art of creating invoices with Microsoft Excel, then the fun came. 3rd/4th/5th years were about programming and db (along with some more spreadsheet, for those who were not trained enough yet).

At first it was all nice and fine, flow charts, concepts of software design and some Pascal. Then the beast came, Microsoft Visual Basic! Microsoft Visual Basic has 2 mayor problems: everything is unportable, is too clicky and draggy for such an unexperienced audience to understand anything.

So, no flow charts anymore, no design. The whole year was about dragging this here, changing the colour of widgets and so on. You now know why interface in the Windows world are sucky!

Then db came, and theory was pretty good (but too short for uneducated audience, my mates couldn’t understand much of it). Conceptual design, logical design… implementation! No SQL? You need no friggin’ SQL! You can just use some wizard from Microsoft Access! Again the problem is the same, what you learn cannot be applied elsewhere.

What are the effects on the market? You create bots that can only use certain software packages, you can bet what they’ll choose when they are purchasing their own system.
The software market is already one of the least fair and balanced, and influencing so strongly the purchasing decisions of the current generation and those to come is not going to help.
I’m sure some companies would pay to have such an unfair, nation-wide advantage! Uh wait a second..nah that cannot be it!

So, what could be done about it? Well abolish this kind of training! Have you ever been taught at school how to wire your house or how to repair a TV set? Why should you be trained how to make an invoice with a particular software package?Any other solution will end up favouring someone in the end (open source groups making no exception).

Information Technology can do much for education however! Schools can set up websites (universally accessible) to lookup for informations, maybe download lessons or read communications that you may miss otherwise.
Every school may have some browser-kiosk with easy access to wikipedia for students, maybe also to assist the teacher in his or her lessons.

CuteClips3 beta4

August 28th, 2007 by Karsten

I just released CuteClips3 beta4. The new version again adds stability and fixes bugs. The most important part however, is that the price has been lowered to $10 for as long as CuteClips3 is still in beta.

Another thing that I wanted to say: C4 was a great conference! Wolf did a great job organizing everything, so thanks a lot for this! Special thanks goes out to Ben Gottlieb!!

And yet another thing… today is the 28. and as Michele said, this is the day he said he’s going to be back from vacation. But as Greece is currently heavily on fire, I don’t know if he’s experiencing some sort of delay, but I really hope he’s fine.

Karsten