talblog
http://talblog.info/
[[Weblog allocWithZone:[self zone]] init]2007-05-17T15:06:31-08:00Look, Ma. No framework!
http://talblog.info/archives/2007/05/look_ma_no_fram.html
When I first sat down to set up the project files for Sandvox, I knew that we wanted to support plugins. These are little bundles of Cocoa code and related resources that can be loaded into an application at runtime to extend its funcationality. A lot of Cocoa apps work this way. Watson did. So do Mail, iPhoto, iDVD, even Calculator. If an app keeps its plugins in the standard location (Contents/PlugIns) you can even browse them and activate/deactivate, add or remove them via Finder. If, in Finder, you do Get Info on Sandvox you'll see the list of plugins that are included in the .app. Though you can activate and deactive them using Finder, I don't recommend doing it, for any app. Apple seems to have implemented half of a good idea here, but with no documentation or expectation as to how it should be used. Activating/deactivating plugins this way may have unfortunate results. So don't do it. But it's still an interesting way to browse and see if an app supports plugins, at least in the standard way. Nevertheless, what's important is that plugins allow you to modularize and build out an application's functionality over time, including after the bulk of your app has already shipped. Not only can you extend your application with new plugins, but so can third parties. That's a big bonus and well worth supporting in your application if it makes sense. The typical way that you encourage plugin development for your app is to move the general...Codettalbot2007-05-17T15:06:31-08:00Fail Faster
http://talblog.info/archives/2007/05/fail_faster.html
The default Cocoa Application project in Xcode includes a target with a set of build phases. Here's what it looks like: Notice that Copy Bundle Resources happens before Compile Sources and Link Binary With Libraries. This means that every time you build, before the compiler or the linker see anything, Xcode spends time copying things like nib files and images into the built product. If you have a large app, this list of resources to copy can be quite long. Everytime you make a source change and hit command-Y to compile and relaunch your app, it has to run through Copy Bundle Resources again, and then it tries to compile. That's fine. It needs to do that. What's the big deal? The big deal is that if you're writing a bunch of new code or manually refactoring some older code and you have syntax errors, say, a missing semicolon, a typo in a class name, or a missing #import, the compiler is going to complain and halt your build. If you forget to add a reference to a framework or a library, the linker will complain and halt your build. But it's going to halt your build after copying bundle resources, things that the compiler and linker pretty much don't care about. In Sandvox's case, there are nearly 200 different resources to copy during a build, and that's not even counting the plugins and frameworks that ship with the app. Doing this over and over again during the course of a day adds up....Codettalbot2007-05-16T16:25:06-08:00Sundown
http://talblog.info/archives/2007/01/sundown.html
My friend, and former Lighthouse/Sun colleague, Paul Kim writes about some ancient history that more or less stopped Java from ever becoming a real application development platform. Please read his entry before you read mine. (It’s new information that actually isn’t in Wikipedia.) I agree with Paul that it did not have to turn out that way. Paul invited me to tell the tale of the demise of OpenStep within Sun. I actually think I’m not going to attempt that. There are others in the world who invested far more of their lives in getting OpenStep up and running on Solaris. The fourth paragraph of the Wikipedia entry seems reasonably accurate as to what all was involved. It was no mean feat: the fact that OpenStep ran at all on Solaris, in X Windows no less, let alone as well as it did, still amazes me to this day. That work was done before I even got to Sun and my hat is still off to that team. Those guys knew X and CORBA and the bowels of Solaris like I hope I never have to know X or CORBA or the bowels of Solaris. Nevertheless, no matter how good OpenStep could have gotten at Sun, it was not going to stop the Java juggernaut. It did stop CDE, though, at least for a little while, and for that we should all be grateful. But in ‘96 Java was everything to Sun. Limitless potential—since hardly anything had been developed—and everyone wanted in on it....Technogeekttalbot2007-01-23T21:51:48-08:00Thanks Mickey
http://talblog.info/archives/2006/09/whither_mickey.html
I originally wrote this at the very end of last year, but apparently never published it. So, old topic. But I liked the post anyway, so here it is... No, this isn't about Disney. It's about Michael Sprague, my high school computer science teacher. I no longer see him on the school's website. He'd only be about 50 now. A little young to retire. But maybe not. I hope he found something better to do than teach teenagers about computers, but he was pretty great at that. So actually I hope he's still doing it. What brought "Mr. Sprague" to mind was Joel's latest [ed. not so latest anymore] essay, The Perils of JavaSchools, and Dori's followup, You think you're old? recounting her computer science education back in the day, as the kids say. Dori nicely summarizes Joel's argument: "[In] the old days, programmers went to college, learned C, and got a good understanding of what was going on deep down internally. Nowadays, these newfangled programmers are only learning Java, and consequently, they don't know anything about recursion or pointers. Schools should teach Scheme and C, and the students will be the better for it." And that got me thinking. Pointers and recursion. Yeah, he's right. Sprague had us doing those in PDP-11/70 assembler and Pascal (for the AP test the following year) and some pseudo-language of his own invention when I was a junior in high school. I mean, like, for months it was dereference this, parse-this-expression-into-a-tree that. And after a while our...Technogeekttalbot2006-09-25T22:17:38-08:00Pom Pom Pom Pom
http://talblog.info/archives/2006/03/pom_pom_pom_pom.html
Last week Dan and I had the pleasure of being interviewed by Pom Pom Pom Pom, an international podcast about all things Apple. We chatted for about an hour on Karelia, Sandvox, Apple, and the competition. It was a very enjoyable experience. Many thanks to StuFF mc for the opportunity! You can either listen to Episode 5 directly or subscribe to the Pomcast in iTunes....Sandvoxttalbot2006-03-13T13:49:15-08:00CocoaHeads LA Meeting Tonight
http://talblog.info/archives/2006/03/cocoaheads_la_m_1.html
Just a reminder that the third meeting of CocoaHeads LA (Santa Monica) will be tonight (Thursday) night at 7:00 PM. We'll again be hosted by Steve Gehrman at the fabulous CocoaTech offices at 1238 7th Street, Santa Monica, between Wilshire and Arizona. We may move the venue later in the evening to one of the local spots for food, drinks, or dessert. We're still in our nascent stages, so now's the perfect time to join the group. (It's free). We'll be having our general Cocoa roundtable, show-and-tell, and discussion about Cocoa debugging techniques, including a demo of OmniObjectMeter. CocoaHeads LA. See you there!...Technogeekttalbot2006-03-09T10:52:04-08:00On Mac minis and putty knives
http://talblog.info/archives/2006/03/on_mac_minis_an.html
With the recent release of the Intel-based Mac minis, there's once again a slew of postings/articles about how to properly open a Mac mini to add RAM, replace a hard drive, or (now) swap out the processor. Most articles tell you to use a putty knife with the blade's edge sanded down to be a little thinner. This allows you to pry the case open a little bit so you can insert the knife and start popping some of the latches that hold the mini's lid on. However, there appears to be a significant number of people who end up marring the mini's case when the putty knife isn't thin enough to slip in easily. (This apparently led to the invention of the "wire method" which I am nowhere near coordinated enough to figure out.) One of Karelia's main servers is a (PPC) mini -- the other is a G4 Cube -- and it works like a champ. When I needed to open the case to upgrade the RAM, I did not order the specially modded putty knife or fumble around with wires. You know what I used? A kitchen spatula. I had three of them in the drawer. All of them were thinner than the putty knife I was going to have to sand down. I tried them all. Two of them were still too thick. One worked perfectly. In fact it worked so well, that I'm amazed that people still talk about putty knives. Not only was the spatula thin enough to...Technogeekttalbot2006-03-08T15:45:14-08:00Blood on the Tracks?
http://talblog.info/archives/2006/01/blood_on_the_tr.html
Dan posted a pretty good account of Karelia's history on the Sandvox Weblog this morning. It's true, we first started kicking around the ideas behind Sandvox about three and half years ago. It was about another year and half until I was able to sign on full-time and we really didn't hit full speed until after the 2004 elections. It's been a long road, but a rewarding one. Both Dan and I love writing Cocoa apps. It's what we want to do. Now it seems, if the iWeb rumors are true, the quesion is whether we'll be able to... I sure hope so, and I'm guardedly optimistic. You see, that's me up on the handcar. I'm the one with the really tense shoulders. See ya Monday!...Sandvoxttalbot2006-01-06T10:18:01-08:00Xcode 2.2 = distcc love
http://talblog.info/archives/2005/11/xcode_22_distcc.html
Ever since Xcode incorporated distributed builds using distcc (a year ago? two?), I've been having this fantasy. It's the one where I sit downstairs in the comfy chair, working away on my (now aging) TiBook, while other computers on the network, oh, say, the Dual G5 upstairs in the office, grind away on all the code I'm writing downstairs while sipping tea and watching The Newshour. For whatever reason, and even after extensive firewall futzing and other things, I could just never get the distcc processes to talk across machines. At least not in any scale of time that made farming out the compilation worthwhile. To my joy, whatever changed with distcc in the latest Xcode 2.2 (not developer preview) fixed all the problems. It just works. (And things did change: the interface in Xcode preferences is quite different.) The machines see each other over Bonjour and the right things happen when compiling.* Now for the payoff: a full compile of Sandvox, not including WebKit, takes roughly 315 seconds on the TiBook, standalone. That same compile, farming the jobs out to the G5 upstairs, takes about 220 seconds, for a savings of over 30%! Plus, rather than having the CPU pegged at 100% during compilation, with the TiBook's fan going crazy, the load now bounces between 4 and 60%, making the TiBook quite useable for other things while Xcode is building. Now, how do we get distcc happening down at Peet's? (Thank you, Apple.) *Another big issue affecting this is network latency. The other...ttalbot2005-11-17T12:13:59-08:00Bounties for WebKit fixes
http://talblog.info/archives/2005/11/bounties_for_we.html
A Proposal for WebKit Programmers, belidat....ttalbot2005-11-15T17:54:53-08:00CocoaHeads LA Meeting Tomorrow Night
http://talblog.info/archives/2005/11/cocoaheads_la_m.html
Just a reminder that the second monthly meeting of CocoaHeads LA (Santa Monica) will be tommorow (Thursday) night at 7:00 PM. We'll again be hosted by Steve Gehrman at the fabulous CocoaTech offices. We may move the venue later in the evening to one of the local spots for food, drinks, or dessert. Mmmm.... Cocoa and dessert! Sounds like a good, new LA trend. We're still in our nascent stages, so now's the perfect time to join the group. (It's free). We'll be having our general Cocoa roundtable, show-and-tell, and discussion/hacking on our first community effort: CocoaSpot. (What's CocoaSpot? Come to the meeting and find out!) CocoaHeads LA. See you there! Update: Steve says that the care package is in from Mark Dalrymple at CocoaHeads HQ. Included is a brand spanking new copy of his and Aaron Hillegass's new book Advanced Mac OS X Programming. We'll have it available for your perusal and possibly as a door-prize. I can't wait to see it!...Technogeekttalbot2005-11-09T15:34:50-08:00Brilliant. Simply Brilliant.
http://talblog.info/archives/2005/10/brilliant_simpl.html
In my fantasy where Sandvox ships in time for my birthday and the sales are so strong that we get big heads with giant Apple logos for eyes and reward ourselves with company nanos, I'm still mindful of the need to get cases for the beasts to prevent, or at least slow down, the impending scratched-display-athon. I had, until today, been thinking of the iWood nano. (Hey, this is a fantasy, right?) But then we're shown the way: Need a Nano Case? Try Chiclets! Briliant! Just as cool, and $99 cheaper. Now that's design. (Yeah, the iWood's still pretty spiiffy. It's got that whole Star-Trek-communicator-but-in-retro-natural-wood vibe thing. I'm torn.)...Designttalbot2005-10-14T16:09:34-08:00Apple's Announcements
http://talblog.info/archives/2005/09/apples_announce_1.html
At some point this evening, Apple put up a QuickTime of Steve's presentation in San Francisco this morning. I have various thoughts about it, everything from "Geez, I don't think the new iTunes interface is an improvement." to "iPod nano? Yes, it looks fabulous. I want one." But what impressed me most was the end of the presentation. I loved the Kanye West performance. Did you catch those lyrics? Not that I particularly like or dislike his music. That's not my point. That was super ballsy for a corporate event, even without the Katrina/NBC "situation". Go Steve! I know why I write software for this platform. Here's to the crazy ones. Update: well that didn't last too long. Apple cuts Kanye West performance from QuickTime stream of special event :-( At least the attendees will still remember it....Etherttalbot2005-09-07T20:56:20-08:00AppleBugFriday: Xcode updates wipe out documentation bookmarks
http://talblog.info/archives/2005/09/applebugfriday.html
Since it's Report-An-Apple-Bug-Friday, I thought I'd pick one that hits me where I live everyday. Xcode's documentation viewer. Even though I've had more than a passing familiarity with the AppKit for, um, longer than I might care to admit, Tiger brings with it a fairly hefty chunk of new API. (Not that I'm complaining!) As I've gotten older, I've come to realize that the available mental stack space I have is finite. I can't remember every bit of new API that I come across. Keeping documentation handy is, for me, a very good thing. Xcode helps with this by allowing you to bookmark class documentation so you can easily find it again. (Find > Add to Bookmarks) In practice this works fairly well and let's me, say, flip between related Core Data classes while I'm working on a problem. Oddly working against this is the increased pace at which Apple is releasing updates both to Xcode and OS X API documentation. (Again, not that I'm complaining! Monthly documentation updates delivered over the web are both new for Apple and a true blessing.) But, and you knew there had to be a but, every time I install either a documentation update, or an update to Xcode itself, I lose all my bookmarks! Really, really annoying. So that's my Friday bug. It drives me crazy. Mostly because it happens without warning and with no chance to recover. Following tradition (?) here's the geeky Radar URL: 4242754. I see that's Dan's now posting the text of his...Codettalbot2005-09-02T08:42:49-08:00"Heat is not made of tiny hot things."
http://talblog.info/archives/2005/08/heat_is_not_mad.html
What better to start off this blog's design category, than a link to Daniel Dennet's op-ed in today's NYT regarding the pseudo-theory of "Intelligent Design." Beyond correctly stating that there is no science in Intelligent Design, Dennet makes the point that "[t]he designs found in nature are nothing short of brilliant, but the process of design that generates them is utterly lacking in intelligence of its own." But nature has (at least) two things going for it that humans don't: a nearly unfathomable amount of time in which to test countless prototypes. We, however, will have to put some intelligence in our designs. More on that as the category develops......Designttalbot2005-08-28T15:31:47-08:00