in Search
Welcome to Neopoleon - Sign in | Join | Help
Navigation: Home | Forums | Galleries

Giving RealBasic Another Chance

Hi.

Beep. Boop beep beep boop boop boop beep beep DING! boop boop bzzt bzzt bzzt...

I don't write too many nerdy posts nowadays. I decided to begin this one with a textual representation of the computer noises I'm making on my side of the screen. I'm like all, "Beep boop boop beep DING! boop beep beep bzzt bzzt..."

It gets me in the mood.

I'm making dot-matrix printer noises now, but I don't know how to spell them.

Before getting into the meat, I'm gonna remind you again about the $200 discount on JavaOne tickets. I figure it's more appropriate to mention it here than it was in my post about Snow Gods and The Never Ending Story. To take advantage of the discount, head over here and use the promotional code "iphone".

Now. The post.

As I've discussed here (and quite a few other places now), I'm not happy with the dev tools for OS X. I don't like Objective-C. The last time I dealt with a header file and felt OK about it was in 1992. Unless you're holding a gun to my head, it's unlikely that I'm going to willingly subject myself to my coding adolescence all over again. If you plan to take me up on the gun thing, by the by, make sure it's loaded and that you're ready to use it. If you hold a gun to my head, my ninja instincts will take over. I'll break your arm, break your nose, break your throat (yeah - the whole thing), and then hadooken you until you can't take it any more. Your only hope will be that you're faster with your gun than I am with my nunchucks.

I want to write client apps. Barring Objective-C and Cocoa, there really aren't that many options. When I code, I use an IDE. I never code with notepad or emacs or vi or any other antiquated crap. I want code-completion, a nice interactive debugger, a fancy form-builder, and a sane language that ties it all together like the rug from The Big Lebowski.

All roads lead to RealBasic [company page here], which is unfortunate. It's so close to being great that I have a hard time seeing the good in it. The biggest thing they're missing, from my point of view, is a nice, proper framework.

The current system is a messy combo of the global functions you'd find in Visual Basic 6- that come from who-knows-where, and halfway decent objects that offer some of the functionality you'd expect of them. What's frustrating is the division of labor between object functionality and those global, module-based operations. It divides your attention, and it more than doubles your effort.

I don't have a "code mode" for representing code here, but I'll see what I can do with block quotes and a little Courier New.

To give you a brief idea of something that drives me insane because it could so easily be solved, check this out - it's a little simple array handling:

for i as integer = 0 to UBound(someArray)

    someOperationWith(someArray(i))

next

What do you notice?

Yeah: UBound. I haven't had to use something like UBound in... years?

That sort of thing pisses me off. I just want something like:

for i as integer = 0 to someArray.Count

    someOperationWith(someArray(i))

next

That's all. Too much to ask? I don't think so. There might already be some nice object wrapper out there that provides this functionality, but I haven't seen it, and I think I read the manual, like, eighty times last night, and didn't find anything relevant.

My complaint, of course, isn't just with arrays - it's the design philosophy, and it's rampant throughout RealBasic. I'd list the number of global functions required for string-manipulation, but the quantity of data required would clog and bring down the entire net. Economies would collapse. The medical and emergency-response infrastructures would come apart. By the end of the day, we'd all be looting - we'd be fighting each other for flashlight batteries, bottled water, antibiotics, weapons, food, and shelter.

So, in the interest of the survival of our species, I won't list them.

You might not think this kind of "design" a big deal, but you might also be one of the people who only moved on to, say, VB.Net kicking and screaming.

There's no consistency to a language like this. With Java or .Net or any other platform out there with a proper framework, much of it is self-documenting. I've worked with enough languages and platforms that figuring out how iterate over an array using a property like "Count" isn't going to be very difficult. The namespaces change, the names change, the hierarchies are different, there are differences between the languages (think .Net properties vs. the standard Java getter/setter methods), but if you Get how to use and explore frameworks like these, just spelunking through the frameworks can teach you much more than a manual ever could. It's useful, but, if you love coding, it's also fun. Within twenty minutes, you can have a list of "Wow!" functionality you can't wait to use. Sure, it might exist in a VB6 or a RealBasic, but finding it will be a totally different experience, and one that, in my opinion, isn't especially fun.

Systems like this where "UBound" type functions are still the rule rather than the exception are much harder to learn. Picking up a language's syntax is often simple to the point of being trivial. It's the same thing for spoken languages of similar families - although I don't speak Italian, I've studied Italian grammar, and I can do just fine reading and writing it. I don't practice it enough to know it inside-out, but once I get warmed up, a lot of it comes back to me. It's easy because I already speak French and know a bit of Latin. I can read many Indo-European languages even without a grammar and do so with enough accuracy that I can at least get the gist of things, and that's because there are patterns that carry over from, for example, Spanish, Italian, and whatever else.

The difficulty comes from things like vocabulary. For me to express myself in one of these languages, I need to know more than the syntax/grammar, and the more consistent and regular the rules of the language, the easier it'll be.

Coding languages are basically the same. Many exhibit more or less shared patterns and structures. The real work isn't in learning the syntax. You could pick up the syntax of a brand new coding language in an afternoon as long as the document from which you're learning was written expressly on the language and its keywords/operators/etc. rather than the functions and frameworks you drive with the language.

The analogy breaks down in that spoken languages change too quickly to enjoy much regularity, but there are exemptions. Whether you like it or hate it, Esperanto has such regularity that you can learn the grammar in twenty minutes and a lot about its vocabulary in a few more hours.

A sensible language + a sensible framework is closer to Esperanto. A (possibly) sensible language + higgeldy-piggeldy inconsistent global functions and no proper framework is more like English. I love English, but it's highly irregular, and it's cruft upon cruft.

For me, languages like RealBasic fall somewhere between. I get the basic syntax, and I see the same patterns, but there are "symbols" that I don't have to deal with in my favorite (more) modern languages.

It's certainly possible to find "UBound" type cruft in C# or Java, but where there are oddities and relics, there are almost always clean ways to avoid them. VB.Net is a good example. It supports a lot of the lameness of VB6, but you don't have to use it. I'd be perfectly satisfied of RealBasic were the same. I don't care for the verbosity of VB.Net, but when you accept it, it's not much different from C#. The first app I ever wrote with VB.Net (Beta 1 of VS.Net) left me thinking, "They turned VB into Java! GOOD!"

The real pain of the "UBound"s of the universe is that you have to find them. You want to do something perfectly ordinary, and then realize that you can't do it until you find it in the documentation. Then, once you learn it, it's tougher - at least for me - to remember it because, unlike string functions sitting in a well-organized OO framework, it has no context. It's global. It's not self-documenting.

If I spent my entire life in RealBasic, I'd still dislike this, but I'd learn to live with it as I internalized all these functions. But, with no reason to their naming and organization, it's a real pain in the ass, and I plan to jump ship the second something better comes along, so putting in the effort doesn't appeal to me. I have faith. With the increasing popularity of OS X, I have to believe that things will get better as others experience the same frustration.

Anyway, it looks like there's been some effort put toward correcting this mess in RealBasic, but, in the example I'm going to give, it's actually not much better than it was before.

In an app I'm writing, I need to get a "FolderItem" that represents the user's home folder. If you code at all, and even if you don't use RealBasic, you ought to be able to figure out what a "FolderItem" is, so I won't bother explaining it.

I have two paths to the solution. The first is the Old Really Sucky Way, and the second is the New Not as Sucky Way. Something to note is that the first way is a sloppy hack because, although you'd expect to find a simple function that returned the user's home directory, you actually have to do a little work yourself, whereas, in the New Way, you don't. But, when looking through the documentation and code samples I found online, the first way was all I found until I knew where to look in the help for the second. But... the second STILL isn't properly documented, so it STILL isn't easily discoverable.

Perpend:

Old Really Sucky Way:

dim f as new FolderItem

f = DocumentsFolder.Parent

New Not as Sucky Way:

dim f as new FolderItem

f = SpecialFolder.DocumentsFolder

Looking at the Old Sucky Way, you'll see that there isn't a way to get a reference to the user's home folder - I have to ask for the DocumentFolder's Parent. This method should return the user's home folder most of the time, but this might change in some networked scenarios.

There are similar functions that will get you several other folders, though, oddly, not the user's home folder, which is just weird since that's one I'd expect to use fairly often. With the built-in global functions, it'd be easier to get into the user's pants than the user's home folder.

I did a search in the language reference for "DocumentsFolder," but it only returned an entry on the function "DocumentsFolder" I used above (or property, or however you'd like to refer to it). Unless you follow a hierarchical document tree in the language reference to the section on "SpecialFolder," you won't find out about "SpecialFolder," and that would suck since SpecialFolder does provide easy access to the folders you'll need.

What's even more frustrating is that, when you drill down to the "SpecialFolder" section of the docs, you get a list of some of the "special folders" you can get access to through it, but:

1. It's a partial list - it only lists the folders for which there are already global functions such as the one in the "Old Sucky Way" example ("DocumentsFolder").

2. It doesn't make it clear that "SpecialFolder" itself is a module. Because of this, I didn't think to try typing in "SpecialFolder." to get a code-completion list of its members. Since the list of "special folders" in the docs was the same as the ones accessible through global functions, I had no reason at all to think that it was anything more than the title for some entries in that section of the documentation.

This is just messy. They offer two way to get to the same functionality. The older one sucks, and the newer one is very poorly documented. That makes them both about as easy to use. Ultimately, they both suck, though, because they're both globally exposed without being part of a framework - you still have to either guess they're there, or divine their from the not-so-great docs.

Now, if there were a proper RealBasic framework, you'd expect a sensible object hierarchy that, under some File or Folder namespace, would expose a "SpecialFolder" static class. It would be self-documenting. I could find it with a few keystrokes and some code-completion. Something like "RealBasic.IO.Folders.SpecialFolder" - just import the proper namespace and go to town. File IO is common, common, common, and you'd just import the appropriate namespace so you wouldn't have to type out the fully qualified name. No biggie. Done. It's self-documenting and well organized.

I expect to find the usual apologists leaving comments and telling me that I'm stupid/lazy/hate it because it isn't Microsoft stuff or Java, but the reality is that I simply hate it for what it is. It isn't that I can't learn it - it's that there's a greater barrier to entry for RealBasic than there should be.

What's the point of offering an "easy" alternative to Objective-C/Cocoa when you have to do stuff like this? As much as I dislike Objective-C, Cocoa as a framework still makes sense.

I'm not just going to whine about it, though. That'd be the usual Crappy Customer thing to do.

I'm writing a simple framework to wrap some of the functions I'm most likely to use. I also plan to possibly write some object-wrappers for data types that could really use them. It might be that a lot of this has already been done. I didn't see anything in the docs, so if someone out there knows otherwise, do tell. Until I learn of an extant solution to his problem, I shall endeavor to do whatever I can to group this functionality in a sensible way that'll make coding for RealBasic a hell of a lot easier.

And, to address some concerns that might arise...

Whether you're into .Net, Java, Cocoa, RealBasic, or whatever, one of the first things you might be thinking about when it comes to object-wrappers is performance. This won't be a problem - at least not for the kind of apps I'm going to write. These are good ol' fashioned desktop apps. I'm not trying to optimize a web-app for eighty-billion simultaneous connections. I'm not rewriting SETI@home.

Eventually, I'm either going to set up a little site for OS X dev stuff I'm working on, or I'm going to post it here. I hope I put in the effort to do the site, but these Big Plans of mine have a way of getting pushed aside when Real Life and Real Work need my attention.

Wherever it winds up, I'm still doing it. The app I finished is a cute little utility that I think Mac users will dig. The other apps I'm planning are going to be larger. Not huge, but big enough that I don't want to deal with these poorly-documented global functions with inconsistent names.

That is all, my people.

Solidarity among Those Who Understand.


Like Neopoleon? Then donate, you cheap bastard:

Published Wednesday, April 23, 2008 5:04 PM by Rory

Filed Under: ,

Comments

 

Reverse Technique said:

Have you considered punching some RealBasic staff in the face until they acquiesce? I didn't know how to spell that word, but I typed something close and Firefox's spell check swooped in to save the day.
April 23, 2008 7:54 PM
 

glen said:

You'd better make that first loop that deals with your zero-based array only go up to someArray.Count - 1 or they'll be hell to pay. Seriously. Hell will start docking your paycheck, or send you a dunning letter. And when you call them to ask what a dunning letter is, they'll say "did you consider looking it up on Wikipedia before you bothered us with a phone call?" And they will ask you for the money again. Say, can you forward me that number when you get the letter? There's a few people I've been trying to reach.


Rory, it's nice to see you making deep coding posts again.
April 23, 2008 8:06 PM
 

Tim said:

Did you ever look into some of the other Cocoa language bindings, like Python Cocoa? I can't remember if you mentioned it in your previous post, and there's no freaking way I'm going back to check so I thought I'd mention it.

More info here:

http://developer.apple.com/cocoa/pyobjc.html

There's also Ruby bindings too, I think.   Python and Ruby are probably preferable to any form of Basic.

I have no experience of using either of these, nor how complete the bindings are (but I believe the Python one is pretty good), so caveat emptor.  There's lovely*.

*Special joke for Dr Who fans
April 24, 2008 1:33 AM
 

punky said:

Lissssssp.

Sorry, just felt like coming up with something completely inappropriate, that fits approximately none of your requirements. And to imply that I didn't bother to read your post (nor the previous one), didn't care about your preferences or needs, and instead decided to impose my own views upon you. In other words, to emulate a standard "discussion" among a certain ilk of people in the programming community.

It's still a very interesting language though. At least to me.

It is also a language that invalidates the statement "coding languages are basically the same" (as is Erlang or Haskell, say).

But sure, most languages that carry some DNA from ALGOL 60 or SIMULA are pretty similar, at least syntactically (which I believe was your point). Certainly programming in Smalltalk feels quite different from programming in C++.
April 24, 2008 2:14 AM
 

Bob K said:

Interesting article.  I've been using RB for many years and don't even think about it any more.  I think part of the problem you're experiencing is that RB was designed with the mindset to be "Visual Basic for the Mac" so there is an obvious effort to mimic VB6 in all of it's ugly glory.  

So, yeah, it's not very modern from the framework perspective.  And you're absolutely correct that the frameworks aren't self explanatory and that the documentation is sparse at times.  However, REALbasic is still faster than any other language I've discovered and it's awesome at making native cross platform applications for Mac, Windows and Linux.

I think there is great value to your wrapper project.  If you get anywhere on it, please post it to RBGarage.com or on the RB Forums so that others can benefit from your work.

Bob Keeney
BKeeney Software
Prez of the Association of REALbasic Professionals
April 24, 2008 6:56 AM
 

Titular Chop said:

By the way, what is this mythical application you are concerned with building?
April 24, 2008 11:39 AM
 

Chris said:

Real Basic is ok. Certainly not a sharp edged tool, but you can compile your code to any platform, so that's nice
April 24, 2008 2:05 PM
 

Paul Lefebvre said:

Hi Rory,

I think most of us seasoned REALbasic users would agree that its documentation is not as good as it should be.

But we have a pretty good community of folks wiling to help others out.

Regarding your array example, REALbasic has For Each syntax which would help a lot:

Dim someArray As someClass
For Each theValue As someClass In someArray
  someOperationWith(theValue)
Next

REAL has actually been working hard the last few years to make the language more consistent.  Most of the string functions are now accessible via the object rather than with global functions (which remain for compatibility reasons).  For example, you can do someArray.UBound instead of UBound(someArray).

Thanks,

Paul Lefebvre
LogicalVue Software
April 24, 2008 4:16 PM
 

Rory said:

Reverse Technique -

"Have you considered punching some RealBasic staff in the face until they acquiesce? I didn't know how to spell that word, but I typed something close and Firefox's spell check swooped in to save the day."

Though they may eventually respond to such "motivation," I don't think they'd be in any shape to code afterward, so I'm currently researching my nonviolent options.

I was thinking about repeatedly sending them to bed without any dinner.
April 24, 2008 5:27 PM
 

Rory said:

glen -

"You'd better make that first loop that deals with your zero-based array only go up to someArray.Count - 1 or they'll be hell to pay."

It actually works in RB. The first element will be empty if you didn't assign anything to someArray(0).

It's confusing. Like this:

   dim i(3) as Integer

That creates an array with *4* elements. I totally get the whole base 0 mumbo-jumbo, but I don't remember that applying to the *declaration* of an array.

Whether 0 or 1 based, I'd expect the initialization of the array to contain as many elements as are specified. So, in the above example, I'd expect *3* - not 4. Yeah, 0 based, so it'd be elements 0, 1, and 2, but...

Is this how it usually is? To be honest, It's been a while since I've bothered with a plain old array. It's been all about collections for me for years, using arrays only when it made sense to do so for various reasons.

I just don't remember it being like this...

"Seriously. Hell will start docking your paycheck, or send you a dunning letter."

Given the rampant identity theft going on nowadays, this is probably someone else's problem.

"Rory, it's nice to see you making deep coding posts again."

Yeah, huh.
April 24, 2008 5:37 PM
 

Rory said:

Tim -

"Did you ever look into some of the other Cocoa language bindings, like Python Cocoa?"

I briefly looked into it, but I got to an empty, dead-end doc. Lost hope there.

I'll check the link you gave. I've noticed that the Cocoa docs aren't especially well organized.

A lot of the Apple docs aren't very well organized. There was a big boo-boo going on with a QuickTime import. The system logs showed exactly what library (bundle - whatever the Apple word is) was having the problem, and they provided the error code. When this was happening, I couldn't pull anything from my camera, which was infuriating.

So, I did a search for the component+error code. Nothing. Searched for the component. Nothing. Searched for components that shared the first few letters. Nothing.

Found absolutely nothing.

I resolved the problem by drilling down into FCE's "package" and finding the offending library. It seemed there was some confusion - possibly over versioning - and I just deleted the library, forcing FCE to use the other one that actually worked. Why it ever switched is a mystery.

But that's what I mean. We're talking about something as common as QuickTime, and I still couldn't find useful info on it.

I guess you just need to know where to look...

"There's also Ruby bindings too, I think.   Python and Ruby are probably preferable to any form of Basic."

I agree about Python - to an extent, anyway. Python is also at that inbetween state that bugs me, but it's come much further than RB in the move to consistent OO mumbo-jumbo.

The thing I wouldn't get is a slick IDE. I'm an IDE coder. I need my IDEs.

ActiveState has a nice free Python IDE - it's crippled, but better than nothing - but nothing in the way of a Cocoa designer. I refuse to build UIs by hand. If there's ever a UI builder for Python and Cocoa, I'd probably make the switch in a second. If anybody knows of one, lemme know - I'll kiss you all over your face.

As for Ruby - I hate Ruby. I hate the syntax. I don't care how many neat things you can do with it. It's so, so ugly to me. Like the worst of C and Perl, and that's saying something. But Python is, for the most part, acceptably aesthetically pleasing.

Word.
April 24, 2008 5:48 PM
 

Hurtling Monkey said:

"As for Ruby - I hate Ruby. I hate the syntax. I don't care how many neat things you can do with it. It's so, so ugly to me. Like the worst of C and Perl, and that's saying something. But Python is, for the most part, acceptably aesthetically pleasing. "

Would love to see a post describing why, since I've been getting to know Ruby for awhile now and have gotten to home base with her more than once.
April 24, 2008 10:21 PM
 

Rory said:

Bob K -

"I think part of the problem you're experiencing is that RB was designed with the mindset to be 'Visual Basic for the Mac' so there is an obvious effort to mimic VB6 in all of it's ugly glory."

Ooooooooh, yeah - I got that. And it makes perfect sense. It's what I would have done, too.

But they've put together something that could be great, and they no longer have to follow MS's lead. There'll be people wanting to convert their VB6 apps to RB for a while, I'm sure, but there's a point at which you have to cut the cord and deny the teat - RB could be great in its *own* terms.

That's another place putting together a fancy framework would come in handy. They could go down the Java/.Net road - share the framework between many languages. Java's a great example. Jython saved my butt on a couple occasions - I've always loved seeing the ways people manage to wrap languages around these frameworks.

So, they could bring RB into the 21st century, and then they could get started offering other languages. It wouldn't be necessary, and I'm totally dreaming, but it'd be cool.

It'll never happen, but I'd love to see Apple buy Real Software for RealBasic. The IDE is good - it's a little odd if you're used to working with flat text files of code rather than the discreet bits the RB IDE offers, but it's otherwise snazzy. The UI builder is good, and it conforms to the Apple Style Guidelines for General Application Prettiness. There are some code-completion bugs, but I'm sure they could fix 'em (and I wish someone would - there's one that pops up *all* the frikkin' time).

Apple could then take the language, keep the syntax and keywords and blah blah blah, and give it the framework it deserves. I guess they could (should) leave in the Old VB6 Nastiness, but Apple's slick enough that they could probably have an option that protects you from ever having to see that stuff if you don't want to. Like, a Good Mode and a Bad Mode.

After the framework's done, Apple could get busy creating other languages with which to code against the framework. Python would be lovely. A C#/Java-like language would be nice, too. RB really makes me miss the keystrokes you save when you trade English for semicolons.

The one thing they'd lose that's *so* cool is RealBasic's cross-platform gollywots. From what I can tell, the cross-platform stuff actually works, and, for that, Real Software ought to be given the Nobel Prize in Not Suckage. Their coders must have the QWERTY layout permanently imprinted backward on their foreheads from banging their faces into the keyboard day after day trying to get it all to work.

But, I dream... alas and alack.

I dream.

"I think there is great value to your wrapper project.  If you get anywhere on it, please post it to RBGarage.com or on the RB Forums so that others can benefit from your work."

Yeah - I saw RBGarage. It's my favorite RB site so far. Be cool to be a part of that.

And, you can bet your britches I'm gonna work on this. I'm still learning more and more about RB - I want to try and avoid duplication of work where possible. I'm reorganizing some things, but the functionality should be identical where it makes sense.

If I get it to the point that I think it would be useful for others, I'll definitely post it. It's been a while since I did anything useful for other coders. Feels good to do it :)
April 24, 2008 11:01 PM
 

Rory said:

Titular Chop -

"By the way, what is this mythical application you are concerned with building?"

One app is built... the other two are related and have to do with foreign language learning.

I have this method of learning languages that *I* think kicks the ass. Kind of like what I was getting at in this post - it's mostly about syntax and grammar.

I wrote some apps many years ago that I've been meaning to update and improve. I got pretty far into writing a version for Windows Mobile, but stopped. Not because it wasn't the awesome, but because I got *way* too ambitious. I tried to create a generic framework that, from a basic grammar definition, could slap together a boot camp for that language's grammar. It worked for French and Italian. Probably would have worked for Spanish (actually - it *would* have). It was when I tried to add Latin that things got out of hand.

It turns out that a declined, inflected language with three genders and a subjunctive so complex that it would even reduce the authors of WS* to weeping didn't fit so well in the model I'd created. I stretched it, butchered it, and threw it away.

Now I'm going to do it all over again.
April 24, 2008 11:07 PM
 

Rory said:

Paul -

"REAL has actually been working hard the last few years to make the language more consistent."

I saw a few things that hinted things were moving away from the madness. In a previous comment, I compared it to the place where Python is - hovering between the Old World and the New World. Except that Python's further along.

Still... there's clearly hope.

One thing that still has me worried is that the support for namespaces doesn't seem very... well... *good*. The docs, as it appears is well known, are vague, so maybe I'm missing something, but it doesn't look like I can nest modules.

Actually, scratch that. I just nested a module. Works fine :)

*That* makes me happy. *That* is a sign that things are gonna be OK.

"Most of the string functions are now accessible via the object rather than with global functions (which remain for compatibility reasons)."

I didn't remember having see it, so I just went and tried it again. It might be a code-completion bug (there seem to be a few), but I'm not getting anything - no members - not even the hint of something to come.

Aight - it does appear to be a code-completion bug. I got it working in another function. But the only useful member (of four) that I saw was "Split" - that doesn't seem like much, you know? Is there something else I'm missing? I started dabbling with RB a while ago, but didn't upgrade to '08 because it didn't look like it offered much more in the way of language improvements. Is this a new language feature?

"For example, you can do someArray.UBound instead of UBound(someArray)."

Hm... again, I'm wondering if this is an '08 thing. I just found things like Append, Insert, Pop, and other useful stuff, but no UBound functionality.

Just did a check in the docs and language reference, and still nothing...

Think I'm gonna go read up on '08 to see if there were changes more significant than I thought.
April 24, 2008 11:19 PM
 

Tim said:

"I've noticed that the Cocoa docs aren't especially well organized."

Agreed.  Like, really a lot.  It's pretty much accepted that you should buy one of the decent Cocoa books.  Trying to learn Cocoa from the Apple docs is like trying to learn the Mayan language from a book about geology.  Sure, you'll learn about the stones used, but you'll be missing the big picture.

"But that's what I mean. We're talking about something as common as QuickTime, and I still couldn't find useful info on it."

Again, agreed really a lot.  Like, A+++++, would agree with this opinion again.

I once used QuickTime in a major way on a shipping project for like, a real job (I know!) and the docs were really annoying.  At the time, the process seemed to be:

* Read Inside Macintosh on QuickTime.
* Except we've changed it, so read these 'migration' docs afterwards.
* Except we've changed it again, so read this random collection of Tech Notes to get up to speed.
* Oh, and for OS 9, here's some more Tech Notes.
* PS: More Tech Notes for you!

There was no central authority on the API.  Incredibly annoying.

And *then* I got a load of sarcastic heat from an Apple compatibility engineer for writing code that could cause problems, because I 'hadn't read the docs properly'.  Sadly, his reasoning required that my code be clairvoyant, because their documentation did not document the error codes from certain functions correctly (or at all) so I think I sent him an email telling him to f*ck off.  I'm all about the witticisms.
April 24, 2008 11:22 PM
 

Rory said:

Hurtling Monkey -

"Would love to see a post describing why, since I've been getting to know Ruby for awhile now and have gotten to home base with her more than once."

It's not worthy of an entire post.

There are little things that bug me... things I could ignore when building my own apps, but I like to build my apps in the spirit of the tool so that my code isn't going to be a total, confusing mess to whoever else might look at it.

I've never been a fan of the object.some_method_with_underscores style. I prefer camelCasing because the last thing I want when cranking stuff out is to have to repeatedly Shift my way to the character. My pinky would get too much of a workout. I'd get pinky-tunnel.

I don't like the syntax involving colons, pipes, and hashes. There's a lot of decoration that doesn't seem immediately useful except to someone coding in a plain old text editor. I could be wrong, but that's my impression.

That said, there are some *really* cool things Ruby has to offer. I've had quite a few friends pick it up and love it over the years. There's some uber nifty gorgeous fun string manipulation to be had. Operator overloading couldn't be easier.

There's obviously good stuff.

I just don't like the way it looks. And I never want to see "puts" again. In any language. I just want it gone.

I should look into it more, though. While I find it aesthetically offensive, I still like what it can *do*.
April 24, 2008 11:30 PM
 

Rory said:

Tim -

"Sadly, his reasoning required that my code be clairvoyant, because their documentation did not document the error codes from certain functions correctly (or at all) so I think I sent him an email telling him to f*ck off.  I'm all about the witticisms."

See, I used to think tracking down Win32 errors was a pain in the ass. Etching them backward in limestone and rolling them in to the volcano as an offering to the hexadecimal to decimal converting god who could also do a good job of actually finding out what in the hell was going on.

I thought it was really funny that I sometimes had to sit with the Win32 API docs and several dictionary sized books to be able to follow the trail to the error - which *might* have a definition.

But, even if there was nothing at the end of the line, I was at least able to confirm that the error existed and that somebody else *probably* knew about it.

With the QT one, I couldn't even confirm the existence of the bundle. The error itself is apparently being stored at Area 51.

The entire universe... indexed in Google... billions and billions and billions of everything...

W. T. F.
April 24, 2008 11:35 PM
 

Massif said:

Aww... And here's me thinking learning silverlight would be a good shortcut to creating Mac applications. (Albeit ones hosted in the browser.)

Anyway, I'm currently on F#, so no time to even read all this post. Plus my pair is about to arrive, so I'll be chained to the pair programming desk for another few hours until I get to go home.
April 25, 2008 12:54 AM
 

Yuvi said:

Thank yourself that you've never touched LINQ. You'll prolly go mad trying to replicate "that". I could be wrong.

P.S. Am I wrong? I think you've more than touched LINQ.
April 25, 2008 6:56 AM
 

Chris said:

The real question is....

Why are you making Desktop software?
Didn't Ray Ozzie say, as recently as last week that Desktop software is dead, and "long live the web" ???

http://www.flickr.com/photos/8606487@N03/2440592671/sizes/o/in/photostream/

The old MSDN technology is totally obsolete now. You can do everything with LAMP and Flash, and what you couldn't do with Flash, you can now do with AIR. It's all multiplatform. Adobe, unlike MS eventually supports Linux TOO.

LAMP + Adobe = the best of all worlds. Plus server apps mean you can get people to keep coming back. Eventually those people will pay, pay, pay.

flickr.com/photos/8606487@N03/2441433084/
Me == not renewing MSDN == Legacy single platform code == long live free software platforms + Flash/AIR

Real basic is worse than MSDN, because it's like a crippled version of the same old same old.
I learned through painful years of development that you should be on the cutting edge even if you don't like it.
That cutting edge is FLEX3/AIR + LAMP.

I'm not jealous. I have MSDN Pro. Why *wouldn't* I use it if it was going to make us loads of money. Of course I would. I'm not that dense. Server apps are pirate proof and lucrative.

I am suggesting that you don't waste your time with Real Basic. For internal Business apps, ok. But for personal development, no, no, no way.

Real basic would be a candidate for somebody in the IT dept of a company that gets X request for Y cross platform apps. Maybe after a merger or something when Z people were on 1 platform and N people were on another.
April 25, 2008 10:21 AM
 

LetsKillDave said:

I speak Esperanto like a native!

(It's an Esperanto joke, but yes, I do speak/read/write it...one of my many useless talents)
April 25, 2008 12:59 PM
 

Rory said:

Massif -

"Aww... And here's me thinking learning silverlight would be a good shortcut to creating Mac applications. (Albeit ones hosted in the browser.)"

I used to feel that way about Stuff 'n Things. It works, but I always feel unsatisfied.

When it comes to desktop apps (or desktop style apps hosted on the web), I want them to look and feel and run like other apps native to the OS. Especially on the Mac.

Flash... Silverlight... they make a lot of nifty things possible, but I only like them for web apps.

Am I making any sense?

I got -2 hours of sleep last night.

I mean... I'm not a "the new OS is the web" people. Partially because it just doesn't work for me, but mostly because I don't want it. I like having my OS.

Dude. I have no idea what I'm saying. I'm not usually *this* tangential. There's at least a little substance before I like ice-cream when it's vanilla frosting can be used for many vocational habitats at the zoo where tigers are endangered animals have fur is great for making hats.
April 25, 2008 1:40 PM
 

Rory said:

Yuvi -

"Thank yourself that you've never touched LINQ. You'll prolly go mad trying to replicate 'that'. I could be wrong."

Really?

You could be right. I've thought about this quite a bit. The very first time I heard anything about it, I got *super-dee-duperly-amazingly* excited.

I haven't tried it yet, as I don't have the latest 'n greatest VS.Net, which I'm pretty sure I need. I don't do command line anymore, and I don't really want to use the Express products (even though I think they're effing fabulous)

Just went and had a good look at the wikipedia entry along with MS's 101 LINQ examples, and my feelings from that superficial glance is that LINQ is very powerful, but to the point that, if you don't get to know it well, you could *really* screw things up.

If I were still coding for a living, and if I were working with the current MS bits, I'd probably avoid LINQ except where it offered a *clear* advantage over more readable ways of working with collections.

You might be right, then :)
April 25, 2008 1:55 PM
 

Rory said:

Chris -

Sorry - your first comment got flagged as spam. I don't know why. There are some trigger words, and links are scored as well. Because of all the comment spam I've gotten, I've tightened things up. It doesn't usually cause problems, but it does snag legit comments every once in a while.

Point being, had nothing at all to do with you or your comment. It's my spam paranoia.

"Why are you making Desktop software?"

I love OS X. I love the environment. I love the look. I love everything about it.

I have a bajillion ideas that I'd do as web apps if I had the time (one that, if I had the time and money, I'd hire a team to assemble, as it *would* be profitable - maybe I'll do it, but I'm already doing something creative with every appendage, so there's not much room in the noggin for another project...).

Web apps are, of course, great if you want to write software accessible to... well, everybody on the planet who has a net connection.

The software I'm writing isn't especially nettish. I could do the language apps as web apps, and thought about doing it when I was working on the .Net version. I wrote a framework for dealing with these languages that could easily drive net, desktop, and device apps. As I said in a previous comment, though, the project ran away with itself, and I tossed it.

One app works with the OS X Stickies thing. I love Stickies. I *need* Stickies. I have ideas throughout the day, and Stickies is the fastest, easiest, and most reliable way I have to jot them down.

It wouldn't be difficult with today's nifty web tech to build an online Stickies app, but I want my Stickies to work all the time - I might be somewhere without a net connection, but my ideas continue to come. A desktop app is how I prefer to handle those situations. I know there are *always* ways around it, but this, for me, is the right choice.

I also don't like the idea of having so much of my creative work stored online. The blog is one thing - it's been archived a few times, and I have all the posts saved locally.

Stickies, though... if something happened to the data store on the other end and I lost 'em, it would be bad, bad news. I know we're just talking about Stickies here, but that ought to give you an idea of how important they are to me.

I regularly backup my Stickies database, so that's another bonus. I have a lot of control over it. A web app could archive the stickies and hand 'em over in some archival format, but, again, I don't want to leave it in the hands of a web app.

I might make an exception if *I* wrote the app, but I'm not going to write it. The functionality's already there locally, I like it, and I spend most of my time on my Mac, so it's convenient.

For the language apps, it's partially that I don't want to be without them should I be sans net, but it's also that, for me, it'd just be much easier to code as a desktop app.

Fancy dynamic web UIs have gotten easier and easier to create over the years, but I still love the speed with which I can create desktop apps.

So, in the Roryverse, there's a time and place for each type of app. For the stuff I'm working on now, the place is the desktop. It's where I prefer to be at the moment.

"Didn't Ray Ozzie say, as recently as last week that Desktop software is dead, and 'long live the web' ???"

Dunno... but if he did, I wouldn't have registered it after all the times over the years people have said that.

There's a lot of giddy excitement over Web 2.0 and the connected world and ditching the desktop, but we're simply not there yet.

There are many place without wifi. Many places where wifi goes down. I like to use my laptops on flights. I prefer to keep my creative work locally. I do a lot of video editing, and, although there are some very, very, *very* simple online video editing apps, none of them come at all close to the Final Cuts and Premiers of the world.

We need more bandwidth, more speed, more coverage, and less hype.

I'd love it if I could carry around a paper-thin terminal. I have no doubt that many apps would let me keep my creative work at home. I believe there'll be a time when my video camera will be able to hook into some high-speed wireless net service that pulls the files and dumps 'em in a personal repository somewhere out in The Cloud, and that I'll be able to edit that video with my high throughput net pipe, and that I'll get to use someone else's rendering farm to process my video much faster than I could do locally, but...

We're not there.

For the time being, the web doesn't suit my needs, nor does it suit my preferences.

I love OS X. I need my machine and local editing software for video. I need my machine for making music.

When the net can offer an equivalent experience, I'll consider it.

When it can offer a *better* experience, I'll switch.
April 25, 2008 2:19 PM
 

Chris said:

"One app works with the OS X Stickies thing. I love Stickies."

google.com/ig/directory?type=gadgets&url=www.google.com/ig/modules/sticky.xml

I might be somewhere without a net connection

gears.google.com

There are many place without wifi.

http://nextelonline.nextel.com/NASApp/onlinestore/en/Action/DisplayPlans?filterString=Individual_Plans_Filter
Broadband wireless with Sprint PCS is $59 a month for unlimited bandwidth. You can use broadband internet from anywhere.

I don't know what they have up there in Seattle, but it would surprise me that LA is that much more advanced than Seattle, with Microsoft and all the tech companies there.

I think the filter key for this blog is to limit your post to 1 or 2 single links.

Scratch that, 2 were filtered. So ONE, ONE single link makes it past your askimet or whatever.

BTW, if anybody is wondering. I compared and Washington Mutual is way better than Bank of America. I got a referernce too. I had to open both personal an LLC US bank accounts today. No fees on business transations at wamu. No fees for anything plus you get a free business debit card, and they have checks with carbon copies.
April 25, 2008 5:09 PM
 

Chris said:

http://www.flickr.com/photos/8606487@N03/2441300661/sizes/o/in/photostream/
Here is a pic, in case the price is different for your zip code.

It's $59 a month for broadband  anywhere, and then the cheapest PCS adapter is $49 after the discount
flickr.com/photos/8606487@N03/2442129744/sizes/o/in/photostream/
April 25, 2008 5:15 PM
 

Yuvi said:

Well, I was right. Yipee!

LINQ might be somewhat dangerous, but it is darn addictive ;) I can't code without LINQ now. But then again, maybe it's because of the type of code I tend to write (Statistical, with lots of filtering 'round).

Express products are cool - I use 'em! (Can't afford the real one:)) You basically get 'every' functionality you can think of, except, Add-ins. Even multi-targeting :)

Also, the marketing team (again) changed the name from VS.NET to VS2008. Actually, it was changed at VS2005 itself. Trivia.

So, do try it out. It still won't give you native look and feel apps on the Mac though :(
April 26, 2008 8:31 AM
 

Steve Cholerton said:

Great article.  Personally I'm working with REALbasic quite a bit now and while I can't disagree with anything you have said, it is easy to use, fast and makes Cross Platform  applications which you can develop on the Mac.  

Not much else available that does that unfortunately.

Cheers - Steve
April 27, 2008 5:35 AM
 

Chris said:

"Not much else available that does that unfortunately. "

There's java. But with the new parallels for Mac, you don't really need to code Mac apps anymore unless you really really want to, or unless you need to access hardware.

The new parallels opens your windows apps in mac windows. We had it in our office. I still have the parallels license, though I sold the computer after a zero format.
April 27, 2008 2:20 PM
 

Cliff said:

As a developer I spend a lot of time on my computer. The result being I notice the difference between Web 2.0 and desktop apps. What may be a subtle difference to some is a very painful distinction to power users and engineers who are accustom to their desktop environments. When I here talk like Web 2.0 is killing the desktop it just sounds "pie in the sky". As Rory points out there are too many things you can't do well in even the savviest Web2.0 framework. Video editing, GPS navigation, acceleration detection, to name a few. Then there are the other subtle issues like the network which people tend to forget until it leaves them. Some web apps actually take advantage of local persistence to work around network flakiness but guess what? Once you start caching locally you slowly open the door to platform awareness.

Considering Parallels as the end-all solution to Windows Mac compatibilities is also not accurate. I love Parallels and it does an awesome job at tackling Windows requirements but I still notice the subtle differences which over time are amplified. I don't want to start my VM just to launch a power point that doesn't run locally because of some Active X control or embedded Flash object. I don't want to keep my VM running especially if I use other heavyweight software like an IDE or a video editing package or both. I don't want  to suffer the pain or needing to launch and bring down my VM all the time. And finally I don't want my favorite app locked up in the Windows VM. I'd like it to float freely in OS X  where it can interact transparently with other Mac apps.

I'd love to live in a world where you could push everything from a central server but that just doesn't exist today. Plus with other innovations surrounding p2p you really can never say Web2.0 and client server is the be all end all.
April 28, 2008 6:50 AM
 

Chris said:

"Once you start caching locally you slowly open the door to platform awareness. "

Not if you use Adobe Flash or Flex. It's all managed for you.
There is the issue of AIR on Linux, but that will come soon enough.
http://labs.adobe.com/downloads/air_linux.html

Adobe will continue to flatten Microsoft because of the following issue:
digg.com/tech_news/Bill_Gates_Disdain_for_Open_Source_Even_in_Retirement_2

""There's free software and then there's open source," he suggested, noting that Microsoft gives away its software in developing countries. With open source software, on the other hand, "there is this thing called the GPL, which we disagree with.""

Bill drove the idea that Linux is evil into the mindset of every single person at Microsoft. He said it again and again, and so did Ballmer.
Thier hatred of GPL has in fact been the reason that platforms like silverlight will never take off. Moonlight is not going to be any more successful than monodevelop was. Under manned and underfunded.
Adobe products are professional and functional across the board.

When you can make AIR apps that work on all 3 platforms seemlessly watch the hell out. I'll be throwing away those MSDN pro subscription discs for sure.

The path of least resistance wins every single time. I don't want to make applications that resist a certain platform for the enjoyment of Bill Gates. Most people don't.
That being said Real Basic is a good platform. It's just not as lucrative or money oriented as the cloud platform. As I said, great for internal business apps across platforms. Java is too!
April 28, 2008 12:13 PM
 

Rory said:

Chris -

"Broadband wireless with Sprint PCS is $59 a month for unlimited bandwidth. You can use broadband internet from anywhere."

Yeah... I had Verizon's service. It was cool, but there were actually many places where it wouldn't work. Where it *did* work it often switched into a low-speed mode. True broadband speeds were only available within some city centers.

The Sprint service might be different, but it's not something I want yet. There can be all sorts of reasons for outages. If I'm working on something, or if I need to get a document or whatever, I don't want to risk being cut off because of an outage.

I realize that there are plenty of wifi hotspots all around town. I could pull over at one of them, hook up, and take care of business, but... it's still not what I want.

My wants are specific - there's no gray area:

1. A native development tool for OS X that does everything properly - some tools limit functionality so you'll have screwy menus and stuff like that. I want native widgets. I want native everything. I want a tool built *for* OS X rather than a tool that *can* work with OS X. I realize that RealBasic compiles for three platforms, but their primary platform has been, and still is, OS X. At least that's how it looks.

2. Desktop apps. For the kind of work I do, and for my storage preferences, they simply make the most sense. I want my work stored locally. I want the apps for those docs/movies/etc. to run locally.

I'm not saying web apps couldn't address *some* of these preferences, but there's no getting around my preference for desktop apps for the kind of work I do. And, because I *want* desktop apps, web apps are fundamentally incompatible with my requirements.

So, it's not a functionality thing - it's a preferences thing.

"I don't know what they have up there in Seattle, but it would surprise me that LA is that much more advanced than Seattle, with Microsoft and all the tech companies there."

I'm back in Portland, but I know what you mean. I thought the same thing, but it's not really the case. At least it wasn't back when I was using a similar service.

Seattle had broadband coverage, but Portland didn't, and Verizon was *really* vague about their plans to roll out wider broadband coverage. Microsoft paid the bill, but even then, I didn't care much for the service.

"I think the filter key for this blog is to limit your post to 1 or 2 single links."

I think it'll let you do two links, but there keywords that'll contribute to the overall spam score. I'd have to go back and look through your comment (it's in the system - it just isn't published) to see what the triggers were.

I had to do this because the spam was getting out of control. I hate it, but the alternative is requiring everybody to register to be able to comment, and I hate it when sites do that. I don't want to do that to Neopoleon readers.

When I move to Graffiti, I'll come up with something better. I coded a great CAPTCHA system for .Text that was pretty unobtrusive. Most of the time, users didn't have to do it - it was only when certain conditions were met, and it worked really well. I might try to do something like that for Graffiti.

"BTW, if anybody is wondering. I compared and Washington Mutual is way better than Bank of America."

You know... any other day, I wouldn't have cared at all about this, but your timing is good. Like, uncanny. A friend of mine just moved here from North Carolina, and she was asking me which banks around here were good. Actually, she was asking which were the least corrupt, but it's basically the same thing...

I'll tell her about Washington Mutual.

There's serendipity for you...
April 28, 2008 1:36 PM
 

Rory said:

Yuvi -

"Well, I was right. Yipee!"

Woo-hoo!

"LINQ might be somewhat dangerous, but it is darn addictive ;) I can't code without LINQ now. But then again, maybe it's because of the type of code I tend to write (Statistical, with lots of filtering 'round)."

I could see it being useful for what you're doing, then.

What worries me a little is that there are people who're going to write these queries for simple iterations over collections. I like vanilla collection manipulation code - I think it's pretty. It's graceful and elegant. LINQ, as powerful as it looks, doesn't actually look *good*.

I mean, it looks like things could get complex enough that the code could become virtually unreadable.

'Course, that's a potential for *all* code - depends who's at the wheel. And that's also why I think LINQ could be just splendid, but only when someone truly learns it. Otherwise, it might wind up looking like SQL written by someone who doesn't know much beyond simple queries, inserts, updates, and so on - SQL with tons of weird hacks to get something to work that would work with far less code if the coder knew about, say, a single keyword.

So, tread carefully, Young Yuvi. You're a smart kid. I don't doubt you'll get this stuff figured out.

And when you do, you can teach me all about it :)

"Express products are cool - I use 'em! (Can't afford the real one:)) You basically get 'every' functionality you can think of, except, Add-ins. Even multi-targeting :)"

Aright, aright... I'll give 'em a chance :)

"Also, the marketing team (again) changed the name from VS.NET to VS2008. Actually, it was changed at VS2005 itself. Trivia."

Yeah. I know. I hate it. I refuse to acknowledge it. There are so many name changes in MS products that you'd think they were all being shuffled around inside witness protection programs.

If I need to refer to specific functionality, I'll use the "real" product name, but when referring to VS in general, and to avoid any confusion with VSs of the past, I write VS.Net. I feel weird while doing it, as I know it's not current, but I dunno how else to refer to the .Net line of VS products.

"So, do try it out. It still won't give you native look and feel apps on the Mac though :("

That's true, but given how tightly integrated Parallels is, I wouldn't mind *too* much. I still run quite a few Windows apps under OS X. It's not even remotely my ideal solution, but it works, and I only do it when there isn't an equivalent app for OS X, or when there's a similar app, but it doesn't quite meet my needs.

But I'm not done with development for Windows. I'm going to migrate this site to Graffiti when I stop being intimidated by the amount of effort it's going to take, and I'm going to need ASP.Net for that.

I'm only branching out into OS X - I'm not leaving my favorite dev tools behind :)
April 28, 2008 1:47 PM
 

Rory said:

Chris -

"There's java. But with the new parallels for Mac, you don't really need to code Mac apps anymore unless you really really want to, or unless you need to access hardware."

There *is* Java, but it sucks on OS X now.

Back when Apple put together the shoddy, buggy Java Cocoa wrapper, it showed a *lot* of promise. It's what I used several years ago when I wanted to get things done.

I've always liked Net Beans. More or less, anyway. It was sluggish on every machine I had, but it *did* work. Plus, as far as free IDEs go, it's impressive. Even as far as commercial IDEs go.

I haven't even checked on it recently. Wondering now if it still plays nicely with OS X.

But, to get back to it, Apple basically abandoned the Java Cocoa wrapper, which is too bad. I haven't read up much on why they did it, though I imagine they'd cite the bugginess as part of the reason. That'd bother me, though, as I'd *expect* it to be buggy. When I was using it, it was in its infancy. I thought they'd push forward and improve it, but... well, they didn't.

So many problems could have been solved that way. From the user point of view, it was the best desktop Java implementation I'd ever seen. It wasn't perfect - didn't *quite* feel native - but it was close.

Apple also could have developed a highly efficient VM for OS X. Hell, they may have already done it. Again, I haven't checked up on these things in a while.

But I'm thinking something in the direction of the AS400 (iSeries - whatever they want us to call it now) Java bits. Websphere frustrates the hell out of me, but the Java implementation itself was excellent with options to compile right down to native binaries (if I recall correctly). They even gave options to set just how close to native you'd want to get, depending on various needs and conditions.

If Apple did *that*, they'd have their .Net solution. They'd have their quick 'n easy, but powerful dev platform for devs who want to work in a managed world. And, with the freakishly huge Java community, with a *good* Java Cocoa wrapper, it could become the premier dev platform for OS X.

Having the option to compile down to native binaries would be a compelling feature to get people coding for the platform. Yeah, you'd lose the cross-platform nature of Java, but that's a pain in the ass to get working, anyway. Anybody who's tried to do it has run up against a few walls, or had to implement some not-so-elegant workarounds.

If you *did* want to try and write a cross-platform app, you simply wouldn't compile it down. You'd have those choices.

You know... I just realized that there might already be tons of Java tech that's come out over the years that does all of this. The last time I did any serious Java dev work (as opposed to the occasional fun little app or utility for myself), it definitely wasn't the case, though there *were* some projects heading in this direction. Maybe they finally made it...

"The new parallels opens your windows apps in mac windows. We had it in our office. I still have the parallels license, though I sold the computer after a zero format."

It is pretty cool. After having used VirtualPC and VMWare for work, I found Parallels with Coherence mode turned on to be... well... it looked like magic. Trickery.

It's fast, it works, and, for some reason, Windows is more stable inside Parallels than it was on my Windows machines.

The only thing I hate is that Windows still does that effing irritating auto-update crap that forces me to reboot. I fully intend to reboot the thing, but I HATE the dialog that pops up over and over and over and over and over and over, telling me that it's going to reboot in five minutes if I don't click some frakking button. It's insane. I turned off some auto-update functionality, but it still pesters me. It's to the point that I'm probably going to turn it off entirely. I don't access the net with it (much)... I don't install many apps... it's running inside a safe, contained environment... I'm not too worried about security issues. I back up my files to the Mac, so all I'd have to do is reinstall Windows, and a simple XP install takes very little time on a modern, speedy machine.

But, when I use it, Coherence blows me away every time. I never get tired of it.

I have about an hour of interviews with Ben Rudolph of Parallels in which we discuss the app, the tech, the future... I've been meaning to post it, but keep forgetting. It took a while to get permission to post it.

Maybe I'll get that out tonight...
April 28, 2008 2:08 PM
 

Rory said:

Cliff -

"What may be a subtle difference to some is a very painful distinction to power users and engineers who are accustom to their desktop environments."

Solidarity.

I'm going to write you so we can schedule our talk - I got your voicemail, but I don't really do voicemail, so when I get it, I don't act on it. Chalk it up to another Rory mental quirk.

I want to do it, though, and have wanted to do it for a while.

It is time, Cliff.

It is time.
April 28, 2008 2:11 PM
 

Richard Tallent said:

Did anyone mention Cocoa# yet, the Mono bindings for Cocoa?

http://www.mono-project.com/CocoaSharp

I haven't tried it yet, but since my "real job" is ASP.NET (mix of VB.NET and C#), that would be my first stop.

I even hear there's an IDE or two out there for .NET... ;)
April 28, 2008 11:39 PM
 

Mo said:

@Chris:

I look at the stuff I run right now. All of it has some kind of web-based equivalent, and yet I use the desktop versions. Why? Because the web-based versions really do suck. The “age of the web application” isn't here, and it won't be here. All that's happening is that desktop applications are being built on the web service APIs instead of being standalone data islands. Web apps let you access stuff when you're out of your comfort zone, but when you're there, there's no point in suffering unnecessarily.

This new revolution that's going on isn't that the Web is taking over the desktop, it's that _syncing_ is taking over the desktop. If anything, the desktop is taking over the web. If I had to do everything within a browser, I'd go insane.

And, to another point you raised: if you really think that writing a Windows application and running it in Parallels is in any way, shape, or form, remotely equivalent to running a properly-designed native Mac app, please do not ever write any software for Mac OS X. Almost every Mac app I run (notable exceptions are anything from Adobe or Microsoft) looks, and more importantly feels, fluid and graceful: there's no resistance in using them. Running the equivalent applications on Windows is nothing short of a painful mass of poorly-designed interfaces which give the impression of being designed specifically to make life difficult for the user.

May 6, 2008 3:37 AM
 

Danny said:

You are so full of yourself.

So AppKit isn't a 'proper' framework? Just about every modern Mac app available today was written in Cocoa and that 'non-proper' framework and that funny-language with header files and I don't see many complaints.

This post (and most of your posts actually) stink not only of your total ignorance of the subject, but your laughable attempts to justify everything you say, based on misinformation. I don't like RB, but I used to use it, and it's not nearly as inconsistent as you make it out to be - class methods exist for all the operations you mention and have done for a while; this was an IDE developed as shareware by one guy back in 1997.

So rather than even attempt to understand Cocoa, which it 100% free and supported by Apple (which is the single best application framework available on any platform btw), you decide to try a proprietary IDE and language which was based on VB6, which has virtually no community, which has no chance of utilizing any of the latest and greatest OSX technologies, is buggy as hell and costs nearly $500. Wow, your logic is astounding!

Oh and I love this:

".Net or any other platform out there with a proper framework, much of it is self-documenting."

Have you actually seen an Objective-C function call? That's self-documenting code, baby. And .Net is fundamentally flawed as a development API because it's a reaction to the crumminess of Win32. It's the flawed design of Win32 all over again, just with objects and delegates (function pointers?! ha! Cocoa has REAL delegates).

You're just a script kiddy aren't you?
May 17, 2008 3:10 PM
 

Rory said:

Danny -

"You are so full of yourself."

Yes.

"You're just a script kiddy aren't you?"

I've been coding since I was five. I was born in 1977.

That's all I have time for today.

Oh, and to be absolutely clear, you're a douche.
May 18, 2008 7:57 PM
 

Jonathan said:

You are being way too generous with RB. It's a joke, developed by people who are evidently in WAY over their heads doing compilers and frameworks. Their idea of a thread is cooperative multitasking a la 1985, except even dumber: "threads" yield when they happen to reach a loop iterator. Jesus. Plus, it's so buggy as to be nearly unusable, especially on linux.

I made the mistake of starting to write a quick project in RB, initially enamored by the cross-platform schtick, and now I wish to God I could go back in time and write it in a proper language, developed by people who knew what they were doing.

Right now I'm trying to figure out how to work around the fact that RB has corrupted my project to the point where menu items aren't being connected to their handlers.

I know it's tempting, but messing with RB for anything that takes more than 4 hours of time is a fools errand. You just dig a deeper and deeper hole, and RB can't get you out of it.
June 11, 2008 9:16 PM
 

typing special symbols said:

June 21, 2008 3:49 AM

Insert foot in mouth here:

(required) 
(optional)
(required) 

About Rory

I *own* this site, you loser.