JWZ makes no sense what so ever. I'm sure he's really good at some kind of programming, or at least that he once was, but he often talks from what he thinks is a position of insight, while actually he's quite ignorant.
The first commenter's explanation of why OpenGL and OpenGLES differ is a fantastic example. JWZ simply never bothered to learn enough about the subject in the first place, but comfortably speaks about the "defining characteristics" of it.
Reminds me of a similar hubbub when he proclaimed that CSS is bullshit and decided to stick with table-based markup, this because CSS (in April of 2003), required a span inside of a h1 to replace his table-soup (to mark up just a headline), when he'd prefer just a h1. http://jwz.livejournal.com/193866.html
Being talented in programming is simply not a binary situation, which JWZ shows quite well: he might be really good at some things, I really don't know, but he is also really ignorant in some of the other things he rants about with confidence.
>Being talented in programming is simply not a binary situation, which JWZ shows quite well: he might be really good at some things
Basically this is saying that JWZ, or any other programmer, is as good as the APIs he memorized and has similar shelf life.
The point JWZ is making, and I think most developers past a certain number of years would sympathize with, is that a well designed API should just make sense to a decent developer. It should follow some common sense and accepted conventions that fit your past experience and allow you to figure it out the way travelers find their way around a well designed airport, or a good mechanic approaches a new engine (before software messed these up too..)
Of course it's always possible to just send developers to RTFM in order to do every minor task. If that's the criteria, all APIs are equally great as long as they have some docs, and software developers are not architects or mechanics or chefs, but well paid employees at a fast food franchise, cooking your McMuffin per the updated company manual.
I agree, but sometimes there are really good reasons to change, or evolve, an API. As with the case of OpenGL and OpenGLES in this very example.
The problem is that JWZ doesn't seem to consider this possibility at all; his seemingly shallow experience with OpenGL is enough for him to assume a position of insight, and his obvious conclusion is that some incompetent buffoon must have been in charge of the API which he does not feel familiar with.
Being great in any field of programming ought to teach you that things are rarely that simple. I simply think that ranting about things which you really aren't that familiar with is a trait that doesn't fit a purported expert in the field — or a purported expert in the field should be able to recognize the things he/she isn't one in.
This kind of griping is what I find myself doing when I don't understand or know something very well. Once you get to really know it, you can put all those complaints out of your mind and focus on getting stuff done. Learning is a process and at least for me, a series of complaints and arguments with myself, trying to reconcile what I observe with what I think should be there, is an important part of the process. If you keep constantly jumping between platforms and APIs, you are always going to compare them at a deficit to what you do know.
True but it only goes so far. For instance, I spent 5 years honing my PHP craft. At the end of that time I was pretty good at it, but I still had to look up whether it was haystack, needle or needle, haystack every time.
Good observation. I know barely anything about ObjC/Cocoa, but if I was pushed to provide an opinion on them I'd start griping about how awful the verbose mixed case method names and prefixes on everything look. Which obviously isn't hindering the other people making fantastic iPhone and Mac applications.
I do think he had a point on the sudden about-face as to whether HTML should specify page appearance down to the pixel: http://jwz.livejournal.com/147024.html
No, they got some intern who was completely unfamiliar with the old library to just write a new one from scratch without looking at what already existed.
It's 2010, and we're still innovating on how you pass color components around. Seriously?
Actually, in the first example, the MacOS code looks like the API designed by clueless interns that don't get OO. It's the same classic mistake of passing in an X and a Y instead of a Point Object from the 1st generation Java GUI library. The iPhone code does the right thing. Instead of passing around un-encapsulated data, pass around Objects instead!
Poor as it is, I think the original intention of the Mac version was to avoid buffer overflows. You can potentially screw up with the iPhone code by doing:
that's bullshit. why is the right thing to encapsulate your data into an object before passing it around? that's your opinion on what's right, I guess, but I don't think it's the right way.
I suppose for some idiosyncratic value of "right."
In the Point example, the API that respects encapsulation would remain the same between the 2D and 3D versions, along with any code using it. The API with un-encapsulated data would have to change at every single place in the code where a Point was passed.
(In other words, the implementation details of Point have leaked out into the system at perhaps 100's of places. Avoiding this and decoupleing ourselves from implementation is precisely why we have encapsulation in OO.)
How this applies to color is left as an exercise to the student.
How this applies to color is left as an exercise to the student.
This is what I'd like to hear. Cocoa has NSPoint, which is exactly what you're talking about, for points. And NSColor is already a kind of the basic object for colors. Do you really need more primitive types for this?
What object would you pass to NSColor to generate a color from HSB components? Wrap them to NSHue, NSSaturation, and NSBrightness? Or generate NSHueParameters first?
(Please note that I don't intend to argue, I'm asking for a better solution. Thanks!)
Your post is disgusting and you are a disgusting person. I'm not sure if there's a purpose to your post, other than to call JWZ stupid. Do you feel better about yourself now?
You say he's ignorant? Have you considered that you are the one who is ignorant? The last time I checked, which was only a few minutes ago, JWZ's post was about his experience writing an iPhone port of an application he had written. It was not a hyperrationalist treatise on the differences between the iPhone and Mac OS X api's. What, do you expect people to be some kind of expert on 3D graphics before trying to get anything done with OpenGL? It's not like he works in the video games industry. It's not his job to read everything about OpenGLES and understand it fully before trying to use it.
Speaking of ignorance, you seem to be ignorant of the fact that, regarding his rant about CSS, you're wrong and he is right. I suppose being talented in the spotting of ignorance is simply not a binary situation, which you show quite well.
What other things are you ignorant about? You're ignorant of how arrogant you are. Well, you might not be ignorant in some of the ways you're arrogant, I really don't know. You're also ignorant of the fact that when somebody complains about an API being different than they expect, it's not insightful to say, "Oh ho ho, you're not well educated on that!" Of course he's not well-educated on the subject! That's the reason he had something to write about!
Oh, did I just say "insightful"? No, wait, you said it first. So he's not speaking from a position of insight, is that the problem? What do you expect, do you expect every blog post to be some insightful commentary to help the reader understand the crazy world we live in? Maybe he was just writing about how his day went. You seem to be ignorant of that, too.
The first commenter's explanation of why OpenGL and OpenGLES differ is a fantastic example. JWZ simply never bothered to learn enough about the subject in the first place, but comfortably speaks about the "defining characteristics" of it.
Reminds me of a similar hubbub when he proclaimed that CSS is bullshit and decided to stick with table-based markup, this because CSS (in April of 2003), required a span inside of a h1 to replace his table-soup (to mark up just a headline), when he'd prefer just a h1. http://jwz.livejournal.com/193866.html
Being talented in programming is simply not a binary situation, which JWZ shows quite well: he might be really good at some things, I really don't know, but he is also really ignorant in some of the other things he rants about with confidence.