March 13, 2006

Pom Pom Pom Pom

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.

banner_pomcast.jpg

Posted by ttalbot at 1:49 PM

January 6, 2006

Blood on the Tracks?

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!

Karelia_Logo-4.png

Posted by ttalbot at 10:18 AM | Comments (2)

August 12, 2005

Bloggo-Linko-Bloggo

We've gotten Sandvox back to a state where we can publish Karelia's website directly from the app. This is a (logical) commitment Dan and I had made to ourselves and the major reason, by far, why new posts on the Sandvox Weblog, and this one for that matter, haven't been as frequent as I'd like.

But, thankfully, that milestone was reached. You should start seeing more frequent postings as things continue to firm up. It's also a great testbed for us, as it should be. Today's update adds permalinks, commenting, and trackbacks. Let's see how they work.

Posted by ttalbot at 4:08 PM

July 8, 2005

Sandvox Designs-a-Plenty

Dan mentioned a couple of days ago that we're hard at work on Sandvox, which is of course absolutely true and what keeps me up at night, rather than posting every little thing that crosses my brain, but one of the really fun aspects of this is working with designers to come up with new looks for web pages.

Although talblog clearly doesn't show it (yet...hint hint), I'm getting pretty tired of boring, boxy designs for web pages. I'm a pixel slut. I admit it. Show me some eye candy.

So, in that spirit, and seeing as how Dan's already let the cat out about the absolutely rockin' Trippy Bubbles, here's a sneak peak at Sunburst:

sunburst.png

Yes, a little more reserved than trippy – kind of like me – but shining with a sleek Art Deco-sensibility. I keep telling Dan that the most beautiful part of the design is actually the footer, but for that, you'll just have to wait. (We have to keep some surprises, don't we?)

Posted by ttalbot at 8:22 PM

Diagrams that break

model.png

One of the things I've been working on since WWDC is streamlining Sandvox's Core Data model. (Yes, that's part of it there, on the left. It'll likely be public when we publish the plugin spec, so I don't think I'm giving away too much.)

Even though, many months ago, I came up with some really kick-ass model merging code that grabbed partial models from a bunch of different plugins and hooked up all the attributes, relationships, fetch specs, and parent/child relationships in just the right way, it turned out to be absolutely the wrong approach since, as soon as one thing varies in the model – oh, say, the presence or absence of a plugin – you've effectively broken your file format, requiring a lot of gnashing of teeth and grindage of CPU while you migrate from whatever your model used to be to whatever your model is now.

Thunderstruck to learn that I'd have to toss all (twelve lines of) my brilliant code, I decided to just suck it up and simplify, simplify, simplify. (Always, always, always a good thing to do anyway.)

So here's the good news: writing a plugin for Sandvox now requires virtually zero knowledge of Core Data: we just do it all for you behind the scenes using one simple, easy-to-maintain (and upgrade) model. You just create a delegate that implements and customizes what you need to. Just like it should be. Thank you Cocoa.

And here's the better news, at least for me: the modeling tool in Xcode, and Core Data itself, actually made this streamlining really, really easy. How? Visual development of (compiled) models, with copy/paste, and datastores that validate against the model at Save. In other words, Diagrams that break.

model_bad.png

As I mentioned somewhat off-handedly, as soon as you start seeing Core Data as fundamental to how you use Cocoa, you stop worrying about a whole class of problems. Not only can you whip up a pretty powerful object model by clicking and dragging (and, well, thinking), the system actually tells you if you get it wrong.

Actually, it does this in two ways: first it compiles your model on the front-end, into a .mom. If you've done something really stupid, your model won't compile. You have to fix it in the modeler before you even get to the code. And then on the back-end, when you go to save a document, Core Data actually verifies that the data you want to store matches the requirements you set out in the model. Say hello, one would hope, to referential integrity. That's not to say you can't put bad data in, but at least you're not leaving good data out. And that, I think, is a real step forward for fast, fast, fast Cocoa development.


On a related note: Apple just updated the developer documentation. Be sure you've got the latest. Xcode Preferences > Documentation > Check Now.

Posted by ttalbot at 7:57 PM | Comments (3)

July 6, 2005

Undelivered Mail Returned to Sender, Fixed!

When we announced Sandvox at WWDC last month, Dan and I put a signup form on Karelia's main page to gather email addresses for sending out announcements as we get closer to shipping. (The sheer quantity of signups and positive comments, by the way, has been tremendous. Thanks!)

As a matter of course, we send back a welcoming email to the person who signed up, along with an unsubscribe link and other information. Less than 1% of these bounced back as undeliverable, which I think is actually pretty good, but I started to notice things in the bounces that worried me. Things like,

Diagnostic-Code: X-Postfix; host fe.mail.saunalahti.fi[62.142.5.25] refused to talk to me: 554 : Client host rejected: No mail accepted from you

and

Diagnostic-Code: X-Postfix; host smtp3.parasun.net[204.174.18.100] said: 550 Administrative prohibition (in reply to RCPT TO command)

and

Diagnostic-Code: X-Postfix; host relay.verizon.net[206.46.232.11] said: 550 You are not permitted to send mail. Please visit http://www.verizon.net/whitelist to request removal. (in reply to MAIL FROM command)

didn't look like ordinary bounces. That last one was really annoying as Verizon's a pretty big ISP and I didn't want their mail relay to prevent us from talking to (potential) customers at their request.

Long story short, and here's where it gets stupidly technical, we recently changed our ISP from one DSL account inside SBC (nee PacBell) to another DSL account inside SBC. Although SBC was actually surprisingly good about switching over the account, they never updated their PTR (aka Reverse DNS) records to show that our IP addresses inside their IP block legitimately point back to our servers. This meant that Verizon and AlamedaNET and some other ISPs thought we were just a rogue zombie PC somewhere on SBC's DSL, sending spam willy-nilly. Apparently this is a big problem in the Windows-world.

Here's what I learned in straightening this out:

www.DNSstuff.com is an invaluable tool for tracking down DNS probblems. Use the Reverse DNS lookup form to see if your server's IP matches its hostname.

Whenever you have a problem with SBC DSL and have to call the 877 number, immediately ask for tier-two support. This gets you somebody "stateside" -- as they themselves say -- rather than somebody, I'm guessing in India, doing nothing more than reading from a rather limited number of choices on a screen. I'm not sure why, but asking for tier-two support was the only way I was able to break the loop of

"What version of Windows are you using, sir?"
"I'm not using Windows."
"Windows XP?"
"I'm not using Windows."
(pause) "Windows XP?"
"I'm running Mac OS X Tiger Server."
(pause) (pause) "Windows XP?"
"I'm running FreeBSD."
"Windows XP?"
"I'm not running Windows, I'm running Unix."
(pause) "Windows XP?"
"I need to speak with tier-two support."
"You want to speak with tier-two support?"
"Yes."
"Please hold."
There, see how that works?

Finally, once you get to tier-two support, insist that the problem can be solved and that you just need to speak to somebody in DNS support. After your fifth transfer you finally get to speak with a woman, probably sitting at a desk in Northern California, who understands every technical word you are saying and who then gives you the email address where you tell PacBell how you would like your PTR record(s) to look. You then send off your email and all is well.

(Update: It turns out that if I had just done a Google search on the issue and taken a leap of faith, instead of picking up the phone, I could have avoided a lot of hassle, 'cause, you know, Ameritech and PacBell are the same. Windows XP?)

So, if you had signed up and didn't receive a response from us initially, our apologies. I've gone through the bounces and resent out everything again this morning.

Posted by ttalbot at 2:15 PM | Comments (1)

June 15, 2005

Out of hiding and into the fire

At last year's WWDC, I (purposely) kept a really low profile. I was already working on a new app for OS X, stemming from an idea that Dan Wood approached me about a few years ago. Dan, of course, was across the street at JavaOne demo'ing Project Alameda, Sun's Java-based successor to Watson. Not wanting to really give any details about what I was working on, and sort of waiting to see what would happen with Dan and Watson, I kept pretty much mum.

That's not to say I wasn't listening. Core Image, Core Data, WebKit editing. Yep. I ate it up. Very tasty stuff. But, still, I wasn't ready to say anything.

This year, things went a little differently...

As it turned out, Sun dropped the ball with Alameda, Dan rejoined the team last Fall, and we've been coding away getting ready to ship this new app as soon as we can. Not wanting to go through another conference with my lips sealed, I pushed pretty hard that we announce by WWDC 2005. And I'm sure glad we did. Dan and I spent a good part of last week just huddled in the labs with Apple engineers and our code, hitting every major area we had questions about: Xcode, Core Data, Core Image, Quartz Composer, Automator, and, of course, WebKit. (Don't worry, Barry, I'll be bugging you about Sync Services in short order.) I really want to thank everyone I met last week for their help and suggestions. We walked away from WWDC 2005 with a ton of ideas to make this app even cooler.

So what's the app?! Of course, it's Sandvox. We unveiled it at Buzz's Weblogger Dinner at Thirsty Bear on Monday night. (Thanks Buzz!) I made Dan give demos until his voice went hoarse. (Thanks Dan!) I was nervous to see what the reaction would be. We couldn't be happier with the response. The people who saw it got it right away, even in the rough, alpha state it was in. Since that night we've gotten a tremendous amount of interest through the sign up on our site and a lot of great feedback that will surely shape the product between now and release.

So that's it. No more keeping silent. I'll be blogging here regularly, as well as on the Sandvox Weblog, about our progress, the present and future of OS X, Cocoa, Xcode, how design affects our lives, and the craziness of living in LA.

Stay tuned!

Posted by ttalbot at 2:38 PM | Comments (2)