This is what I don't understand. How can so many people on Slashdot simultaneously crow about the defeat of music copyrights while at the same time upholding software copyrights via GNU?
It's not like the GPL could exist without copyright, folks. Your work, your right to choose. If you cut a song, you can decide who listens to it, and who profits off of it. If you sell to a record company, YMMV.
There's nothing more to it than that! People seem to think music should be free as in speech. It is. People think that music will be free as in beer, it's not. Nor will it ever be totally free. Recording an album costs money. If the author chooses to give away their music, then great. If not, you have to respect that. If you ever work on an open source project, you're doing the exact same thing.
For all this talk of the record companies wanting their cake and eating it too, all I see is a bunch of people who seem to think it's morally right to let them defy someone's copyright, and so they think it should be legally allowable.
This is hipocracy. Don't fall into it.
So, in that light, this PlayFair thing is bad. Yay, congratuations. You've.. umm... championed the end of iTMS, the only decent music store we've seen to date that has a reasonable selection.
Thank you. You've... really... released my cruel iron fetters and sent me into blissful, albeit musicless, freedom.:P
I can see why people prefer a trackpad or a trackpoint. Everyone just has to choose one or the other and deal with it.
What pisses me off more is the ceasless "one button mouse" argument. It makes me angry because it is just so mindless. It's not like other machines come with a good mouse either. Inevitably, anyone who doesn't get a nice MS or Logitec optical mouse immediately goes out and buys one.
... but I get a bit tired of this. On a desktop, use whatever mouse you like best. On a laptop, just USE THE FSCKING MODIFIER KEY!. When you're using that touchpad, your hands are already all where they should be.
It's really, really, really not that bad. Give yourself 20 minutes, you adjust. Hell, I'm used to a touchstream, which is even crazier than your whizbang mouse, and I can adjust.
I'm perfectly happy to suffer ever so slightly with a one button mouse and a modifier (or long) click. My alternative is to suffer greatly with a windows laptop (god noooo!) or maintain greatly for a less attractive linux setup (that may or may not work graphically, yes Xfree is pretty good these days but it still does happen, even with new hardware).
And in the final-worst-uberbad-case, PLUG IN A MOUSE. If you're doing mouse-intensive stuff like gaming or visual GUI construction, you probably would be more hung up by the touchpad itself, rather than the lack of extra mouse button.
Wow, I'm surprised that we're still speculating about the reasons why Apple isn't more popular. After 20 years, it should be pretty obvious. I'm going to make myself a target for flames, but I feel my observations are pretty accurate.
They were accurate, about 5-6 years ago.
Cost/Power
I believe your story, but only if your friend put it together from the ground up. Otherwise I'd say after tax it'd probably be $1600-$1800, unless they got some pretty steep discounts (possible) or had some extra hardware lying around (more likely). Apple competes with companies that sell completed systems. Also, the $1800 (mac) includes a nice, quality flatscreen, a good OS, a processor that when instructed correctly can meet or beat the other P4 in terms of performance (altivecs completely blow the water out of the competition, but not many programs use them). They also get all the easy preconfig that you don't get with linux or windows.
At the higher end of the mac spectrum, not much comes close (for equivalent prices). At the low end, they stop about midway into the PC market. Honestly, I'm fine with that. I've owned 2 recent macs, and they've been good machines. I hit a hangup with my iBook, but Apple has since begun a program to rectify that, and it was only for portion of their distribution.
Compatibility
Well, considering that OS X has Office, all the adobe products, some of the best video editing software available commercially, the outright amazing iLife suite, most every linux program and freebsd program you could want, a working X11 implementation out of the box that integrates with the windowing system (unlike, say, Exceed), and legacy mac apps compile under carbon, AND emulation packages, I'd say that if anything, Windows is the one with compatibility problems. Windows once had much more software, now it only holds the 'more' on a few categories, like games.
Games are fun and all, but I just can't justify buying a computer just for a gaming box. It's a waste of money when I could get an XBox, PS2 or Gamecube at a fraction the cost and still get much of the fun.
* Support For many years Apple offered only a 1 year warranty, and only did warranty repair centrally. They also have a habit of charging full price for point releases on their system software. I have a relative who bought a PowerBook that ran slow with OS9, and crawled with OS 10. The later point releases of OS 10 might have been faster, but it took years, and in that time she vowed to buy a Windows machine. When I say slow, I mean, click on a menu and 60 seconds later it drops down - No lie.
Firstly, I'm not sure I believe this, but anyone could troubleshoot a lack-of-ram problem there.:\ Even so, this is a multi-point. Firstly, Apple now offers many warranty plans. This is not an issue anymore, and hasn't been for quite some time. Second, Apple charges full price for OS X, but you don't mind. Know why? Because the OS release are, to put it bluntly, bad assed. Once we passed into 10.2 country, Apple was no longer "making OS X what it should have been." 10.2 to 10.3 was honest-to-god feature add on the scale that I've never seen with an OS before. The underlying system and the windowing system both leapt up a notch in power and speed. If Apple can do another upgrade as good as the Jaguar and Panther upgrades, I'll cheerfully pay for it again.
Here is where we need to work on what ESR was talking about. People don't realize that well designed UI and integration is worth something! Sure, CUPS may be the shizzle, but if you can't configure it without major headaches, then it's worthless. We've had folks deliver software to our shop as a flat directory of source files. No build instructions, no makefiles, no ANYTHING. Just the code. How useful is t
The problem is Io doesn't really fill the niche ObjC fills. ObjC can accomplish both high level glue coding and low level systems programming, and in that capacity it excels. Especially with the addition of C++ stuff, it's really quite good.
Io is very interesting, but it's simply not at the performance level you'd need to attack ObjC's position. The only language I've seen that comes close to the C triplets is OCaml, so far. I'm sure there are others, but OCaml really is disturbingly fast.
Of course, a vertical learning curve and recalcitrant type system kinda make it less than optimal.
Any consultant that said this to me would find themselves out on their ear. To reuse the stretched and often improbable bridge analogy, it's like building bridges until you get one that doesn't fall down.
Sir, I submit you are turning away potential talent. Test-First development is a very positive trend that is spreading throughout the developer community for a reason.
The whole point of test-first development is to add an extra layer of testing and confidence to the whole system. Test-first should never replace any other part of the software development process.
Writing to the test is only as good as the test framework, and usually that's "enter this, expect that". Static, known inputs. All you're made to do is tweak the code until it makes the light turn green, but the stability of the rest of the system is still not necessarily sound.
If you are testing all your edge cases, and you are testing a decent common case, then it fairly comprehensive. More importantly, this practice forces a developer to consider the method they are about to write very carefully before they write it. Even more importantly though, they are a damn sight better than the common cout << "Debug Message" << _member method that so many people use. Tests may not be as flexible as a human mind, but they can happen fast and they can provide an extra level of checks as you refactor code.
Heck, it might become worse, since XP encourages you to write code now now NOW and measure productivity by "velocity", so you may just throw something in to special-case something for that system just to make the damn light turn green.
I believe you are misinterpreting XP. Considering all the extremist propaganda of both sides, this is a pretty common mistake. XP is not about rushing software. It's about steering the development process and having frequent milestones so the progress can be judged. That way many mistakes will be caught quickly and not allowed to paint the team into a corner later.
Tests are great, they're pretty much the basis of the scientific method, but you have to have good tests, and good tests are something that are systemic, and built in to the compiler.... That's the sort of test that the XP crowd seems to disdain, because it's too much "bureacratic structure" and "overhead".
Ahh, and if all errors were type errors, I'd agree with you 150%. In my experience working with strong, dynamically typed languages, most errors are not type errors, but logic errors. Maybe they were miskeys, or maybe my brain was fogged, or maybe my design assumptions were bad. Static type checking is a grand thing, but any C++ or Java programmer knows that it will only catch certain classifications of bugs.
The "XP crowd" is so diverse (and fractious) that all I can do is say Kent Beck seems to suggest that good tests (as you go) will tend to reveal type errors early. Part of the reason XP espouses pair programming is to aid in the design of comprehensive tests.
Hand-written tests are basically hand-waving, and most amount to regression tests which only ensure you won't make the same exact mistake twice.
Hand-written tests are not hand-waving. They are just another layer of checking that should go into any project. They assist in refactoring, easy maintenance, help document the system (by showing how a method is meant to be used) in code (which is useful), and they force programmers to really think critically all the time. How can more testing be bad?
By the way, thanks for mentioning the Io language earlier. It's very interesting.
People still use smalltalk. I wouldn't say that in this current world Pascal is much more popular than Smalltalk, although you could argue more lines are in deployment.
When you get down to it, the concepts pioneered by Smalltalk are still ahead of their time. How can I say such a thing? Well, watch our modern languages evovle. People keep taking stuff from Smalltalk, and languages are slowly glomming on more and more parts of it. Of course, the same could be said of CLOS. This is the path to language elitism, which no language currently deserves.
A safer statement to make is that the concepts these languages used were advanced, although the particular instance might not have been.
People don't keep digging up these languages out of pure stubborness. They keep turning back to them because they were good ideas, and they worked well.
There is a language like that. In fact, both C++ and Java borrowed several ideas from it. It's called Smalltalk.:) In Smalltalk, everything is an object. Objects talk to each other via methods. Smalltalk has a limited form of closures, can handle exceptions, and has double-dispatch.
As languages go, it's pretty awesome. It was well ahead of its time, anyways. Ruby (as another poster mentioned) also does some of this.
Smalltalk and Ruby are great if you're just working with components and assembling them lego style, sure. But what'd be really nice is to use a language that can do both high level coding and systems programming. Someone else thought of it. Brad Cox came up with Objective-C, which NeXT later expanded upon.
Apple is using Objective-C with the old OpenStep library as their primary development environment for awhile now. It's very nice, supports a lot of full features, has explicit memory management that is very flexible but also circumventable and tunable (using reference counting, but people have made mark-and-sweep extensions, both are not implicit like java though).
Objective-C supports late binding, weak typing, strong typing, static typing and dynamic typing, all in the same program. It can directly use C, so if you know C you're already 3/4 of the way there. The message syntax is slightly odd, but works out. Unfortunately, Objective-C doesn't have closures. David Stes developed a meta-compiler that turns Objective-C with closures into regular C (called the Portable Object Compiler) which might get you some distance if your work demands them.
ObjC can either use C-style functions, smalltalk style message passing, or a hybrid of both. It's a very interesting language. Apple added C++ extensions, so now in most cases you can even use C++ code (however C++ classes are not quite ObjC classes, and there are some caveats).
If you're looking for a language that splits the difference between Ruby/Python and C/C++, Objective-C might be your best bet. It's pretty hard to find an easy-to-use language that also provides a lot of performance.
It was probably modded funny because it's such blatent Perl-first-ism. Perl doesn't hold a monopoly on these things, perl does have a problem with readability, and perl does have many surprising flaws. It's really not the point here anyways. Perl doesn't really satisfy any of the (reasonably good) points made in the article, at least not in an acceptable fashion.
I didn't know this, and tested it. You're right. However, that isn't what I meant. Note I said it would try and link that code.
That code can do anything. That code can BE anything in a Cocoa app (the only kind that can run the InputManagers anyways) using PoseAs. You can make a special unsecure looking text field pose as a secure one.
However, this will not capture your keychain password or anything, only local key events.
Even if it didn't work for secure fields, what happens when you use an insecure field for passwords? Like, say, an FTP app, or a cocoa terminal, or an irc client. These passwords are recovered.
Cocoa apps are fundamentally insecure at certain things if they keep the functionality in Objective-C classes, because Objective C uses late binding. If you want to make the function more secure (say for copy protection) then you do what Omni does and make them tuned C calls (preferably inlined).
Even then, Folks at MacHack have figured out how to trach into Mach-O binaries and subvert functions. It's quite possible for an InputManager to corrupt the current binary so that the NEXT time you load it, it is no longer secure.
This is why the preferred method for handling privledged operations in Cocoa apps is to have a seperate, special binary be executed with UID 0. This binary has no ObjC symbols, is not SUID, and is not usually an AppKit app.
And I submit you have no basis for that assumption, other than an outdated idea notion that the processes should be separate in all instances. Isn't one of the points of Pragmatic Programming, Scrum and eXtreme Programming to eliminate the separation and make the code the design? Even old style development models a "capture" phase.
The idea that the process of making software and the process of coding should somehow be separate is old-fashioned. Even massive corporations like Lockheed Martin realize that the processes are bound together (although not every manager goes along with that philosophy very well).
We need to stop thinking this way. Software is not an engineering process like other ones, where designers design and then manufacturers go to work on it. People actually realize this these days, and it's slowly becoming an accepted fact.
The rest of your post I agree wholeheartedly with.:)
That's vaguely true, I guess. Take linux and OS X. Both are posix compliant. Both implement standard languages.
I tell you, as someone with experience in the field of cross-platform development, that that's about all you can count on. Don't believe me? The GNU community seems to, since the express purpose of libtool, autoconf and automake is to deal with things like missing syscalls, different shared library conventions (or the lack of shared libraries at all!), and different installation locations.
Why is it that everyone now says Linux is the baseline? As *NIXs go, Linux is actually kind of off in left field. All due respect to linux, of course. It's succeeded fantastically... but that doesn't mean that suddenly the baseline for cross-platform development. It's just a good target.
Note, I'm a big mac fan. Anyone need only look at my comment history to see most of my correspondence on Slashdot revolves around mac talk.
It's silly posts like this that make me sit back and laugh. If Mac users were so stupid, why don't they suffer all the nonsense of viruses, trojan horses and keystroke loggers? Seems like they made the right choice to begin with.
I generally assume people are equally smart on both sides of the field. Deciding, "Mac users are smarter" is a very bad idea. Most OS X mail clients just make it harder to run an executable from their mail. It's common sense once you realize the implications.
I think Apple has gone to great pains to make their OS easier on the novices. This is a Good Thing, both in the marketing and in the moral sense.
This only goes to further prove my point - you should have a license to use a computer. Incompetent users are just as dangerous as incompetent drivers, imho.
On the Mac side in OSX, the software update mechanism is easy to understand and dumb-as-a-monkey simple to perform. That's by design. It SHOULD be that simple. Otherwise you have joe open-mouth-breather computer user opening their machine up for attack, which hurts ALL of us.
A license to use a computer? It will never happen... and that is a good thing. Computers are out there to simplify our lives and give them new possibilities. They can perform these tasks much better when everyone is using them.
Instead of blaming the symptom (users getting virii), blame the diseases that cause these massive and expensive worms. Blame MS for their carelessness. Blame the worm writers for their lack of scruples. Don't blame the people caught in the middle!
Sheesh. You act like knowing how to use your computer properly somehow makes you more worthy of oxygen than the next guy. It's just a skill buddy. You do not suddenly become a better human being with whiter teeth, clearer vision and sweeter breath.
It's certainly very possible. They had a lot of sources in OS X, why use an outdated and probably slightly inferior one when they could work on a more modern codebase?
But even if it were true, there'd be almost no way to verify it.
You're not quite correct. Like I said, this was due to a troubleshooting problem. Your assertion is proven false simply because I had to learn this stuff to troubleshoot a problem with shared library compatibility problems.
What he's talking about is the.framework spec which Apple distributes most libraries with. They allow for versioning and multi-platform compliance, and also neatly handle keeping resources for a central library in one place. It's really quite pleasant, and it's extremely difficult to end up with conflicts. You request a library at a version release. It's possible to have multiple version releases installed (and usable in development) at once. If you upgrade, you can keep the old version for compatibility.
The rest of the *NIX development world would be much nicer if they adopted a similar scheme.
Standard shared object libraries in OS X are just that, and are subject to all the pitfalls normally found... ohh.. except one. Since Apple uses a two-level namespace scheme, you see name collisions less. Oh, and they do prebinding very aggressively.
It's pretty much a superior setup to the average linux world. But then, we paid for something besides just iCandy, right?
Show me an operating system that *doesn't* have ldd as a utility. Other than MacOS X. I know AIX, Solaris, Linux, HP-UX support that utility. I'm not sure about Tru64, but I'm pretty sure that it does, too. MacOS was the only operating system I had problems with with regards to troubleshooting "ldd" problems.
Show me a reason why OS X should have ldd when the superior otool exists. C'mon! To make you feel more comfortable? To make you feel more loved?
Dude, if you're a developer doing cross platform development, then turn around and complain how annoyed you were at not finding ldd, discontinue cross-platform development. If you can't even be bothered to check the unix rosetta stone for something that simple, then you're not the kind of battle-hardened, talented person that is required to do real cross-platform development.
Perhaps you were just porting? Still no sympathy. Learn your target platform. It's not even like it's hard anymore! You have libtool, autoconf and automake these days. Cross platform development is actually feasible these days, albeit difficult!
Well, that is in fact what I call good security. It's hard to break into a door when the door doesn't exist in the first place.
Even with services running, it's harder to break into a mac. Apple's security update scheme is extremely aggressive. This is especially true when dealing with holes in trusted services like SSH and Apache.
You can easily see who's related to who. I might note that Solaris is much further from what we modernly call BSD than some of the others you named. I won't speak of IRIX, but AIX is a weird kind of BSD variant, as is HPUX. OSX is very very close to FreeBSD.
Well, to actually implement a semi-global keylogger in OS X is trivial. You simply put an appropriate.bundle in ~/Library/InputManagers . No root required. Every subsequent program opened will (attempt) to link and run this code. Since.bundles can be versioned, you can even make a platform-specific version.
But then, it's not hard on Windows either.
The trick is in somehow getting the user to install it (usually by running a helper program). In this, OS X mail clients are extremely uncooperative. Pretty much every mail client (including Mail.app), is very clear about what you are getting (and doesn't hide extensions, that's a big one!). Further, when you try and take an attachment it gives you a clear warning of what you are about to do, and makes the default action to save.
So, you don't need root to do it, but fooling your users (especially without some kind of macro in the mail) is much harder on the mac side, because the users get more prompting on the proper response to untrusted email attachments.
No single specification can cover every case. Yes, Apple violates the HIG sometimes. So do other people. Unlike many other people, the Apple designers are currently on a roll.
Safari gets great reviews. People find it simple and intuitive. Usually, the Apple HIG are good. Sometimes though, an improvisation can be good too.
Apple doesn't want to lock their system in stone, just keep the experience reasonably consistent. This is in sharp contrast to the Windows world, where everyone uses the same GUI but applications vary radically in behavior.
A circular slider isn't going to ruin a user's day. An app that is almost impossible to figure out will.
Yeah, that's because it was so slashdotted that it couldn't support the @import directive. It tried to give you the stylesheet but you timed out. Usually, what he did (making the "ahem" class
tags display: none) will work just fine, and when the site is less slashdotted it should appear normal.
Actually, you lucked out. His default "Dark" style is hideous.
Is anyone else besides me tired of this?
on
BSD For Linux Users
·
· Score: 1
I don't think you are getting the fine point I am trying to make.
Your point was something along the lines of, "I am one of Slashdots many Gentoo zealots. Don't forget about us!"
Because otherwise your point was, "The author forgot about a very tiny part of the linux community that happens to be doing something else similar for very different reasons."
You didn't say anything else in your original post. You just picked a nit. If you pick nits, prepare to have your nits picked. I was kind of being silly about it, but I guess that was totally lost.
In any event, the Ports system is a big advantage for many things. Not the least of which it is the same everywhere, and it makes life easy when you want to synchronize. This was the author's point. This is a distinct advantage over what the majority of linux users use. Yes, Gentoo and your homegrown linux might use something. Hell, even MacOSX has gotten in on the ports craze.
That doesn't invalidate the point the author was trying to make, as you tried to suggest it did.
Again, this seems to be suggesting more than you want to say.
Is Gentoo then somehow authorative for Linux? Is it not a minority? Last time I checked, Debian, Redhat, and distros that used their packaging systems (or direct descendants thereof) were still vastly outnumbering the number of installed Gentoo bases.
See? This is nitpicking. It's taking something tiny and trivial about what you said and turning it around to snipe at you. The fact that one minority linux distro happens to use source compiles doesn't suddenly change the general state of linux, neighbor.
This is what I don't understand. How can so many people on Slashdot simultaneously crow about the defeat of music copyrights while at the same time upholding software copyrights via GNU?
:P
It's not like the GPL could exist without copyright, folks. Your work, your right to choose. If you cut a song, you can decide who listens to it, and who profits off of it. If you sell to a record company, YMMV.
There's nothing more to it than that! People seem to think music should be free as in speech. It is. People think that music will be free as in beer, it's not. Nor will it ever be totally free. Recording an album costs money. If the author chooses to give away their music, then great. If not, you have to respect that. If you ever work on an open source project, you're doing the exact same thing.
For all this talk of the record companies wanting their cake and eating it too, all I see is a bunch of people who seem to think it's morally right to let them defy someone's copyright, and so they think it should be legally allowable.
This is hipocracy. Don't fall into it.
So, in that light, this PlayFair thing is bad. Yay, congratuations. You've.. umm... championed the end of iTMS, the only decent music store we've seen to date that has a reasonable selection.
Thank you. You've... really... released my cruel iron fetters and sent me into blissful, albeit musicless, freedom.
That doesn't even follow. That is probably the worst attempt to make a straw-man analogy I've ever seen. "Oh god, Apple is patenting cats!"
You know, patents aren't the devil. Poorly awarded patents are stupid, but that doesn't make the process inherently something to mindlessly oppose.
I can see why people prefer a trackpad or a trackpoint. Everyone just has to choose one or the other and deal with it.
What pisses me off more is the ceasless "one button mouse" argument. It makes me angry because it is just so mindless. It's not like other machines come with a good mouse either. Inevitably, anyone who doesn't get a nice MS or Logitec optical mouse immediately goes out and buys one.
... but I get a bit tired of this. On a desktop, use whatever mouse you like best. On a laptop, just USE THE FSCKING MODIFIER KEY!. When you're using that touchpad, your hands are already all where they should be.
It's really, really, really not that bad. Give yourself 20 minutes, you adjust. Hell, I'm used to a touchstream, which is even crazier than your whizbang mouse, and I can adjust.
I'm perfectly happy to suffer ever so slightly with a one button mouse and a modifier (or long) click. My alternative is to suffer greatly with a windows laptop (god noooo!) or maintain greatly for a less attractive linux setup (that may or may not work graphically, yes Xfree is pretty good these days but it still does happen, even with new hardware).
And in the final-worst-uberbad-case, PLUG IN A MOUSE. If you're doing mouse-intensive stuff like gaming or visual GUI construction, you probably would be more hung up by the touchpad itself, rather than the lack of extra mouse button.
They were accurate, about 5-6 years ago.
I believe your story, but only if your friend put it together from the ground up. Otherwise I'd say after tax it'd probably be $1600-$1800, unless they got some pretty steep discounts (possible) or had some extra hardware lying around (more likely). Apple competes with companies that sell completed systems. Also, the $1800 (mac) includes a nice, quality flatscreen, a good OS, a processor that when instructed correctly can meet or beat the other P4 in terms of performance (altivecs completely blow the water out of the competition, but not many programs use them). They also get all the easy preconfig that you don't get with linux or windows.
At the higher end of the mac spectrum, not much comes close (for equivalent prices). At the low end, they stop about midway into the PC market. Honestly, I'm fine with that. I've owned 2 recent macs, and they've been good machines. I hit a hangup with my iBook, but Apple has since begun a program to rectify that, and it was only for portion of their distribution.
Well, considering that OS X has Office, all the adobe products, some of the best video editing software available commercially, the outright amazing iLife suite, most every linux program and freebsd program you could want, a working X11 implementation out of the box that integrates with the windowing system (unlike, say, Exceed), and legacy mac apps compile under carbon, AND emulation packages, I'd say that if anything, Windows is the one with compatibility problems. Windows once had much more software, now it only holds the 'more' on a few categories, like games.
Games are fun and all, but I just can't justify buying a computer just for a gaming box. It's a waste of money when I could get an XBox, PS2 or Gamecube at a fraction the cost and still get much of the fun.
Firstly, I'm not sure I believe this, but anyone could troubleshoot a lack-of-ram problem there. :\ Even so, this is a multi-point. Firstly, Apple now offers many warranty plans. This is not an issue anymore, and hasn't been for quite some time. Second, Apple charges full price for OS X, but you don't mind. Know why? Because the OS release are, to put it bluntly, bad assed. Once we passed into 10.2 country, Apple was no longer "making OS X what it should have been." 10.2 to 10.3 was honest-to-god feature add on the scale that I've never seen with an OS before. The underlying system and the windowing system both leapt up a notch in power and speed. If Apple can do another upgrade as good as the Jaguar and Panther upgrades, I'll cheerfully pay for it again.
Here is where we need to work on what ESR was talking about. People don't realize that well designed UI and integration is worth something! Sure, CUPS may be the shizzle, but if you can't configure it without major headaches, then it's worthless. We've had folks deliver software to our shop as a flat directory of source files. No build instructions, no makefiles, no ANYTHING. Just the code. How useful is t
The problem is Io doesn't really fill the niche ObjC fills. ObjC can accomplish both high level glue coding and low level systems programming, and in that capacity it excels. Especially with the addition of C++ stuff, it's really quite good.
Io is very interesting, but it's simply not at the performance level you'd need to attack ObjC's position. The only language I've seen that comes close to the C triplets is OCaml, so far. I'm sure there are others, but OCaml really is disturbingly fast.
Of course, a vertical learning curve and recalcitrant type system kinda make it less than optimal.
The whole point of test-first development is to add an extra layer of testing and confidence to the whole system. Test-first should never replace any other part of the software development process.
If you are testing all your edge cases, and you are testing a decent common case, then it fairly comprehensive. More importantly, this practice forces a developer to consider the method they are about to write very carefully before they write it. Even more importantly though, they are a damn sight better than the common cout << "Debug Message" << _member method that so many people use. Tests may not be as flexible as a human mind, but they can happen fast and they can provide an extra level of checks as you refactor code.
I believe you are misinterpreting XP. Considering all the extremist propaganda of both sides, this is a pretty common mistake. XP is not about rushing software. It's about steering the development process and having frequent milestones so the progress can be judged. That way many mistakes will be caught quickly and not allowed to paint the team into a corner later.
Ahh, and if all errors were type errors, I'd agree with you 150%. In my experience working with strong, dynamically typed languages, most errors are not type errors, but logic errors. Maybe they were miskeys, or maybe my brain was fogged, or maybe my design assumptions were bad. Static type checking is a grand thing, but any C++ or Java programmer knows that it will only catch certain classifications of bugs.
The "XP crowd" is so diverse (and fractious) that all I can do is say Kent Beck seems to suggest that good tests (as you go) will tend to reveal type errors early. Part of the reason XP espouses pair programming is to aid in the design of comprehensive tests.
Hand-written tests are not hand-waving. They are just another layer of checking that should go into any project. They assist in refactoring, easy maintenance, help document the system (by showing how a method is meant to be used) in code (which is useful), and they force programmers to really think critically all the time. How can more testing be bad?By the way, thanks for mentioning the Io language earlier. It's very interesting.
People still use smalltalk. I wouldn't say that in this current world Pascal is much more popular than Smalltalk, although you could argue more lines are in deployment.
When you get down to it, the concepts pioneered by Smalltalk are still ahead of their time. How can I say such a thing? Well, watch our modern languages evovle. People keep taking stuff from Smalltalk, and languages are slowly glomming on more and more parts of it. Of course, the same could be said of CLOS. This is the path to language elitism, which no language currently deserves.
A safer statement to make is that the concepts these languages used were advanced, although the particular instance might not have been.
People don't keep digging up these languages out of pure stubborness. They keep turning back to them because they were good ideas, and they worked well.
There is a language like that. In fact, both C++ and Java borrowed several ideas from it. It's called Smalltalk. :) In Smalltalk, everything is an object. Objects talk to each other via methods. Smalltalk has a limited form of closures, can handle exceptions, and has double-dispatch.
As languages go, it's pretty awesome. It was well ahead of its time, anyways. Ruby (as another poster mentioned) also does some of this.
Smalltalk and Ruby are great if you're just working with components and assembling them lego style, sure. But what'd be really nice is to use a language that can do both high level coding and systems programming. Someone else thought of it. Brad Cox came up with Objective-C, which NeXT later expanded upon.
Apple is using Objective-C with the old OpenStep library as their primary development environment for awhile now. It's very nice, supports a lot of full features, has explicit memory management that is very flexible but also circumventable and tunable (using reference counting, but people have made mark-and-sweep extensions, both are not implicit like java though).
Objective-C supports late binding, weak typing, strong typing, static typing and dynamic typing, all in the same program. It can directly use C, so if you know C you're already 3/4 of the way there. The message syntax is slightly odd, but works out. Unfortunately, Objective-C doesn't have closures. David Stes developed a meta-compiler that turns Objective-C with closures into regular C (called the Portable Object Compiler) which might get you some distance if your work demands them.
ObjC can either use C-style functions, smalltalk style message passing, or a hybrid of both. It's a very interesting language. Apple added C++ extensions, so now in most cases you can even use C++ code (however C++ classes are not quite ObjC classes, and there are some caveats).
If you're looking for a language that splits the difference between Ruby/Python and C/C++, Objective-C might be your best bet. It's pretty hard to find an easy-to-use language that also provides a lot of performance.
It was probably modded funny because it's such blatent Perl-first-ism. Perl doesn't hold a monopoly on these things, perl does have a problem with readability, and perl does have many surprising flaws. It's really not the point here anyways. Perl doesn't really satisfy any of the (reasonably good) points made in the article, at least not in an acceptable fashion.
I thought it was pretty funny anyways.
I didn't know this, and tested it. You're right. However, that isn't what I meant. Note I said it would try and link that code.
That code can do anything. That code can BE anything in a Cocoa app (the only kind that can run the InputManagers anyways) using PoseAs. You can make a special unsecure looking text field pose as a secure one.
However, this will not capture your keychain password or anything, only local key events.
Even if it didn't work for secure fields, what happens when you use an insecure field for passwords? Like, say, an FTP app, or a cocoa terminal, or an irc client. These passwords are recovered.
Cocoa apps are fundamentally insecure at certain things if they keep the functionality in Objective-C classes, because Objective C uses late binding. If you want to make the function more secure (say for copy protection) then you do what Omni does and make them tuned C calls (preferably inlined).
Even then, Folks at MacHack have figured out how to trach into Mach-O binaries and subvert functions. It's quite possible for an InputManager to corrupt the current binary so that the NEXT time you load it, it is no longer secure.
This is why the preferred method for handling privledged operations in Cocoa apps is to have a seperate, special binary be executed with UID 0. This binary has no ObjC symbols, is not SUID, and is not usually an AppKit app.
See what I'm saying?
And I submit you have no basis for that assumption, other than an outdated idea notion that the processes should be separate in all instances. Isn't one of the points of Pragmatic Programming, Scrum and eXtreme Programming to eliminate the separation and make the code the design? Even old style development models a "capture" phase.
:)
The idea that the process of making software and the process of coding should somehow be separate is old-fashioned. Even massive corporations like Lockheed Martin realize that the processes are bound together (although not every manager goes along with that philosophy very well).
We need to stop thinking this way. Software is not an engineering process like other ones, where designers design and then manufacturers go to work on it. People actually realize this these days, and it's slowly becoming an accepted fact.
The rest of your post I agree wholeheartedly with.
That's vaguely true, I guess. Take linux and OS X. Both are posix compliant. Both implement standard languages.
I tell you, as someone with experience in the field of cross-platform development, that that's about all you can count on. Don't believe me? The GNU community seems to, since the express purpose of libtool, autoconf and automake is to deal with things like missing syscalls, different shared library conventions (or the lack of shared libraries at all!), and different installation locations.
Why is it that everyone now says Linux is the baseline? As *NIXs go, Linux is actually kind of off in left field. All due respect to linux, of course. It's succeeded fantastically... but that doesn't mean that suddenly the baseline for cross-platform development. It's just a good target.
I generally assume people are equally smart on both sides of the field. Deciding, "Mac users are smarter" is a very bad idea. Most OS X mail clients just make it harder to run an executable from their mail. It's common sense once you realize the implications.
I think Apple has gone to great pains to make their OS easier on the novices. This is a Good Thing, both in the marketing and in the moral sense.
It's certainly very possible. They had a lot of sources in OS X, why use an outdated and probably slightly inferior one when they could work on a more modern codebase?
But even if it were true, there'd be almost no way to verify it.
I have no idea what you're talking about. Care to clarify?
A lesson on what not to chart. It's a pretty ambitious thing to try and represent with one 2 dimensional graph.
It is much more convoluted then other charts of its type.
The rest of the *NIX development world would be much nicer if they adopted a similar scheme.
Standard shared object libraries in OS X are just that, and are subject to all the pitfalls normally found... ohh.. except one. Since Apple uses a two-level namespace scheme, you see name collisions less. Oh, and they do prebinding very aggressively.
It's pretty much a superior setup to the average linux world. But then, we paid for something besides just iCandy, right?
Show me a reason why OS X should have ldd when the superior otool exists. C'mon! To make you feel more comfortable? To make you feel more loved?
Dude, if you're a developer doing cross platform development, then turn around and complain how annoyed you were at not finding ldd, discontinue cross-platform development. If you can't even be bothered to check the unix rosetta stone for something that simple, then you're not the kind of battle-hardened, talented person that is required to do real cross-platform development.
Perhaps you were just porting? Still no sympathy. Learn your target platform. It's not even like it's hard anymore! You have libtool, autoconf and automake these days. Cross platform development is actually feasible these days, albeit difficult!
Even with services running, it's harder to break into a mac. Apple's security update scheme is extremely aggressive. This is especially true when dealing with holes in trusted services like SSH and Apache.You might want to check out this nice UNIX family tree..
You can easily see who's related to who. I might note that Solaris is much further from what we modernly call BSD than some of the others you named. I won't speak of IRIX, but AIX is a weird kind of BSD variant, as is HPUX. OSX is very very close to FreeBSD.
Well, to actually implement a semi-global keylogger in OS X is trivial. You simply put an appropriate .bundle in ~/Library/InputManagers . No root required. Every subsequent program opened will (attempt) to link and run this code. Since .bundles can be versioned, you can even make a platform-specific version.
:)
But then, it's not hard on Windows either.
The trick is in somehow getting the user to install it (usually by running a helper program). In this, OS X mail clients are extremely uncooperative. Pretty much every mail client (including Mail.app), is very clear about what you are getting (and doesn't hide extensions, that's a big one!). Further, when you try and take an attachment it gives you a clear warning of what you are about to do, and makes the default action to save.
So, you don't need root to do it, but fooling your users (especially without some kind of macro in the mail) is much harder on the mac side, because the users get more prompting on the proper response to untrusted email attachments.
It's amazing how far a dialog box will go, eh?
No single specification can cover every case. Yes, Apple violates the HIG sometimes. So do other people. Unlike many other people, the Apple designers are currently on a roll.
Safari gets great reviews. People find it simple and intuitive. Usually, the Apple HIG are good. Sometimes though, an improvisation can be good too.
Apple doesn't want to lock their system in stone, just keep the experience reasonably consistent. This is in sharp contrast to the Windows world, where everyone uses the same GUI but applications vary radically in behavior.
A circular slider isn't going to ruin a user's day. An app that is almost impossible to figure out will.
tags display: none) will work just fine, and when the site is less slashdotted it should appear normal.
Actually, you lucked out. His default "Dark" style is hideous.
Your point was something along the lines of, "I am one of Slashdots many Gentoo zealots. Don't forget about us!"
Because otherwise your point was, "The author forgot about a very tiny part of the linux community that happens to be doing something else similar for very different reasons."
You didn't say anything else in your original post. You just picked a nit. If you pick nits, prepare to have your nits picked. I was kind of being silly about it, but I guess that was totally lost.
In any event, the Ports system is a big advantage for many things. Not the least of which it is the same everywhere, and it makes life easy when you want to synchronize. This was the author's point. This is a distinct advantage over what the majority of linux users use. Yes, Gentoo and your homegrown linux might use something. Hell, even MacOSX has gotten in on the ports craze.
That doesn't invalidate the point the author was trying to make, as you tried to suggest it did.
Hmm. You didn't get what I was saying.
Again, this seems to be suggesting more than you want to say.
Is Gentoo then somehow authorative for Linux? Is it not a minority? Last time I checked, Debian, Redhat, and distros that used their packaging systems (or direct descendants thereof) were still vastly outnumbering the number of installed Gentoo bases.
See? This is nitpicking. It's taking something tiny and trivial about what you said and turning it around to snipe at you. The fact that one minority linux distro happens to use source compiles doesn't suddenly change the general state of linux, neighbor.
Am I mistaken, or are you trying to tell this person that there is a linux that does things more like BSD, and therefore this linux is somehow better?
:)
Doesn't this kind of imply things you'd rather not be implying?