Software

This is the software that I write in my spare time, so enjoy and please note that all these programs come with absolutely no warranty at all. Use and like them as you will, give credit where credit is due, but do not pester me if you believed in the "real men don't need backups" myth!

That said, I do of course try to be as careful as possible to make my software bullet proof, which for me includes writing a lot of unit tests. So rest fairly assured and have fun.

Creating NSNumbers from arbitrary values…

... without needing to care which constructor to use this time to get it right.

Well, I was offended by this just long enough, so I sat down and wrote a macro that allows this:

//  Use like this:
    id dict = [NSDictionary dictionary];
    NSNumber *ten = NMMakeNumber(10.0f);
    [dict setObject:ten forKey:@"numberOfFingers"];
    [dict setObject:NMMakeNumber(23) forKey:@"fnord"];
    [dict setObject:NMMakeNumber(YES) forKey:@"wantFries"];

This quite eases the pain of creating NSNumbers correctly for me, because it means I don't have to repeat the type of what I am working with quite as often.

Pretty  DRY. :)

Here's the code to a NSNumber category and a makro that makes this happen:

Café Wall Illusion Saver (was Skewed Lines Saver)

Screenshot of the SkewedLines Screensaver

Updated! Now with configurable animation speed and block size. (Though I still find the default most pleasing :) Oh, and I also fixed the buildscript so it now produces good zip files. Sorry for that on the first try.

As I watched the episode  Wie man sich täuschen kann of  Quarks und Co some days ago I saw this illusion briefly in the background. (Which has a very nice  Video Podcast - by the way)

They had this beautiful illusion - but in an animated form, which I have never seen before.

Well, after two hours, I had a screen-saver running and really like the results.

So, here you go too. :)

Fone2Phone

Fone2Phone in Action My first complete piece of work for  Nova Media. I did this after working there for about a month.

 Fone2Phone allows you to have a one stop solution to transferring everything from your cell phone to your macintosh. From there on you can either put it on your iPhone or iPod (Touch), just use it on your System or sync it to a different cell phone.

As far as the technology is concerned Fone2Phone is a subset of our more capable application  FoneLink which allows you to also have continous backups of the data on your phone, receive and send SMS and sync your data with the Address book and iCal.

do all this and more. Check it out!

Worktimer

The Worktimer in action! When I did my Diplom-Thesis (Masters-Thesis) I needed something to track how much time I spent on it each weak. Well, what better excuse than to play a bit with core-data and cocoa-bindings. :)

In the app you can add new times (the + button) which gets pre-filled to the current time, but you can always insert the current time with <Command-T>. You can also always adjust the previous entries by selecting it down in the backlog and adjusting its values.

Also note the neat Weekly summary available in the Window Menu (or via <Command-R>).

ScreenLight

Screenshot of the Software in Action Ever wondered how useful it could be to always have a Flashlight with you?

Well, stop wondering, because you have! That is, you do have a mobile phone with you that has a screen that is perfectly capable of displaying pure white at maximum brightness and is programmable in Java.

There you have it, a ScreenLight!

To install, just send the jar-file to your phone via Bluetooth filetransfer (or whatever method you prefer), after that the phone should ask you where you want to install the app (for me that is in "Games" or in "Applications"). Thats it!

Oblique Strategies

screenshot of the oblique strategies This app just displays one of the  Oblique Strategies from Brian Eno and Peter Schmidt in a way that I think is pretty. They themselves describe the Strategies as "One hundred worthwile dilemmas to think about". I did this app, because I think that the "dilemmas" are themselves a real nice work of art, and should be presented so that this work of art can be easily seen. (This app was inspired and is an  update to the first version of the Oblique Strategies for the Mac) Today I use  a Dashboard-Widget instead of my own software, still it is a nice play with the Cocoa-Graphics

Broken Alias

Screenshot of Broken Alias in Action This context-menu-entry fixes a bug in the Finder that doesn't show the Filename or Path to the original of a broken alias. (I consider it "install and forget") Sadly the method I used to get the alias Info even for the very old aliasses doesn't work anymore on Tiger (Intel) so this ContextualMenu-Entry will stay as it is.

Source Code

iTunes style progress-bar

korrigierter filename Just as an exercise I ripped the progress bar rendering code out of MPlayer and generalized it, fixing some 10 to 15 bugs in the process. Though I couldn't get it back into the MPlayer source (yet!) its already going into other software, most notably  Senuti. So if you need such a progressbar, have phun!

As I'm still gearing up on my graphics programming, there is still the unesthetic choice in there to use pictures for some of the interface elements. So, free after Wil Shipley thats a no no. :) If you (the reader) care and could send me a patch, that would be greatly appreciated.

Blocks in Objective C

screenshot of objective c blocks source code Sadly I had to discontinue this Project, as Apple disabled nested functions in its version of GCC, whiteout which this hack cannot be done anymore.

This is a pet-peeve of mine. Since I learned functional-programming at the University, I always liked to use higher order Programming. Then one day  Marcel Weiher got me startet on thinking that this should be possible in Objective-C too. Well - I finally got (almost) there. I do think that it's a shame that this feature wasn't embedded into the language in the first place, but at least this is a start. To get startet, please have a look at the header-file: MyBlock.h and the unit-tests in MyBlockTest.m. Sadly Apple disabled Nested Functions in their GCC with Tiger (for security reasons), so this nice hack doesn't work out of the box anymore.

Syntax Highlighter in Java

The java-highlighter in Action At a previous Job I had to do a Syntax-Highlighter. I didn't particularly want to do this, as Syntax-Highlighting is a solved problem, and reinventing the wheel is not my thing. However, I took it as a chance to try and do it as cleanly as possible - and even some years later I'm still pretty ok with the result. The nice thing about this Highlighter is, that you can use just a normal !JTextPane and setting its StyledDocument to one of the Subclasses of HighlightedDocument which you can get at through these factory methods.

For an example of how to use this, look at HighlightingTestGUI.java.