QuickSilver Now Open Source
QuickSilver is now open source! Check it out on Google Code..
Filed under: code code, lifehacking, osx |
0 Comments
Tagged: apps , cocoa , opensource , QuickSilver
QuickSilver is now open source! Check it out on Google Code..
Filed under: code code, lifehacking, osx |
0 Comments
Tagged: apps , cocoa , opensource , QuickSilver
A while back I posted a perl script that would update your Twitter status whenever you changed your iChat status message. Unfortunately, you had to configure launchd or cron to use it, which no one wanted to do. So I made an open-source Cocoa app that is easy to use! It’s called TikiTwit, and you can download it for free!

Download it here! This is a very early version, so please help me test it!
Filed under: code code, osx |
26 Comments
Tagged: cocoa , opensource
Let’s say you need to url-encode a string. No problem! You can call uri_escape in perl, or urlencode in php, or urlencode in python, or CGI.escape in ruby…
But now let’s say you are writing in Cocoa. ugh. Before you shell out to your favorite scripting language, check out CFURLCreateStringByAddingPercentEscapes() It doesn’t encode the RFC 2396/RFC 2732 reserved characters by default (other than ‘[' and ']‘), but you can specify additional characters to encode in the fourth argument. Use something like this:
It took me quite a while to figure this out… I found the NSString method stringByAddingPercentEscapesUsingEncoding, but that doesn’t escape the reserved characters.
(I have a suspicion that Cocoa developers are getting paid per letter…)
Filed under: code code, osx |
2 Comments
Tagged: cocoa

About a month ago I was going on about trying to use a newsreader to keep up with all the RSS flying around. I tried Google News Reader, hated it. I tried about 10 other RSS readers, both web based and client software (mac)… I felt like they all missed the point.
When I’m reading RSS, I actually don’t give a monkey’s tail about the RSS. RSS is stupid, unformatted, unstyled text with no soul and even less information. The way to consume RSS coming from websites is to read it in it’s richest form: from the website itself. Some client newsreaders go a short way down this path by giving you button to open the article in your web browser. But this is totally lame. I mean, a drunk dog could open up a web browser and sit there through the World Wide Wait and sift through the blink tags and advertisements and try to read the article.
I am happy to make the first public mention of TikiRobotReader, a Mac OS X application that (eventually) will handle RSS in a way that is not totally dain bramaged. TRR is Open Source, a Cocoa application, and a work in progress.
The basic idea is that for a given Article, TRR will download the link to the article’s web representation and convert it to PDF so the articles are all nice and shiny and ready for your skimming pleasure, no waiting required. Here is what I want TRR to be:
The current release is ugly as hell, but functional. At this point TRR is best enjoyed by running out of XCode so you can debug crashes and implement nifty features. I will be using it as my daily news reader in this fashion. But the nightly builds are functional and get the idea across. Feel free to contribute! Design ideas are helpful and code contributions are always a good thing. TikiRobotReader is meant to present RSS the way you, the discerning TikiRobot! blog reader, think is best. TRR will be a great place to implement all those Web 2.0/client features we want but can’t get anywhere else.
Link to TikiRobotReader nightly build
Link to TikiRobotReader SourceForge page
Filed under: all talk, code code, design, lifehacking, meta, osx, tiki lifestyle |
5 Comments
Tagged: apps , cocoa
Today I had the joy of trying to figure out a tough crashing bug somewhere deep inside a Cocoa / Core Data / KVC / KVO application. In case anyone else is running into this crash, it’s not your fault:
Ah, the infamous _NSKeyValueObservationInfoCreateByRemoving crash bug.
That’s shown up with a number of triggers, and is definitely not
reproducible, nor is your code at fault. I filed a bug on it, and Jim
Correia (who often posts on this list) has sent in a reproducible case.If you can figure out the interface item or binding that’s triggering it,
you may be able to work around it. In my case, I was able to have an object
traverse a relationship for me, instead of binding through the relationship,
and that stopped the crashing.
I was able to avoid this crash by overriding removeObserver:forKeyPath: to do nothing (especially not call NSObject’s implementation, which was doing the crashing).
I’m also getting a crash in -[NSOutlineView _sendDelegateWillDisplayCell:forColumn:row:] which I don’t understand. I’ve turned off all my NSOutlineView customizations….maybe I’m calling reloadData too often. If anyone has ideas, I’m all ears.
Link to a cocoa-dev message I wish I had seen about six hours ago
I love WebKit. It allows you to embed an HTML view anywhere in your app. It’s an HTML view that behaves exactly like Safari because …. well, Safari uses WebKit. Having a fully functional HTML view is an important part of almost any modern application. Unfortunately though there are some bugs, some of them crashing bugs, especially if you use WebKit in a way that is outside the common path that Safari uses. And these bugs won’t be fixed for most users until Leopard ships next year.
Here is an example. I was debugging this for many hours. Somewhere a piece of the WebView is getting over-released and causing a crash. This type of bug is notoriously hard to analyze and fix. I thought it was in my code, but it turns out it was in WebKit.
2005-07-24 01:29:26.070 macbook[4264] *** Selector ‘release’ sent to dealloced instance 0×8faf1e0 of class WebHTMLView.
Break at ‘-[_NSZombie release]‘ to debug.
2005-07-24 01:29:26.086 macbook[4264] *** -[NSAutoreleasePool dealloc]: Exception ignored while releasing an object in an autorelease pool: *** Selector ‘release’ sent to dealloced instance 0×8faf1e0 of class WebHTMLView
So what can I do? A major feature of my application is downloading a load of web pages and converting them to PDF files. WebKit is a great way to do this. Well, really it’s the only way to do it. Except for the crashing part. So after giving up on fixing this over-release crash, I split out my html-to-pdf code into a separate, small command line program. It works great, and is just the thing for “defensive programming.” For example if some random web page I load has a plugin that crashes webkit, it will only crash my helper program, not the app itself. iChat uses a similar technique for video conferencing (look around for “vencoder”). My command line webkit program size is 68kb.
So to any other developers seeing this crash, or to anyone thinking about using WebKit as a data processing tool rather than a web browser: fork off a separate process. It will save you a lot of heartache and make your application crash much less.
Link to the WebKit Homepage
Update! … rajbot sez:
The great thing about WebKit being Open Sores is that you can embed the latest versions of the frameworks in your app, and set the right env variables to tell WebKit to use those instead, like the nightly Safari builds do..
That’s a good point. I might just do that. And that way I can just fix the bugs myself if I need to… yay! :-)
Filed under: code code, design, support |
5 Comments
Tagged: cocoa
This is a bug fix release for the clients, web site, and server, and we corrected 48 separate issues in the mac client alone. But true to form, the Mac team snuck in some awesome features for you:
Whew! Now if you don’t mind, I’ve got some camping to do :-) I’m psyched that when I come back from Utah I can just drag images from my SD card reader onto slide and have them up on the web…
Link to Slide homepage which has Download!!! links all over the place.
Filed under: code code, inspiration, osx |
3 Comments
Tagged: cocoa
New release of Slide Player for Mac! Many, many new features in this release including:
Check it out and let me know what you think. The chat feature is a lot of fun.
Link to Slide homepage.
Filed under: code code, inspiration, osx |
2 Comments
Tagged: cocoa
Just over a week ago, some folks at WebKit invited me to make my little web development tool, tixe, an official part of Webkit. I am super excited. That is just about the best compliment I could have imagined. So I jumped right in, and after furious coding (which actually amounts to embarassingly small amounts of code), I’m happy to say that the framework formerly known as tixe (and even formerly known as BionicDOM) is now part of the WebKit nightly builds. Plus, I’ve gotten the opportunity to work with a really tight group of smart people.
So, to celebrate, we’re having ice cream! Raj and I and anyone else we can round up will be at Maggie Mudd in Bernal (903 Cortland) tonight at 9. There’s internet access there, and if anyone will let me, I will try to show off the li’l WebKit hack that made it big. Join us!
Filed under: code code, osx, upcoming |
4 Comments
Tagged: cocoa
The framework formerly known as BionicDOM is now Tixe! Jim writes:
Tixe is a Mac OS X framework that brings the power of Cocoa bindings to Apple’s WebKit.
Access and edit document content, styles, node attributes, and markup… even bind Cocoa controls to JavaScript values. And it all runs live inside of Interface Builder.
If you use CSS in your life or want to check out the strange and wonderful world of Cocoa Bindings, you should definitely check this out.
Link to the latest release notes.
Filed under: code code |
2 Comments
Tagged: cocoa