Stability and performance require engineering time. Time equals money. Software companies compete against each other, and there are market players that deliver "good enough" solutions at a competitive rate. If you build it "right", your product costs twice as much as that "good enough" product, and is later to the market, meaning you won't sell that product.
It's a sad reality, but the refusal of software purchasers to wait or pay more for software built right is the reason most software sucks so badly.
The Applications folder on OS X is writeable for an unprivileged user. This is a difference with Vista I believe, where the program files folder is shielded.
There is also the danger that a program could trick me into entering my password when its try intentions are nefarious, thereby getting the required permission to trash my computer. The only way to defend against that is to be very careful about when and where I enter my admin password, but that's true of any OS.
That's not necessarily a defense. The virus could modify code that runs just after a legitimate privilege escalation, and then wait until the next time you need to perform that privileged action.
I admit it raises the bar for virus writers though.
Debian on the other hand you can trim down really nicely. Back in the PIII era I trimmed it down to a 486 with 20 mb of ram without issues, and I'm sure you could trim it down to run fine on PII class machines now.
The reason these films are so bad is because people hype them up in their minds for years.
I wonder sometimes how people would rate these movies if they somehow could forget they had ever seen them and would be able to turn a fresh eye to them.
For example, the original Star Wars is dull, and has a lot of bad acting. The only movie in the entire Star Wars saga that is truly, objectively, a good movie is Empire. IMHO ofcourse.
these stupid contracts such as "You pay as 15 pounds a month and we'll give you x many text messages free!" What a stupid offer..
It's actually quite clever. By throwing in "freebies", they can take them away at any time. Just like they throw around temporary discounts "sign up for 12 months, and the first 6 months you only pay..."
The more a company does this, the less likely I am to do business with them. It demonstrates an inherent lack of commitment to the existing customers (who usually don't get the freebies).
How do you share libraries between your other applications (e.g. server code, standalone client code) with a Flash interface, like you can with.NET or Java?
Flash/flex can use run-time shared libraries. Actionscript 3 has packages, classes (in a class path), and interfaces, so when it comes to code reuse at compile time it is more than capable enough.
Not being able to write native interfaces with Flash and Flexis also a problem. Flex has only very, very basic support for this (not really useable for substantial application development).
While true, in the battle between flex, java and silverlight this doesn't matter much. This won't be a point on which this is decided.
You can't really go very low level with ActionScript. You can't hook hook in to the hardware or local operating system to integrate with what features are available specifically to the platform you are deploying on.
On the web, you don't want this for security reasons, and to the extent that you do (webcam / audio /...) the flash player either already provides it or can very easily be extended (and auto-updated) to provide it.
On the desktop, flex does this. It's called Adobe Air.
Then there is performance. As I've noted in another post, I can't see something like GIMP, Abiword or Firefox being developed in Flash. We've had Quake II in Java (and it rocks).
Those are native desktop apps. I thought we were talking about web development? Besides, adobe has plans to add 3D support to the flash player (probably comparable to java 3d).
The performance I get from Mono (albert it on nothing even remotely as advance) is none the less superb. Can you imagine a point where people will be developing major apps in ActionScript? I can't see developers flocking to it myself.
The flash 9 engine (AVM2) is an order of magnitude faster than current javascript engines. I look around and see a ton of business apps in javascript. Exactly what are you trying to claim here?
Besides, I've written a 100 KLOC business CAD app on the old slow flash 8 engine, and it was fast enough that it was not the performance bottleneck for that project. If I ported this to flash 9 it would run rings even around the delphi-native app it replaced (because the native app was horribly inefficient).
For business apps, all of the environments out there offer a good enough performance level. While performance matters to us developers from a pure-code perspective, it doesn't matter on a business level, not anymore at least.
Flash just happens to be in that space right now, but although it fulfills a unique niche right now (one it looked like Java was going to fill going back quite a few years ago). With.NET, Microsoft can steamroller over Flash pretty easily over the course of a few years - the.NET approach is just really compelling and I think will gain momentum. Flash isn't part of a big cohesive strategy, it's pretty much out their on it's own right now. I think Adobe dropped the ball there.
Well, sun is going to revitalize the java plugin to load a lot faster, and like you say, microsoft faces an uphill battle against java, so if anything is going to dominate by being a single-source solution, it is java.
The deciding factor for this will be which of the plugins is most necessary on the internet. Flash currently is the strongest there, and unless there are a set of very compelling silverlight apps that gain traction on the net, I don't see the balance changing.
Developers are merely going to follow the users..NET is not a choice for me because my company can't enforce an all-microsoft environment on our customers (and mono is not a serious option for business use, because it doesn't have 100% compatibility nor the official support from microsoft).
Adobe's strategy is to provide best-in-class client development tools, both for desktop an
Well, I agree that for regular, informational, sites flash / silverlight aren't suited.
The web is not that narrow anymore, its purpose has broadened beyond static web sites. You're seeing more and more web apps, and despite your claims, some things can't be done, at all, or as easily, in javascript / html. Go take a look at http://www.splashup.com/ for example (web-based photoshop clone).
Basically though, I think Flash has just gone too far down the wrong route, as application development in it seems like a hack. Perhaps someone can illustrate to me why I'm wrong and it really is good for application development and I'm just missing something every time I come to look it it (perhaps because the books and documentation are almost all aimed at animators+designers, not developers?).
You're indeed missing something, because you're looking at the wrong product. Adobe's product for developing web applications for the flash player is called flex. Go take a look at some flex books (for flex 2 or 3), and be enlightened.
In my opinion flex can go toe-to-toe with any client-side web dev platform, be it silverlight, java client, java/gwt, extjs, or whatever.
Actionscript 3 is modern language that encourages good development practices. The flex framework is complete, fast, light, easy to extend, and easy to work with. And mxml, flex's xaml-equivalent, well, just check it out, it's really nice.
I see it as quite opposite. Silverlight doesn't offer a compelling featureset to lure people away from flash/flex. It doesn't do anything development-wise that might tempt flex developers, and it cannot integrate animators and designers as good as the flash / flex combination can.
SVG and Flash are not really competing that directly. SVG is the standard for vector graphics interchange. Flash is the standard for web-based vector animation. The two have completely different purposes. In fact, I've used them in combination, generating SVG server-side to have a standardized format, and using a client-side flash app that rendered the SVG, using specialized handling of some of the SVG elements.
And the few old-school (read: good) programmers are left throwing their hands up in disgust and inching that much closer to the 'get offa my lawn' guy.
Why is it "better" if you spend longer to code the same thing? The point of technology is to make life simpler. If the march of technology delivers us tools that lets us build the same thing in less time, I say great to that.
In essence, this debate is a repeat of the hand-optimized assembly vs compiled code argument. Compilers "won" because the performance loss was acceptable given the development time boost. This will be no different with interpreted languages.
The diversity for desktop development is as big as for web development, and the environments are as complex. Try writing a cross-platform desktop app, it gets complicated pretty fast. The main difference is that on the desktop the platform-provider has an authorized development toolchain that integrates well with the platform (visual studio for windows, xcode for mac), and it is acceptable to build apps only in/for that environment. For web development there's no such thing.
There are however simple ways of building web apps that let you stop worrying about html, css, javascript and just focus on the code. There's java + gwt if you tend towards java, and there's delphi for php if you prefer php.
Well, the reality is that people who copy/paste together scripts don't take the time to learn the complete tutorial, they just copy out the parts they need, and often don't even look at the rest. In practice, by shunting security off to a separate lesson, it becomes a lesson most of the hobby coders never learn.
Besides, tutorials have no excuse anymore. In the PHP4 days it required extra code to be secure, but with PDO in PHP5, and bind variables, the easiest way to code things also happens to be the secure way. There are enough PHP5 web hosts out there that it makes sense to no longer support PHP4 other than for legacy systems.
Sanitizing just for javascript isn't enough. For example, with clever use of links and styles, you can mess up the behavior of a site pretty thoroughly (there have been myspace hacks that used this). You need a full html sanitizer to run across any html content before you store it in the database.
It is fundamental. It's called secure input handling, or sanitizing input. Just because it's a rule doesn't mean it is followed
Just because there are rules, doesn't mean people know about them. I frequent a flash forum where people often ask how to integrate flash with mysql via a php script. The vast majority of the code posted there is open to sql injection. This is not a matter of laziness, it is ignorance.
And this is perfectly understandable if you look at the tutorial sites out there. Take for example the number 3 result for a google search for "php mysql". It gives the following code, with a short mumble in the precursor about addslashes:
If the tutorial writers can't even be bothered to write secure code, how can people who learn from tutorials be expected to? I think the tutorial sites have an obligation to correct or remove any tutorials that have basic coding mistakes like these in them.
Debugging and maintaining, however, are issues more predicated upon design skills than the language used.
My experience is that debugging and maintenance is a factor of two things: programmer quality, and number of lines of code. The more lines of code, the longer you'll be debugging, and the slower you'll be able to make changes on your codebase (presupposing that your design is equally sound in both cases). C's verbosity means it will take longer to debug and maintain. This is my experience anyway, as I've written parsers in C and PHP, and the PHP parser was easier to debug and maintain, despite equal complexity, because it was much less verbose.
The problem is that from the programmer's perspective, "time and effort" are not even slightly the same as they are from the user's perspective.
I agree with what you say, that putting user satisfaction first should be the key driving force behind your coding decisions. For me this translates a little differently. I have more requested functionality than I have time to program. If a feature is slow but usable, it is preferable for my userbase over a feature that is fast but absent.
My ideal system is a mixed platform, something like Adobe Air, or Firefox's XUL architecture, with simple high-level scripting languages to get the GUI coding done quickly, but lower-level native code libraries to do the heavy lifting with graphics and data. I've written flash-based web apps that outperformed native code desktop apps by making judicial use of the optimized native code libraries in flash. This way you get the best of both worlds.
You're right, embedded software is currently one of the few classes of software for which C still makes sense. But give it a decade or two, and we'll see garbage collection and scripting languages there too. Hardware is cheap, programmer time expensive. If you can save programmer time at the expense of hardware cost, it usually pays off.
But if you approach the task using C, which is basically capable of creating as fast an application as you are capable of writing, it is so close to assembly, while we can certainly agree up front it'll take you longer, the end result could be a lot faster and a lot more capable of efficiently managing the user's resources than that which you might create using a modern HLL.
Agreed 100 percent. If you write it in C, you can make it run faster with lower resources, but you will spend a lot more time creating, debugging and maintaining it.
Most software simply doesn't need to be that fast. The performance sensitive pieces of code are in database queries (C code), or disk operations (C code), or math operations (C code). Modern garbage collectors also are proven, they're fast, they're reliable. It doesn't make sense for the majority of classes of software, from a cost vs. gain perspective, to use C for the job.
Hey, I'm not in pharma. All I see is an industry that seemingly hasn't actually cured anything in decades, and is not interested in research into types of medicine that aren't patentable. Maybe that's just a matter of ignorance and sensationalist tv documentaries, I don't know.
What I do know is that the pharma companies have an obligation to their shareholders to maximize profit, and that investing the bulk of R&D money in treatments, not cures, simply has to be a part of that.
Flash in my opinion is the scourge of the internet these days, and don't go off on a youtube rant, internet video and streaming codecs were available before flash.
I assume you're saying that because of the ads that use flash. Yes, they're annoying. No, it's not flash's fault. Flash is merely the most powerful technology on the web for doing animations, so logically advertisers choose to use it. If there was no flash, the ads would use javascript, and be even more difficult to block.
Flash is used a lot for doing stuff on the web that's otherwise basically impossible. Stuff like splashup.com or most of the fancier online games. I used it to develop a building floorplan viewer that renders autocad drawings using custom themeing (replacing a non-flash clickable image based version that was just too slow).
I'm sure many slashdotters have come across some very smart people.
We have, but not on slashdot.
Stability and performance require engineering time. Time equals money. Software companies compete against each other, and there are market players that deliver "good enough" solutions at a competitive rate. If you build it "right", your product costs twice as much as that "good enough" product, and is later to the market, meaning you won't sell that product.
It's a sad reality, but the refusal of software purchasers to wait or pay more for software built right is the reason most software sucks so badly.
Oh natalie portman, where ever did you go with those grits?
Exactly what they needed that delay for, I don't even know. Certainly not for translations.
Marketing. They needed to spread out the marketing effort through time so they could do it with a fixed team.
Meh. I write PHP software for a living, it's been unicode compatible for years. It doesn't even take all that much of an effort.
The Applications folder on OS X is writeable for an unprivileged user. This is a difference with Vista I believe, where the program files folder is shielded.
There is also the danger that a program could trick me into entering my password when its try intentions are nefarious, thereby getting the required permission to trash my computer. The only way to defend against that is to be very careful about when and where I enter my admin password, but that's true of any OS.
That's not necessarily a defense. The virus could modify code that runs just after a legitimate privilege escalation, and then wait until the next time you need to perform that privileged action.
I admit it raises the bar for virus writers though.
Windows 98 is just not going to be network-safe.
Debian on the other hand you can trim down really nicely. Back in the PIII era I trimmed it down to a 486 with 20 mb of ram without issues, and I'm sure you could trim it down to run fine on PII class machines now.
The reason these films are so bad is because people hype them up in their minds for years.
I wonder sometimes how people would rate these movies if they somehow could forget they had ever seen them and would be able to turn a fresh eye to them.
For example, the original Star Wars is dull, and has a lot of bad acting. The only movie in the entire Star Wars saga that is truly, objectively, a good movie is Empire. IMHO ofcourse.
these stupid contracts such as "You pay as 15 pounds a month and we'll give you x many text messages free!" What a stupid offer..
..."
It's actually quite clever. By throwing in "freebies", they can take them away at any time. Just like they throw around temporary discounts "sign up for 12 months, and the first 6 months you only pay
The more a company does this, the less likely I am to do business with them. It demonstrates an inherent lack of commitment to the existing customers (who usually don't get the freebies).
How do you share libraries between your other applications (e.g. server code, standalone client code) with a Flash interface, like you can with .NET or Java?
...) the flash player either already provides it or can very easily be extended (and auto-updated) to provide it.
.NET, Microsoft can steamroller over Flash pretty easily over the course of a few years - the .NET approach is just really compelling and I think will gain momentum. Flash isn't part of a big cohesive strategy, it's pretty much out their on it's own right now. I think Adobe dropped the ball there.
.NET is not a choice for me because my company can't enforce an all-microsoft environment on our customers (and mono is not a serious option for business use, because it doesn't have 100% compatibility nor the official support from microsoft).
Flash/flex can use run-time shared libraries. Actionscript 3 has packages, classes (in a class path), and interfaces, so when it comes to code reuse at compile time it is more than capable enough.
Not being able to write native interfaces with Flash and Flexis also a problem. Flex has only very, very basic support for this (not really useable for substantial application development).
While true, in the battle between flex, java and silverlight this doesn't matter much. This won't be a point on which this is decided.
You can't really go very low level with ActionScript. You can't hook hook in to the hardware or local operating system to integrate with what features are available specifically to the platform you are deploying on.
On the web, you don't want this for security reasons, and to the extent that you do (webcam / audio /
On the desktop, flex does this. It's called Adobe Air.
Then there is performance. As I've noted in another post, I can't see something like GIMP, Abiword or Firefox being developed in Flash. We've had Quake II in Java (and it rocks).
Those are native desktop apps. I thought we were talking about web development? Besides, adobe has plans to add 3D support to the flash player (probably comparable to java 3d).
The performance I get from Mono (albert it on nothing even remotely as advance) is none the less superb. Can you imagine a point where people will be developing major apps in ActionScript? I can't see developers flocking to it myself.
The flash 9 engine (AVM2) is an order of magnitude faster than current javascript engines. I look around and see a ton of business apps in javascript. Exactly what are you trying to claim here?
Besides, I've written a 100 KLOC business CAD app on the old slow flash 8 engine, and it was fast enough that it was not the performance bottleneck for that project. If I ported this to flash 9 it would run rings even around the delphi-native app it replaced (because the native app was horribly inefficient).
For business apps, all of the environments out there offer a good enough performance level. While performance matters to us developers from a pure-code perspective, it doesn't matter on a business level, not anymore at least.
Flash just happens to be in that space right now, but although it fulfills a unique niche right now (one it looked like Java was going to fill going back quite a few years ago). With
Well, sun is going to revitalize the java plugin to load a lot faster, and like you say, microsoft faces an uphill battle against java, so if anything is going to dominate by being a single-source solution, it is java.
The deciding factor for this will be which of the plugins is most necessary on the internet. Flash currently is the strongest there, and unless there are a set of very compelling silverlight apps that gain traction on the net, I don't see the balance changing.
Developers are merely going to follow the users.
Adobe's strategy is to provide best-in-class client development tools, both for desktop an
Well, I agree that for regular, informational, sites flash / silverlight aren't suited.
The web is not that narrow anymore, its purpose has broadened beyond static web sites. You're seeing more and more web apps, and despite your claims, some things can't be done, at all, or as easily, in javascript / html. Go take a look at http://www.splashup.com/ for example (web-based photoshop clone).
Basically though, I think Flash has just gone too far down the wrong route, as application development in it seems like a hack. Perhaps someone can illustrate to me why I'm wrong and it really is good for application development and I'm just missing something every time I come to look it it (perhaps because the books and documentation are almost all aimed at animators+designers, not developers?).
You're indeed missing something, because you're looking at the wrong product. Adobe's product for developing web applications for the flash player is called flex. Go take a look at some flex books (for flex 2 or 3), and be enlightened.
In my opinion flex can go toe-to-toe with any client-side web dev platform, be it silverlight, java client, java/gwt, extjs, or whatever.
Actionscript 3 is modern language that encourages good development practices. The flex framework is complete, fast, light, easy to extend, and easy to work with. And mxml, flex's xaml-equivalent, well, just check it out, it's really nice.
I see it as quite opposite. Silverlight doesn't offer a compelling featureset to lure people away from flash/flex. It doesn't do anything development-wise that might tempt flex developers, and it cannot integrate animators and designers as good as the flash / flex combination can.
Boolean possible values: null, true, false
Don't forget FileNotFound
SVG and Flash are not really competing that directly. SVG is the standard for vector graphics interchange. Flash is the standard for web-based vector animation. The two have completely different purposes. In fact, I've used them in combination, generating SVG server-side to have a standardized format, and using a client-side flash app that rendered the SVG, using specialized handling of some of the SVG elements.
And the few old-school (read: good) programmers are left throwing their hands up in disgust and inching that much closer to the 'get offa my lawn' guy.
Why is it "better" if you spend longer to code the same thing? The point of technology is to make life simpler. If the march of technology delivers us tools that lets us build the same thing in less time, I say great to that.
In essence, this debate is a repeat of the hand-optimized assembly vs compiled code argument. Compilers "won" because the performance loss was acceptable given the development time boost. This will be no different with interpreted languages.
The diversity for desktop development is as big as for web development, and the environments are as complex. Try writing a cross-platform desktop app, it gets complicated pretty fast. The main difference is that on the desktop the platform-provider has an authorized development toolchain that integrates well with the platform (visual studio for windows, xcode for mac), and it is acceptable to build apps only in/for that environment. For web development there's no such thing.
There are however simple ways of building web apps that let you stop worrying about html, css, javascript and just focus on the code. There's java + gwt if you tend towards java, and there's delphi for php if you prefer php.
Well, the reality is that people who copy/paste together scripts don't take the time to learn the complete tutorial, they just copy out the parts they need, and often don't even look at the rest. In practice, by shunting security off to a separate lesson, it becomes a lesson most of the hobby coders never learn.
Besides, tutorials have no excuse anymore. In the PHP4 days it required extra code to be secure, but with PDO in PHP5, and bind variables, the easiest way to code things also happens to be the secure way. There are enough PHP5 web hosts out there that it makes sense to no longer support PHP4 other than for legacy systems.
Sanitizing just for javascript isn't enough. For example, with clever use of links and styles, you can mess up the behavior of a site pretty thoroughly (there have been myspace hacks that used this). You need a full html sanitizer to run across any html content before you store it in the database.
Just because there are rules, doesn't mean people know about them. I frequent a flash forum where people often ask how to integrate flash with mysql via a php script. The vast majority of the code posted there is open to sql injection. This is not a matter of laziness, it is ignorance.
And this is perfectly understandable if you look at the tutorial sites out there. Take for example the number 3 result for a google search for "php mysql". It gives the following code, with a short mumble in the precursor about addslashes:
If the tutorial writers can't even be bothered to write secure code, how can people who learn from tutorials be expected to? I think the tutorial sites have an obligation to correct or remove any tutorials that have basic coding mistakes like these in them.
Debugging and maintaining, however, are issues more predicated upon design skills than the language used.
My experience is that debugging and maintenance is a factor of two things: programmer quality, and number of lines of code. The more lines of code, the longer you'll be debugging, and the slower you'll be able to make changes on your codebase (presupposing that your design is equally sound in both cases). C's verbosity means it will take longer to debug and maintain. This is my experience anyway, as I've written parsers in C and PHP, and the PHP parser was easier to debug and maintain, despite equal complexity, because it was much less verbose.
The problem is that from the programmer's perspective, "time and effort" are not even slightly the same as they are from the user's perspective.
I agree with what you say, that putting user satisfaction first should be the key driving force behind your coding decisions. For me this translates a little differently. I have more requested functionality than I have time to program. If a feature is slow but usable, it is preferable for my userbase over a feature that is fast but absent.
My ideal system is a mixed platform, something like Adobe Air, or Firefox's XUL architecture, with simple high-level scripting languages to get the GUI coding done quickly, but lower-level native code libraries to do the heavy lifting with graphics and data. I've written flash-based web apps that outperformed native code desktop apps by making judicial use of the optimized native code libraries in flash. This way you get the best of both worlds.
You're right, embedded software is currently one of the few classes of software for which C still makes sense. But give it a decade or two, and we'll see garbage collection and scripting languages there too. Hardware is cheap, programmer time expensive. If you can save programmer time at the expense of hardware cost, it usually pays off.
But if you approach the task using C, which is basically capable of creating as fast an application as you are capable of writing, it is so close to assembly, while we can certainly agree up front it'll take you longer, the end result could be a lot faster and a lot more capable of efficiently managing the user's resources than that which you might create using a modern HLL.
Agreed 100 percent. If you write it in C, you can make it run faster with lower resources, but you will spend a lot more time creating, debugging and maintaining it.
Most software simply doesn't need to be that fast. The performance sensitive pieces of code are in database queries (C code), or disk operations (C code), or math operations (C code). Modern garbage collectors also are proven, they're fast, they're reliable. It doesn't make sense for the majority of classes of software, from a cost vs. gain perspective, to use C for the job.
Hey, I'm not in pharma. All I see is an industry that seemingly hasn't actually cured anything in decades, and is not interested in research into types of medicine that aren't patentable. Maybe that's just a matter of ignorance and sensationalist tv documentaries, I don't know.
What I do know is that the pharma companies have an obligation to their shareholders to maximize profit, and that investing the bulk of R&D money in treatments, not cures, simply has to be a part of that.
Flash in my opinion is the scourge of the internet these days, and don't go off on a youtube rant, internet video and streaming codecs were available before flash.
I assume you're saying that because of the ads that use flash. Yes, they're annoying. No, it's not flash's fault. Flash is merely the most powerful technology on the web for doing animations, so logically advertisers choose to use it. If there was no flash, the ads would use javascript, and be even more difficult to block.
Flash is used a lot for doing stuff on the web that's otherwise basically impossible. Stuff like splashup.com or most of the fancier online games. I used it to develop a building floorplan viewer that renders autocad drawings using custom themeing (replacing a non-flash clickable image based version that was just too slow).