
15 Most Recent
More...
|
Blog Topics
There are four RSS feeds available for subsections of this blog:
News Announcements
Downtime on Friday The Zathras.de server (and my associated servers, i.e. the Masters of the Void tutorial) will probably be down for an hour or so on Friday for maintenance work at the provider. There's no need to worry, we plan to come back :-)
|
ValueConverter 1.2 I just released version 1.2 of my little programmer's tool for converting between various data types, ValueConverter.
(...)
|
CocoaHeads Muenchen diese Woche Diese Woche ist wieder CocoaHeads München, am Donnerstag, 8.10.2009 um 20:00 im Park Café.
(...)
|
Look and Feel Podcast launched You may have noticed that it's been so nice and quiet. (...)
|
UKSound and UKSystemSound Hi folks,
(...)
|
Programming
Uli's source code is on Github! So, if any of you are thinking of using my source code, I recommend you head over to my Github page:
(...)
|
So. Git. Playing around with the git version control system a bit today. I'm using the GitX GUI right now, which essentially lets you do a bit of merging, committing and viewing the commit log of a local working copy (with pretty branching indicators) and that's it. So, you'll still need the Git Command line Tools for Mac.
(...)
|
Helpful Xcode User Scripts One of the more annoying tasks when writing Cocoa code is defining symbolic constants for all those keys when doing key-value coding. I've already posted my trick for getting auto-validated key-value-observing constants, but there are constants that aren't accessors. Does lazy Uli have a trick for these as well?
(...)
|
Debugging Assembler on Mac OS X The thing a programmer probably does most is, unsurprisingly, debugging. Not that programmers necessarily love debugging, but if you don't have a high pain tolerance for debugging, you probably don't want to pursue a career in programming. On the other hand, if you like the challenge of the bug hunt, you should try getting into this biz. Or into exterminating. Whatever makes you happy, man.
(...)
|
Double click is a shortcut John Gruber mentioned in passing that people are confused about when to double-click and when not to. It's true, but that doesn't just apply to users. I've seen many application developers not knowing (or simply not caring) about when to use a double-click, and when not to.
(...)
|
Usability
Hacking the Press - A point for usability in press kits I once saw Adam Engst, of TidBITS fame, hold a talk called "Hacking the Press" at the Advanced Developers' Hands-on Conference (the first successor to MacHack). It was a great introduction to how the press works, told with the average programmer in mind, translating the life of a journalist into words we geeks can understand. I don't remember much of it in concrete details, but whenever the topic of press releases comes up, I realize that I know much more about this stuff than by all means I should, so I guess Adam managed to insinuate himself into my brain quite well.
(...)
|
Double click is a shortcut John Gruber mentioned in passing that people are confused about when to double-click and when not to. It's true, but that doesn't just apply to users. I've seen many application developers not knowing (or simply not caring) about when to use a double-click, and when not to.
(...)
|
The Sinus Curve of Life Certain events in life happen in circles. I think I got this piece of wisdom from my dad, back when I was a kid, and I keep seeing how true it is. The two examples I remember him giving me on different occasions were the recommended way of brushing your teeth and the progression from single-purpose power tools to integrated ones and back.
(...)
|
Look and Feel Podcast launched You may have noticed that it's been so nice and quiet. (...)
|
Why I don't want to be Delicious - Beyond the Unboxing Experience Ages ago, most blogs I read were abuzz with talk about "the delicious generation". There was talk about "writing your own fucking HIG", about "steak versus sizzle", and many other beautiful and colourful phrases summarizing why and what the "Delicious" group of applications was (supposed to be).
(...)
|
Reviews
Review: G. I. Joe: The Rise of Cobra G. I. Joe was a toy line from Hasbro with associated animated series in the 80ies that is virtually unknown here in Germany. The toys and a few movies were briefly released under the toy line's international name "Action Force" here, in Switzerland and a few other countries, but never really caught on. I used to watch it on an English cable channel as a kid. (...)
|
The Screaming Narwhal has Launched
(...)
|
Great movies and TV shows I just read a top ten list of movies and realized I hadn't done reviews in a while. Two of the TV shows I reviewed last time have been canceled in the meantime: Blood Ties and Moonlight. While Moonlight got criticized by me for its derivative and pretentious nature, it was derivative of the right shows, and got an order for four more episodes after the strike, so I'd thought it might stay and at least give us a base level of vampire TV shows for the time being.
(...)
|
Blood Ties, EFC and other TV fare Since my last proper review blog posting, I've seen a bunch of stuff, so I thought I'd give you a short rundown. I just don't have enough time to write proper reviews of each and every one of them.
Blood Ties
(...)
|
Review: The Crow (Comic Book) A while ago, I ordered the "The Crow" comic book. This is the material that inspired several great movies, as well as a TV show.
(...)
|
Fun Stuff
Very funny, Apple... Very funny, Apple:
(gdb) po anInvocation
Some day, NSInvocation will have a useful debug description
|
Adding dates to the RSS feeds Some newsreaders and aggregators out there apparently can't cope with feeds that contain no dates. Since the feeds on zathras.de fall under that heading, I've finally bit the bullet and changed my site to be more in line with their expectations. While I was at it, I also changed the RSS feeds to be full-text feeds instead of the short summaries they were before.
(...)
|
How Mac OS X saves disk names... Okay, so to reproduce a bug, I had to replace Helvetica with another font. My friend Flo grabbed a font with a name of the same length and just did a search-and-replace, and I dropped that in ~/Library/Fonts and I started testing.
(...)
|
My Photoshop ate Opera!
(...)
|
Shouldn't that be an apple?
Hint for those who aren't Swiss: Look for Schiller plays.
|
Laws of Programming
Adding dates to the RSS feeds Some newsreaders and aggregators out there apparently can't cope with feeds that contain no dates. Since the feeds on zathras.de fall under that heading, I've finally bit the bullet and changed my site to be more in line with their expectations. While I was at it, I also changed the RSS feeds to be full-text feeds instead of the short summaries they were before.
(...)
|
Uli's 9:01 PM Law When your compiler balks at you:
SUUtilities.m:21: warning: no previous prototype for 'SUHostAppName'
but you have a prototype in the header that looks like this:
NSString *SUHostAppName();
You nit are writing C++ code in C again. C requires a void to indicate empty parameter lists, otherwise your prototype will be considered being an empty K&R-style parameter list and will effectively be wasted characters. Change it to:
NSString *SUHostAppName( void );
and everything will be fine.
|
Uli's 11:51 AM Law If the GCC C++ compiler balks at you about
error: insufficient contextual information to determine type
You nit probably wrote a line like:
myVar = myView.GetBounds.size.width;
You can't use a function as a struct, so add the missing brackets to complete GetBounds() already!
|
Uli's 11:06 PM Law If you get weird crashes that look suspiciously like some other Cocoa class (that should really be holding on to an object of your class) is releasing your object prematurely, and thus an access to one of your instance variables causes a crash because that's already been freed, check what protocols your class's superclass conforms to. Chances are, it conforms to NSCopying, NSMutableCopying or NSCoding and you silly sleepwalker forgot to override copyWithZone: or mutableCopyWithZone:.
(...)
|
Uli's 10:23 AM Law When the compiler gives you an error message like:
2007-08-12 09:57:42.893 MyApp[2088] *** +[MyAppView setArgumentOne:]: selector not recognized
And you know that your objects respond to that message, you dork overlooked the "+" at the start. You moron, you are calling an instance method on the class! If you got this object from an NSDictionary or NSArray, you dim-wit probably somewhere mistyped and stuffed the class into the collection, instead of the object.
(...)
|
|  |