Cocoa Programming for Mac OS X
12 June 2008
in photos
tagged with
[book]
[cocoa]
[macos]
[programming]
Third Edition. Yay.
pyobjc Examples - HotKeyPython
06 February 2008
in links
tagged with
[cocoa]
[keyboardshortcut]
[pyobjc]
[python]
A pyobjc example showing how to register global hotkeys
http://svn.red-bean.com/pyobjc/trunk/pyobjc/pyobjc-framew...
A usable Shelf release
08 January 2008
in blog
tagged with
[cocoa]
[python]
[release]
[shelf]
[software]
Right, Shelf has now reached version 0.0.6 - download it (there are newer versions out now - get those). It’s good enough that I’m running it full time now. Thanks to Mark Fowler, it can now pull clues from Firefox, which is a relief. I’ve also added Address Book and iChat support, although the iChat stuff is a little hokey - it assumes you’re not using tabbed chats, and that you speak English. Sorry. The iChat AppleScript dictionary is lousy.
Musings
It’s been suggested that I could work out twitter feed and Flickr photostream URLs about people based on their name / nick / email. I’m currently shying away from deriving too many things about a person magically. For instance, I could work out (and cache, obviously) a Flickr username for a person from their email address. Quite apart from the horrible privacy implications of sending the email addresses of everyone you read mail from to Flickr, I just don’t like the approach. I’d much rather encourage a rich address book with lots of data in it. This has the side-effect that Shelf will also recognise my Flickr page as belonging to me.
DjangoKit
28 March 2007
in code
tagged with
[cocoa]
[django]
[macos]
[python]
DjangoKit is a framework that will take a Django application, and turn it into a stand-alone MacOS application with a local database and media files. It started as more of a thought experiment than an effort at producing a real application, but I have it working, and you can package perfectly usable stand-alone applications with it.
DjangoKit is currently hosted in a Google Code repository, so go there for downloads and source, or just get the svn tree directly at http://djangokit.googlecode.com/svn/trunk/.
Trawler
13 March 2007
in code
tagged with
[cocoa]
[python]
Trawler is a (currently internal) Mac GUI client for editing templates, tests, code and files on a Zimki server. It’ll be public Real Soon Now.
Update: Zimki is dead. Dead dead dead. So Trawler is about as much use as a chocolate teapot now. I guess I’ll leave the page here for posterity.
RubyObjC. A Ruby/Objective-C bridge.
07 January 2007
in links
tagged with
[bridge]
[cocoa]
[roby]
another ruby-cocoa bridge.
The Cocotron
22 December 2006
in links
tagged with
[cocoa]
[windows]
Wow. Clean-room reimplementation of cocoa for windows.
Using the iSight for Adium / iChat
22 November 2006
in blog
tagged with
[cocoa]
[hardware]
[python]
[release]
I have a lovely shiny office MacBook Pro sitting in front of me, and in the middle of the top of the screen is this little annoying black square. It’s an iSight camera, and it can always see me.
It’s annoying for two reasons. Firstly, it can always see me. There’s a little light to tell you that it’s on, but it’s perfectly capable of blipping on briefly without you noticing. But mostly it’s annoying because I hate the thought of such a high-tech piece of technology just going to waste up there.
I really have no real use for this thing at all - I don’t obsessively catalogue my book collection, I don’t hold frequent multi-person videoconference sessions, and I already have a camera. I’ve also seen enough PhotoBooth output to last me my ENTIRE LIFE. But merely having no good reason isn’t a good enough reason to stop me, so I came up with a use for it.
DuckCall is an application that runs in the background, and takes a picture of you every 30 seconds using the iSight. Then it’ll set this picture to be your iChat or Adium ‘status picture’ thing - the little picture of your head that other people see in their contact lists. Setting away messages is so web1.0 - when I’m not at my computer, you know it, because you can’t see me. It’ll also try to be smart - it won’t do anything if neither app is running, for instance.
Naturally, it’s not perfect. For the Adium stuff to work, you need to be using a recentish beta - the ones with the single buddy icon shared between services. And it has a nice little todo list, like all my projects.
The biggest thing wrong with it, though, is the Frankenstein nature of the thing. I write my crazy application prototypes in PyObjC because it’s very easy to get something working. But there are no Cocoa bindings for reading from the iSight (why??) so I shell out to an external tool and save a file from the iSight to disk. Then I use AppleScript to load the file from disk and set the icon of either of the IM apps that happen to be running (or both, I guess, if you’re weird). Using Python as the wrapper makes the app about 3 megabytes larger than it really should be. If someone wants to re-implement it in Objective C, that would be good.. :-)
Weirdy, I’m not sure if I like the philosophy of the app. I keep getting scared that it’ll take photos of me at bad times. Given my stated reluctance to publicise my life it’s odd that I even considered writing this thing. I comfort myself with the thought that no matter how stupid I look in this photo, it’ll be gone in 30 seconds, and most people will never see it…
Get it here and tell me what you think..
DuckCall
21 November 2006
in code
tagged with
[cocoa]
[ichat]
[python]
DuckCall is a trivial little utility that I wrote once I realised that I was getting a MacBook Pro, and it had a camera built into it. It updates your iChat or Adium (requires one of the 1.0 betas) status picture with a shot taken from the iSight evey 30 seconds.
Cocoa Dev Central: Building Easy Sheets
16 November 2006
in links
tagged with
[cocoa]
[programming]
[sheet]
sheets in cocoa. Because it’s not clear how to close them safely otherwise.
Flame 0.2.2
01 November 2006
in blog
tagged with
[cocoa]
[macos]
[python]
[release]
A very minor release of Flame - we were too aggressive in de-duping the service list. It’s possible to have more than one service with the same port an IP address, if they have different names. Thanks to Bruce Walker for the bug report.
CamelBones, an Objective-C/Perl bridge for Mac OS X & GNUStep - Release Notes - 1.0.0
11 July 2006
in links
tagged with
[cocoa]
[mac]
[perl]
[programming]
Camelbones 1.0. Congratulations to Sherm
http://camelbones.sourceforge.net/documentation/history/d...
FatBits: John Siracusa’s Journal: The garbage man cometh
06 May 2006
in links
tagged with
[cocoa]
[macos]
[objectivec]
On the possibility of garbage collection in MacOS. Having to do my own memory management always put me off Objective C, but frankly given the existence of high-level bindings like pyobj, I don’t see me ever using this.
Living Code: PySight Preview
24 October 2005
in links
tagged with
[cocoa]
[isight]
[mac]
[python]
Read images from the isight, with python
Blotter / Core Data
03 October 2005
in blog
tagged with
[cocoa]
[macos]
Wow, core data is shiny. James re-wrote (the core of) Blotter in 10 minutes using it, so after a bit of polish, I have a 0.9 release, written in pure ObjC/Core Data. Alas, you need 10.4 to run it, and XCode 2.1 to build it (an 800 meg download! ow) but that’s the cutting-edge future for you. Sigh.
Blotter
02 October 2005
in code
tagged with
[cocoa]
[macos]
A cocoa scratchpad for text-based notes storage.
Blotter is a scratchpad / notepad application I threw together so that I’d have somewhere to keep notes. It stores rich text, objects, etc, etc, still needs lots of features, but I use it as dogfood and quite like it. It requires Mac OS 10.4 - sorry.
Subversion
I develop in subversion. Check the source out here. The source requires XCode 2.1 to build (for versions > 0.9 - earlier versions are PyObjC based).
I suggest you use one of the releases, though.
Developing an iPhoto export plugin
10 August 2005
in links
tagged with
[cocoa]
[export]
[iphoto]
[mac]
[plugin]
[software]
Blotter 0.7
22 April 2005
in blog
tagged with
[cocoa]
[macos]
[python]
I discovered Cocoa bindings and verily, they are the greatest thing since sliced bread. Not that I’m very fond of sliced bread.
I’ve re-written Blotter from the ground up to take advantage of them - it’s much nicer and more reliable now, although I totally changed the back-end format, so anyone actually using it and wanting to upgrade is in for a shock. I don’t think anyone is, though. I mostly wrote it because I saw xPad and didn’t really want to pay for something that seemed so trivial..
Anyway, Blotter 0.7 release - it’s usable, although unhelpful the first time you start it. I use this app constantly, myself, so I like to think it’s reliable. I’ve certainly never lost data to it. (I’m doomed now, of course.)
Update (about an hour later)
Curses, 0.7.1, with some small fixes.
Flame 0.1
09 March 2005
in blog
tagged with
[cocoa]
[macos]
[python]
Finally, we have a public release of Flame. Getting this out the door has taken a while, but I’m very happy with it’s current state, so let’s see what the rest of the world thinks.. I have a project page here but the ‘real’ app page for linking is the husk.org one.
Cool apps and Cocoa
16 February 2005
in blog
tagged with
[cocoa]
[python]
I like this James Duncan Davidson article because it provides a lovely counterpoint to the ‘the mac is a much smaller market, so you’ll never make as much profit’:
“In a conversation with Rich last night, one point kept coming up: If he did his application for Windows, he would have to have a larger team - probably 5 or 10 developers instead of one. And a larger team would mean that he would need more start-up money and a whole host of other issues
”
Certainly I’m finding PyObjC and Cocoa such a ridiculously easy RAD tool that it’s almost easier to start a new project and play with some code than it is to think about it first. I nearly have a little library of useful controls I can throw at things, too - I have an iPhoto-like view that lets me put lots of scaling images into a scroll view, at which point I can write some fun photo-site clients. As usual, the main problem is focus…
London Perl Workshop talk
11 December 2004
in blog
tagged with
[cocoa]
[perl]
I gave a talk today at the London Perl Workshop, brilliantly organised by a shadowy cabal of mysterious figures. Every talk I saw was great, to the point that the inevitable clashes with other talks that I wanted to see were really annoying, but fortunately everything was filmed, so presumably there’ll be video of the talks I missed available at some point. Likewise, all the slides will be around at some point, but until then, my slides are here. Powerpoint, I’m afraid, it’s what the work laptop has, and 1.5 megs, because it’s full of pictures…
Blotter
24 November 2004
in blog
tagged with
[cocoa]
[macos]
[python]
[release]
PyObjC is very, very cool. Even not knowing python, I prefer using it over CamelBones, if only because the out-of-box experience is nicer. But a very compelling reason is that making standalone apps with it is soooo easy. Thus, I present Blotter 0.5, an experimental notepad application. It stores notes in a SQLite back-end DB, and gives you revision history, etc. It’s gonna be buggy, I wouldn’t use it for storing nuclear missile launch codes just yet, but it’s already dogfood, after very little development effort.
Oh, and scuse the nasty icon…
Flame
01 January 2000
in code
tagged with
[cocoa]
[macos]
[python]
Flame is another take on Rendezvous Browser - Paul and I decided that grouping by service wasn’t particularly useful, frankly - we’d rather group by person / machine, and see all the machines on the local network, and the services that they were advertising.
Toybox
01 January 2000
in code
tagged with
[cocoa]
[macos]
[perl]
[webkit]
ToyBox is my web browser. It’s written in perl, using Camelbones. At one point it was one of the smallest Camelbones apps in the world, but now the graphics for the buttons have bulked it up a bit.. Annoyingly, it’s not pure perl - I needed some ObjC to handle drag and drop and things - with the 0.3 CamelBones, this should be avoidable, I really should update it.
