2004-07-28»
notes on: subvert this! developing with subversion on mac os x»
Wow, it’s *really* crowded here. I couldn’t get into the discussion of Power Laws (now! with real stats!), so I’ve nipped into Brian Fitzpatrick‘s guide to using SVN with the MacOS X. I’ve missed the first few minutes, so let’s join Brian as he finishes explaining how Subversion kicks CVS’s HEAD in.
(Offstage: oof, ow, ugh.) … Binding surfaces is big with Subversion. Having a lot of ways to plug in your own code into a system is good (CVS just has a pipe). The Apache foundation are big on big binding surfaces for glue, because that’s how they felt Apache beat out Netscape server
Reasons why Subversion has better binding than CVS: Subversion is written in ANSI C, so it plays well with others. It uses SWIG for external language bindings, so instant Perl and Python APIs (Ruby and others not yet supported because nobody has stepped up to take the bat). Java support is via JNI.
Then there’s the API promise: between 1.0 – 1.XX the API will be binary compatible.
Subversion’s dependencies. There’s the Apache Portable Runtime and APR util. This gave us the capability to run on any platform that Apache runs on. The other dependency is the SWIG, the Apache server, and the Berkeley DB. Oh, and Neon – a client library for DAV operations.
That looks like a lot, but in fact the only one you really need is the APR and APR utils. The rest of the stuff is mainly for the DAV support. (In subversion 1.0, you needed berkeley database if you’re running a server, but the latest version has a backend that uses flatfiles. Good for NFS.)
Subversion has a bunch of libraries. libsvn_client – primary interface for client programs, libsvn_delta is the tree and diff routines (first non-GPL diff engine), libsvn_fs_base is a Berkeley database filesystem library, libsvn_fs_fs – the flat file equivalent. (Filesystem is just a way of describing the db storage; it’s not a real filesystem). Libsvn_ra is the repository access common utilities, and then libsvn_ra_dav, libsvn_ra_local, and libsvn_ra_svn — for DAV client-server communication, local communication, and SVN, subversion’s own client-server protocol (same as pserver in CVS).
Then there’s libsvn_repos, which is the high-level interface. There’s libsvn_subr, which is a misc subroutines. Libsvn_wc is the stuff to cope with SVN/ directories, the equivalent of the CVS directory in checked out copies.
Two Apache modules: mod_authz_svn, a special authorisation module, and mod_dav_svn which handles dav requests and converts them into subversion actions.
(Aside – there’s a SVN plugin for Tortoise CVS. And a Finder plugin, cool!)
Now Brian is going to build a SVN tool, using the Subversion libraries, Xcode, Interface Builder, PyObjC. I have a feeling I will be hand-wavily describing lots of GUI development now…
The subversion team has been converting CVS repositories into SVN for testing purposes. Brian’s working with the Apache 1.3 SVN repository for this demo, which he has locally. The mini app he’ll build will be a program that lets you drag and drop files and see log data on it.
Okay, lots of Interface Builder widgety goodness. He’s using a Filewell palette third-party widget, which I think is this filewell.
More Interface Builder linking of outlets and actions to a controller object. This is making me crave doing programming in Xcode.
Hah! Brian cheated by cutting and pasting a wdoge of PyObjC code! It’s pretty clean – there’s just an “import Logger” statement at the top to pull in the SVN Apache SWIG libraries. Works great.
Tools: SCPlugin, which is the aforementionedFinder plugin, just source code. Full-featured, has all the actions on a right-click button (I didn’t even know Finder had plugins). Eclipse supports subversion, and Xcode 2.0 will support subversion in the glorious Tiger future that Steve promises us all.
Comments Off on notes on: subvert this! developing with subversion on mac os x
a camper at camp smalltalk»
On my way to the first day proper of O’Reilly’s Open Source Conference. It seems much busier than last year: I guess something’s improving, whether it’s the economy or business interest in Open Source, or just a fading away of people’s reluctance to tempt terrorist ire by coming out of the woods and onto a plane..
I’ve been in Portland for a week or so now, hanging out as a U.N. Observer at Camp Smalltalk, which is like Camp X-Ray only with objects. Actually, it was a load of fun. Smalltalk has a strong community culture, which I think is one of the reasons that it’s produced such a disproportionately large amount of good practices and useful meta-programming techniques. That, and that when you kick up a Smalltalk session. you can do a “View Source” on the entire operating system’s code. I like Smalltalk.
I got to see Ward Cunningham slinging index cards, and Ralph “Gang of Four” Johnson hacking code. L. Peter Deutsch, virtual machine pioneer, was there. After years working on Ghostscript, he’s been tempted back to Smalltalk, and spent the week porting the Python bytecode compiler to output to the modern Smalltalk VM. He estimates he might be able to get a 10-50 speedup by doing that. If only I could have kidnapped him and dragged him to help out Dan Sugalski, due to be pied by the Pythonistas this week for failing (just!) to speed up Python by porting it to the new Perl6 VM. What a fine mongrel VM that would be.
Other interesting stuff: if you’re interested in new language constructs, you really should check F-Script, a Smalltalkic scripting language for the Mac. It’s strongly tied to the Objective C object model – a bit too tied, in fact, so like ObjC you can’t create your own new classes at runtime, just instantiate objects, which is a bit limiting in a scripting environment. The real magic of F-Script, though, is OOPLA, which is a deeply splendid merging of Smalltalk and APL. No, no, don’t run away – it’s good, even if you don’t know either language.
OOPLA is the syntactic sugar that let’s you send an array of messages to an object. Given that everything in Smalltalk is an object, that means you can turn most basic operations into iterations; which removes most of the need for loops. If you know basic Smalltalk syntax, check out Chapter 16-19 of the FScriptGuide.pdf. If you don’t know Smalltalk, and have a Mac, read the whole thing, and have a play around. It’s fun. (Somebody will now tell me that Ruby does all of these things. Must. Learn. Ruby.)
Other stuff: the Website to Croquet, Alan Kay’s next generation 3D desktop environment, is showing off some more screenshots. Looks like the Squeak-based software is going to see the light of day next month.
I also met James Foster, who is working on a badly-needly simplification of that whole appalling bug-tracking, task management software space. Just looking over his shoulder was fun; I can’t wait to see the final results.
Okay, now I’m typing in the middle of Tim O’Reilly’s keynote, which is distractingly good. I’m sure other people will blog it better, but if anyone was wondering, when O’Reilly showed that book sales almost exactly matched the relative cost of adwords in for those keywords, it was me who very loudly went “woah!”. Information wants to be smuggled out via leaky patterns.
Comments Off on a camper at camp smalltalk
2004-07-12»
linux user and developer»
Aha. So, I’ve been writing a column for Linux User and Developer, the UK Linux magazine (which also did a fairly well-regarded expo). It’s a fun gig. I haven’t received payment for the last three months, which sadly doesn’t appear to be that unusual in the publishing industry. But you know, why should that stop me having fun?
Some time last week, LinuxUser’s pages on the Live Publishing site disappeared. Uh-oh.
I’ve just called Live Publishing, and their receptionist has instructed any queries to be redirected to Alan Coleman at Unity. Unity “provides constructive advice and effective solutions to all insolvency-related problems”.
Uh-oh.
Can’t get through to speak to Alan yet. I see the expo wing of the company has merged with LinuxWorld. I suspect that was a bit of a one-sided merge.
The odd thing is that, rather naively, I thought that LinuxUser was a magazine being published by Live Publishing rather than a separate company that could hit the skids all on its own. The LinuxUser pages in the Google cache all say “copyright Live Publishing”. I wonder how long it has been this separate, glorious, but sadly a bit cash-strapped institution?
Discuss
Comments Off on linux user and developer
2004-07-11»
magnetic storage future history»
In December of 2002, I uploaded a screen-captured table showing IBM’s estimates for the cost of a terabyte over the next eight years. I couldn’t be bothered to convert it into HTML. Eighteen months on, Adrian Furby did just that. This shows there’s some “can I have some more”‘s law of the lazyweb or something, and that you should optimise for laziness and early public whining instead of planning ahead. I’ve added it to the page.
I just checked with NewEgg for prices, and with a $61 80GB harddrive, we’re four bucks short of right on target. We should be down to a sub-$500 terabyte some time next year.
Comments Off on magnetic storage future history
2004-07-01»
freeware, shareware and not-meant-to-be-eitherware»
I’m downloading the demo version of a repartitioning application. I can’t help thinking this is a bad idea. “You’re 30 days are up! Now re-repartioning your drive.”
You have to admire their business savvy though, releasing a MacOS partition resizer the day that Tiger hits the file-sharing networks.
Comments Off on freeware, shareware and not-meant-to-be-eitherware