some comments on the kast people's criticism on Java:
java applications are difficult to install
Absolutely. Everybody installs their own JVM, which means that Sun's concept of installing one JVM everywhere is a disastrous failure. Sun needs to fix this ASAP, starting with the licensing terms which don't allow anyone to ship an incomplete JVM with their app. Small apps are impossible because of this.
java applications start up slowly
Absolutely. Sun's failure since they could easily cache the binaries for the base classes and individual apps, too. Instead, Object.class gets translated into machine code every time i start the JVM, over and over again...
java applications have slow, unresponsive user interfaces
This isn't true anymore ever since Swing got seriously hardware accelerated [JDK 1.4.x]. It's not entirely trivial, but also not too hard to create fast Swing apps nowadays. Also, SWT has become a real alternative.
java applications use a lot of memory
Absolutely. Again, i can't write a small tool or even small utility app without using 30M of main memory. Bad.
java applications leak memory
No, they don't. The assertion that programmers pay less attention when not having to do their own mem management is ridiculous. Sun is partially to blame though because all their documentation, from the very start, touts the garbage collector as "freeing you from having to think about memory" which is simply not true.
It was a bit of a pain before weak reference classes were introduced, but nowadays there is no excuse for a Java app to leak memory. Granted, there are some remaining problems in the Swing framework, but no framework is bug free.
can you elaborate on that? i don't quite understand... where exactly do you save time over MVC? where does the MVC paradigm say you need to copy anything? Example: the java TableModel. it's an interface, so my model can implement this interface and JTable will access the values directly, without doing any copying.
i have written many MVC apps in Java, and they are performing quite well. The performance improvements i make usually start and end with one single thing: Remove unneccessary updates. Most Java programmers don't realize, but their screens get updated 10 times from all kinds of different updating mechanisms. E.g. user clicks button, update event is fired, sometimes two, a chain of update events from all sorts of components that change as a result triggers a chain of repaint events. Now, if you hold off with updating until all update events have settled down, you paint 10 (and i have seen up to 100 times) less. Result: what was sluggish is all of a sudden blazingly fast. Even though you "wait" for the event queue to clear.
This is something that one would expect Java to do internally, esp. if you are familiar with the way updating works, but in reality, it's the bottleneck.
The reason i usually adhere to MVC is that it allows you to have multiple views on one model and to easily add more views to one model.
I agree with all the technical aspects of your comment. c# is good, Java is good, and we are all happy, plus, most of the clients use windows so why not give them windows clients. VS.NET is great, too [Eclipse is superior in some ways though]
But you fail to realize what many techies fail to realize: the company which controls the technology is important. It is important what the goals of the company controlling the technology are. It is important what the past behavior of the company controlling the technology was towards others. In short: politics and technology are inseparable. Enter open source: Once the source is public domain, it is free.
Microsoft is a golden prison, and a lot of people are just very happy to sit in it. Good for them. Other people seek freedom - Java is a bit of freedom, but hampered by Sun's idiotic policies. Mono promises to be what Java should have been: Open source, cross platform [including the GUI, ahem], free.
If you are looking for innovative, look at Apple: At the forefront, inventing things for others to copy.
The open source innovation is the open source license and idea itself: It's revolutionary, and it will lead to a better life for all of us. It's pervasive throughout society.
Open source software per se isn't any more or less innovative than any other software.
Statistically speaking, the factors "is open source or not" and "innovative" are independent variables. Eiter can be innovative, both rarely are.
thanks for this insightful comment. it's interesting that people "put up with" MS - MS's most satisfied cusomers simply put up with the OS.
on the Mac, the situation is completely opposite. i am wondering if that is because they are often confronted with the alternative (MS) and so happy they don't have to use it. or if it is because there is some genuine quality to the Mac OS experience that everyone appreciates, no matter what the alternatives.
i believe it's the latter. it is really made to be simple, and it really does work. it's not perfect by any means - it's still a computer, and more difficult to use than, say, a shovel, or an iPod.
i talked to an architecture professor friend of mine recently - he was first confronted with a computer when he was nearing 40. he was in the U.S. and supposed to prepare a talk. he got an office in the University of Michigan, but as he sat down to prepare work he noticed that there was no typewriter. only this funny box with the 10" screen. it was the first time he had seen a computer up close. he was too embarrassed to admit that or ask anyone for help, of course, and so set up to figure out that box on his own. within an hour, he held a printed version of his talk in his hands.
can you imagine this happening with any version of windows (3.11, 95, 98, 2k, xp)? no way. with any version of linux? no way.
the difference is the quality of the experience, a quality that is very hard to describe, very hard to attain, and very easy to lose along the way (Mac OS 9.x??). i do believe though that this quality could be easily put into cold, hard numbers if anyone ever tried a large scale experiement... come to think of it, such an experiment would be extremely interesting and certainly enlightening to the linux crowd.
i RTFA and the most important thing i got out of it is are some simple - almost obvious - perceptions: - The iPod is going to be redundant when you have 4G of music storage in the cell phone. - The tech to enable this is 1 - 2 years away. - There are 400M cell phones sold each year. iPods are sold mainly in the U.S., and are getting everywhere else to the "hip" people and gadget geeks right now - but they are not mass market in the same way that cell phones are. They are not anywhere near. I can go to a remote mountain village in Thailand and buy a Nokia phone. Same in India, Japan, Italy, wherever - cell phones are ubiquitous, world-wide. iPods are ubiquitous in ivy league colleges and in downtown NYC and pretty much nowhere else.
Apple may or may not try to control the DRM market through ITMS but a fact is that the iPod's growth is going to slow down dramatically. and that it won't reach ubiquity.
concluding, i think rather than having a secret master plan to dominate the world, Apple is just hedging it's bets. that's why they won't license their DRM: short term - make money; long term - keep options. sounds like a conservative business strategy to me.
ahh... so refreshing. you have just said everything i wanted to say about the language bias in the (otherwise good) article.
i couldn't agree more. one of our jobs as wanna-be hackers is to learn new languages so that we know more tools and know what to apply in certain situations.
graham writes that hackers loathe to work on ill defined projects with users who don't know what they want. yet, in real life, that's what happens.
they will call you with some great idea about software they want, and you will go there and slowly but surely figure out that they have no idea what they are talking about - the project is ill defined. users have no clue.
i have seen people react to this situation with disgust: they try to pin down the customers, maybe eventually get then to sign something and then develop exactly as per spec. the outcome is not pleasing for anyone.
in the article graham also writes that great hackers are distinguished by knowing which problems to solve. the trick to still enjoy these kinds of situations is to get back that: know what your problem is. your problem is that the customers want something, but don't know what. so that problem needs to be solved before any other problems are known. it's a challenge: can you make the users find out what they want? so you go ahead and make that your highest priority. talk to them. suggest graphic solutions to them - if they reject them, they will realize more clearly what they want.
this is a long process, and it certainly involves a lot more talking than some hackers can stand. but in the end, coming up with a great product is so satisfying, it's all worth it. besides, while you talk to them you yourself understand more clearly what the problem is, which basically saves you implementation work. because really understanding the problem is also, at the same time, the solution.
disclaimer: in the real world, i see other people miscommunicate with customers first, then implementing a crappy solution to the wrong problem, then, disaster. in fact, in the real world, when they ask me what they did wrong/should improve, all i can answer is mu
you make an interesting point - i felt throughout the article that Graham couldn't decide between "great engineers" and old-fashioned "hackers". in some way they are the same - the great engineers from today are the old-fashioned tinkerers from yesteryear, only with great tools at their disposal.
really great engineers know about great practices but also know when to not use them. really great engineers don't go all-out over practices, procedures, testing patterns, etc - those things are, in a way, for the weak. as in: if you have a weak programming team, you need those things in order to produce something at all. if you have a strong team, the team will instinctively follow those practices anyway, whether or not the know the proper terms for it.
of course, in practice, what i most often see are weak teams who on top of that don't use best practices either and then fail disastrously.
IMHO the best criteria by which do distinguish the great from the masses of others is productivity. the great programmers will still be 100 times more productive than average ones.
ps: by programming i mean software engineering, not hacking together a perl script so that 100 lines fit in 1. i mean all the good things like maintainable, extensible, clean architecture etc.
the only use i can think of is to use the tablet as a notebook - just like i make my notes on paper during meetings. making those notes on the computer screen would not be a huge deal, but it would be useful.
the problem is, in order to be useful, it would have to work perfectly. it would have to work the same way a Newton worked - it would become an electronic notepad.
therefore, it won't work on windows - windows and working perfectly is an oxymoron. it just won't.
i think we will see the same thing that happened with the iPod. a HD based mp3 player was a good idea, and lots of companies tried it before Apple. yet, what they produced was complete crap (i still have an old Nomad lying around.. ). so it never caught on. Windows tablet PCs are not quite as bad because at least you can still use them as normal notebooks - which is what 99% of people owning them do...
i am pretty sure the new version will be multi-processor aware (given that Q3 was and that all new PowerMacs have dual processors and that id is traditionally populated by ex-next freaks who are now OS X freaks).
so: goodness! as long as your 3D card is recent enough, there will be plenty of processing power to go around. the 3D card will just be way more important than the CPU power.
Yet I've seen $6 million corporate software with unreadable browser-based interfaces apparently designed by a 16 year old Web designer with attention-deficit disorder. that's because you can sell it to management more easily.
there are several forces that prevent good GUIs to be implemented in custom software, the first one of which is to spend absolutely no money on GUI design (The programmer is the designer) - this happens frequently in projects i work on. Even though i love GUIs and elegant solutions, i don't get the resources to hire real GUI designers. So i have to make do, doing the best i can. But i know it's a shame.
Then, there are two more forces opposing good GUIs. These both come from management, and from people who will most likely never use the product themselves.
- the R.G.S. - factor: The client is paying good money and they expect a no-nonsense system. Not some toys with cutesy looks. The most manly of these system is the R.G.S - the Real Good System. The R.G.S. has tons of buttons and options which make it incredibly powerful. Because it is so powerful, it is also incredibly hard to learn. Professional training is a must! Believe it or not, i have known programmers who have intentionally made their systems more complicated so they look more "professional". The really sad thing is: It works, too. You can charge more money for a more complicated system. Or, even though it's completely counter their requirements, clients will have an easier time shelling our more money for a more complex-looking system.
- the Multimedia-factor: The more multimedia the system has built-in, the more modern it appears - regardless of whether the whiz-bang adds anything to the usability. Again, you can charge more money for the whiz-bang system than for a clean and simple design - even though the whiz-bang variety may be harder to use.
it would be interesting to see three experts, the best of the best, on each system: windows, OS X, OS 9, linux, Solaris and have them each fulfill common tasks, and see who is fastest. move files, open email program and send mail, write a letter in a word processor etc (including app start).
in my professional life, i have seen unix experts [fantastically ineffective], windows experts [getting slowed down by a zillion wizards], Max OS X experts [good speed], and OS 9 experts [faster than you can look].
i think a large scale study on this would find that there is an absolute, quantifyable speed difference between the systems. ease of use translates to more efficient and less frustrating work experience.
for example, i use my PC 8 hours per day at work, and i appreciate its qualities. but when i have to do work that can be done on my Mac, i will do it there. it's just more effective.
as an example, i just wasted 15 windows minutes because i suddenly decided to clean up my system and remove all old applications and demo versions i never use. i went through the "add and remove software" thing - half the apps in there are no more on the system. ok, fine. others have "critical errors" when removing. can live with that. then i made the mistake to remove "firebird 0.9.0" because i know i am using 0.9.2. whoops, that deleted 0.9.2 instead. foolish me. a system restore (who knows what prefs are stored where...) and firefox reinstall cost about 15 minutes. how would i do that on the mac? i go through the app folder and just drop the ones i don't use in the trash. done.
at the end of the day, usability (or non-usability) translates into cold, hard dollars.
i am an expert in Java and a dabbler in Python. i love python for its clean syntax and fully-OO model (everything is an object). also for the elegance with which it can process strings or files.
but i found it lacking in GUI support. Tcl/tk is _not_ the state of the art in GUI building. Far from it, actually.
I was considering writing a client app fully in Python. But then i found that i needed tabbed panes, tables, tree views, as well as the ability to draw graphs in all varieties.
AFAIK Python as none of that. Java has (great!) tables, tabbed panes and tree views built-in, as well as multiple open source frameworks for graphing (i used JFreeChart).
i also found it irritating that i didn't have the strict java package/class name/file name structure. but i assume it can be done in python, too and it's just not enforced.
Oh, and Eclipse. There is nothing like it for Python. I guess there are python plugins, but they don't come with the wide range of tools that are available for Java (refactoring, etc). Those are huge, huge time-savers, too.
I am perfectly willing to give beautiful Python another chance if somebody can provide Python-equivalents for all of the above.
We also have Java for the write-once-run-anywhere thing. I fail to believe that.NET/Mono/.GNU will be better or solve any new problems that have not already been solved.
They provide much needed competition. Because of this, Java is going to get better. Also, different approaches might open up new avenues... I am particularly interested in how Gtk# will match up with Swing.
Already, improvements from c# have made it into Java. Others will hopefully make it into future versions. Like c#'s event handling syntax: txtRegex.Changed += new EventHandler(ChangedSomething);
i would love to have that in Java. i am always kind of annoyed with having to write some anonymous inner class to call my event handling method. (note to Sun: event handling. it shouldn't be difficult.)
so... you say that taking a Windows box along with all the tech developed for it (Visual Studio, DirectX, networking), then stripping the OS and hardware of all non-gaming related features, and packing it into an ugly-as-sin box is the "most innovative console ever"?
Microsoft created the ultimate gaming PC, put it in said ugly-as-sin box, and claimed it was a console. then proceeded with the usual tactics to sign up or buy out develpers etc. it's impressive in the same way an 800 pound gorilla is impressive. but it's not innovative.
anekdote: i was running in semi-two user mode recently and tried to start iTunes. i got the error message "bla... another user is using iTunes... bla". the other user logged in had not quit iTunes. == lameness.
to me, that implies that certain corners have been cut in OS X development, and tweaking the system for true multi-user capability would be _hard_ (if you are using Aqua, that is).
meditate. then you don't need to sleep. i am not kidding. meditation allows your mind to completely relax while staying awake.
drugs are your enemy - clouding your judgement, hiding your problems, nothing but empty promises. as long as you rely on drugs, you will continue on as you have. so why not try something else? you seem to believe in drugs. that's your first problem - the realization that drugs can not help you.
I completely agree - kids are insanely creative. Here is a little story: We were developing a product at Apple [i was an intern at the time] which would later turn into Stagecast, a visual programming language for Kids. You can create characters and give them simple rules with this program.
We were at a school doing a user-test. One of the researchers gave a 5 minute introduction to the software - how to use it. I timed it: It was _exactly_ 5 minutes. The the kids, ages 8 - 9, would have a go at it. What they produced was just unbelievable in terms of variety, detail, and... creativity. We had lemmings jumping off cliffs and dying a bloody death, we had roses flowering, we had characters running around on the screen, we had a full-fleged traffic simulation complete with traffic jam... Each of those children did something completely different from the next. Not knowing what to do was not a problem any of them experienced. At the end of the lesson we had to pry them away from the computers.
So if kids are insanely creative - then to not be creative when they are adults must be something they get taught by society.
the newton was too far ahead of its time. namely the problems with handwriting recognition were not solved. it should never had shipped at the time it did. but corporate needed to ship, and so the product sucked.
palm went a different route and eliminated the problems w/ handwriting recognition by making users learn a new handwriting/alphabet (graffiti). something Apple and the Newton group would have never, ever considered - making the user adapt his to the machine was pretty much a sacrilege.
only the last newton had halfway-decent handwriting recognition, and it wasn't that good, either.
i think 4G is closer than we think. Japan's NTT DoCoMo is testing it. India is skipping 3G alltogether and going straight to 4G. the reason: 3G is too little, too late. It's not completely packet-based (voice calls are still point-to-point), and it allows for only up to 300kbps. read the fine print: that's bits per second. so in the best of all cases (3am, drunks home in bed, etc), you get... 30kB/seconds. rather underwhelming.
with 4G, on the other hand, NTT DoCoMo targets 100Mbit/s for the customer.
thanks for answering my concerns. i hereby admit i am a lazy-ass and rather than looking at the code, the bugs, the process, etc. before talking about security, i ask slashdot. i would like to note, though, that as a side-benefit to my procrastination, all/. readers now know FireFox is secure.
in my defense, i also want to note that FireFox' own security claims are rather modest, as noted on the homepage:Built with your Security in mind, Firefox keeps your computer safe from malicious spyware by not loading harmful ActiveX controls. A comprehensive set of privacy tools keep your online activity your business. ... and that's all it says. i wouldn't exactly guess from that that
"we've considered security at every step of the way, from design, to implementation, to testing. We've got some of the top minds in the business constantly trying to find holes in our security story. They find 'em and we fix 'em.".
I have been using FireFox for a long while. It's great.
But then, i don't think it has been designed with security in mind as much as convenience, exactly the same predicament that made IE such a huge security hole. There is auto-install of plug-ins, there is auto-install of skins - i kind of have a hard time believing that all of these were written by people wrecking their brains about possible exploits. [if you know different, let me know]
With IE, we know it's broken beyond fixing. With FireFox, we don't know. It has not been tested, as it has not been the target of serious malware writers.
Imagine - unlikely as it may be - FireFox wins the new browser war. Will it still be safe? IMHO, only a real security model like the one built into Java can really protect users. And from working with that, i know that it places lots of seemingly unnecessary and annoying constraints on development and web apps.
some comments on the kast people's criticism on Java:
java applications are difficult to install
Absolutely. Everybody installs their own JVM, which means that Sun's concept of installing one JVM everywhere is a disastrous failure. Sun needs to fix this ASAP, starting with the licensing terms which don't allow anyone to ship an incomplete JVM with their app. Small apps are impossible because of this.
java applications start up slowly
Absolutely. Sun's failure since they could easily cache the binaries for the base classes and individual apps, too. Instead, Object.class gets translated into machine code every time i start the JVM, over and over again...
java applications have slow, unresponsive user interfaces
This isn't true anymore ever since Swing got seriously hardware accelerated [JDK 1.4.x]. It's not entirely trivial, but also not too hard to create fast Swing apps nowadays. Also, SWT has become a real alternative.
java applications use a lot of memory
Absolutely. Again, i can't write a small tool or even small utility app without using 30M of main memory. Bad.
java applications leak memory
No, they don't.
The assertion that programmers pay less attention when not having to do their own mem management is ridiculous. Sun is partially to blame though because all their documentation, from the very start, touts the garbage collector as "freeing you from having to think about memory" which is simply not true.
It was a bit of a pain before weak reference classes were introduced, but nowadays there is no excuse for a Java app to leak memory. Granted, there are some remaining problems in the Swing framework, but no framework is bug free.
can you elaborate on that? i don't quite understand... where exactly do you save time over MVC? where does the MVC paradigm say you need to copy anything? Example: the java TableModel. it's an interface, so my model can implement this interface and JTable will access the values directly, without doing any copying.
i have written many MVC apps in Java, and they are performing quite well. The performance improvements i make usually start and end with one single thing: Remove unneccessary updates. Most Java programmers don't realize, but their screens get updated 10 times from all kinds of different updating mechanisms. E.g. user clicks button, update event is fired, sometimes two, a chain of update events from all sorts of components that change as a result triggers a chain of repaint events. Now, if you hold off with updating until all update events have settled down, you paint 10 (and i have seen up to 100 times) less.
Result: what was sluggish is all of a sudden blazingly fast. Even though you "wait" for the event queue to clear.
This is something that one would expect Java to do internally, esp. if you are familiar with the way updating works, but in reality, it's the bottleneck.
The reason i usually adhere to MVC is that it allows you to have multiple views on one model and to easily add more views to one model.
I agree with all the technical aspects of your comment. c# is good, Java is good, and we are all happy, plus, most of the clients use windows so why not give them windows clients. VS.NET is great, too [Eclipse is superior in some ways though]
But you fail to realize what many techies fail to realize: the company which controls the technology is important. It is important what the goals of the company controlling the technology are. It is important what the past behavior of the company controlling the technology was towards others. In short: politics and technology are inseparable.
Enter open source: Once the source is public domain, it is free.
Microsoft is a golden prison, and a lot of people are just very happy to sit in it. Good for them. Other people seek freedom - Java is a bit of freedom, but hampered by Sun's idiotic policies. Mono promises to be what Java should have been: Open source, cross platform [including the GUI, ahem], free.
If you are looking for innovative, look at Apple: At the forefront, inventing things for others to copy.
The open source innovation is the open source license and idea itself: It's revolutionary, and it will lead to a better life for all of us. It's pervasive throughout society.
Open source software per se isn't any more or less innovative than any other software.
Statistically speaking, the factors "is open source or not" and "innovative" are independent variables. Eiter can be innovative, both rarely are.
thanks for this insightful comment. it's interesting that people "put up with" MS - MS's most satisfied cusomers simply put up with the OS.
on the Mac, the situation is completely opposite. i am wondering if that is because they are often confronted with the alternative (MS) and so happy they don't have to use it. or if it is because there is some genuine quality to the Mac OS experience that everyone appreciates, no matter what the alternatives.
i believe it's the latter. it is really made to be simple, and it really does work. it's not perfect by any means - it's still a computer, and more difficult to use than, say, a shovel, or an iPod.
i talked to an architecture professor friend of mine recently - he was first confronted with a computer when he was nearing 40. he was in the U.S. and supposed to prepare a talk. he got an office in the University of Michigan, but as he sat down to prepare work he noticed that there was no typewriter. only this funny box with the 10" screen. it was the first time he had seen a computer up close. he was too embarrassed to admit that or ask anyone for help, of course, and so set up to figure out that box on his own. within an hour, he held a printed version of his talk in his hands.
can you imagine this happening with any version of windows (3.11, 95, 98, 2k, xp)? no way. with any version of linux? no way.
the difference is the quality of the experience, a quality that is very hard to describe, very hard to attain, and very easy to lose along the way (Mac OS 9.x??). i do believe though that this quality could be easily put into cold, hard numbers if anyone ever tried a large scale experiement... come to think of it, such an experiment would be extremely interesting and certainly enlightening to the linux crowd.
id Software lost $2.75 million to record-breaking piracy on the weekend before Doom 3's release. Thanks, guys!
...]
this statement is based on two false assumptions:
A) people would have bought it if they hadn't pirated it
B) people won't buy it because they pirated it
please stop spreading BSA-FUD. repetition doesn't beget truth.
[waiting for mac version
i RTFA and the most important thing i got out of it is are some simple - almost obvious - perceptions:
- The iPod is going to be redundant when you have 4G of music storage in the cell phone.
- The tech to enable this is 1 - 2 years away.
- There are 400M cell phones sold each year. iPods are sold mainly in the U.S., and are getting everywhere else to the "hip" people and gadget geeks right now - but they are not mass market in the same way that cell phones are. They are not anywhere near. I can go to a remote mountain village in Thailand and buy a Nokia phone. Same in India, Japan, Italy, wherever - cell phones are ubiquitous, world-wide. iPods are ubiquitous in ivy league colleges and in downtown NYC and pretty much nowhere else.
Apple may or may not try to control the DRM market through ITMS but a fact is that the iPod's growth is going to slow down dramatically. and that it won't reach ubiquity.
concluding, i think rather than having a secret master plan to dominate the world, Apple is just hedging it's bets. that's why they won't license their DRM: short term - make money; long term - keep options. sounds like a conservative business strategy to me.
ahh... so refreshing. you have just said everything i wanted to say about the language bias in the (otherwise good) article.
i couldn't agree more. one of our jobs as wanna-be hackers is to learn new languages so that we know more tools and know what to apply in certain situations.
is Python superior to Java? mu.
graham writes that hackers loathe to work on ill defined projects with users who don't know what they want. yet, in real life, that's what happens.
they will call you with some great idea about software they want, and you will go there and slowly but surely figure out that they have no idea what they are talking about - the project is ill defined. users have no clue.
i have seen people react to this situation with disgust: they try to pin down the customers, maybe eventually get then to sign something and then develop exactly as per spec. the outcome is not pleasing for anyone.
in the article graham also writes that great hackers are distinguished by knowing which problems to solve.
the trick to still enjoy these kinds of situations is to get back that: know what your problem is. your problem is that the customers want something, but don't know what. so that problem needs to be solved before any other problems are known.
it's a challenge: can you make the users find out what they want?
so you go ahead and make that your highest priority. talk to them. suggest graphic solutions to them - if they reject them, they will realize more clearly what they want.
this is a long process, and it certainly involves a lot more talking than some hackers can stand. but in the end, coming up with a great product is so satisfying, it's all worth it. besides, while you talk to them you yourself understand more clearly what the problem is, which basically saves you implementation work. because really understanding the problem is also, at the same time, the solution.
disclaimer: in the real world, i see other people miscommunicate with customers first, then implementing a crappy solution to the wrong problem, then, disaster. in fact, in the real world, when they ask me what they did wrong/should improve, all i can answer is mu
you make an interesting point - i felt throughout the article that Graham couldn't decide between "great engineers" and old-fashioned "hackers". in some way they are the same - the great engineers from today are the old-fashioned tinkerers from yesteryear, only with great tools at their disposal.
really great engineers know about great practices but also know when to not use them. really great engineers don't go all-out over practices, procedures, testing patterns, etc - those things are, in a way, for the weak. as in: if you have a weak programming team, you need those things in order to produce something at all. if you have a strong team, the team will instinctively follow those practices anyway, whether or not the know the proper terms for it.
of course, in practice, what i most often see are weak teams who on top of that don't use best practices either and then fail disastrously.
IMHO the best criteria by which do distinguish the great from the masses of others is productivity. the great programmers will still be 100 times more productive than average ones.
ps: by programming i mean software engineering, not hacking together a perl script so that 100 lines fit in 1. i mean all the good things like maintainable, extensible, clean architecture etc.
the only use i can think of is to use the tablet as a notebook - just like i make my notes on paper during meetings. making those notes on the computer screen would not be a huge deal, but it would be useful.
the problem is, in order to be useful, it would have to work perfectly. it would have to work the same way a Newton worked - it would become an electronic notepad.
therefore, it won't work on windows - windows and working perfectly is an oxymoron. it just won't.
i think we will see the same thing that happened with the iPod. a HD based mp3 player was a good idea, and lots of companies tried it before Apple. yet, what they produced was complete crap (i still have an old Nomad lying around.. ). so it never caught on.
Windows tablet PCs are not quite as bad because at least you can still use them as normal notebooks - which is what 99% of people owning them do...
i am pretty sure the new version will be multi-processor aware (given that Q3 was and that all new PowerMacs have dual processors and that id is traditionally populated by ex-next freaks who are now OS X freaks).
so: goodness! as long as your 3D card is recent enough, there will be plenty of processing power to go around. the 3D card will just be way more important than the CPU power.
...they already sell like hotcakes?
Yet I've seen $6 million corporate software with unreadable browser-based interfaces apparently designed by a 16 year old Web designer with attention-deficit disorder.
that's because you can sell it to management more easily.
there are several forces that prevent good GUIs to be implemented in custom software, the first one of which is to spend absolutely no money on GUI design (The programmer is the designer) - this happens frequently in projects i work on. Even though i love GUIs and elegant solutions, i don't get the resources to hire real GUI designers. So i have to make do, doing the best i can. But i know it's a shame.
Then, there are two more forces opposing good GUIs. These both come from management, and from people who will most likely never use the product themselves.
- the R.G.S. - factor: The client is paying good money and they expect a no-nonsense system. Not some toys with cutesy looks. The most manly of these system is the R.G.S - the Real Good System. The R.G.S. has tons of buttons and options which make it incredibly powerful. Because it is so powerful, it is also incredibly hard to learn. Professional training is a must!
Believe it or not, i have known programmers who have intentionally made their systems more complicated so they look more "professional". The really sad thing is: It works, too. You can charge more money for a more complicated system. Or, even though it's completely counter their requirements, clients will have an easier time shelling our more money for a more complex-looking system.
- the Multimedia-factor: The more multimedia the system has built-in, the more modern it appears - regardless of whether the whiz-bang adds anything to the usability. Again, you can charge more money for the whiz-bang system than for a clean and simple design - even though the whiz-bang variety may be harder to use.
it would be interesting to see three experts, the best of the best, on each system: windows, OS X, OS 9, linux, Solaris and have them each fulfill common tasks, and see who is fastest. move files, open email program and send mail, write a letter in a word processor etc (including app start).
in my professional life, i have seen unix experts [fantastically ineffective], windows experts [getting slowed down by a zillion wizards], Max OS X experts [good speed], and OS 9 experts [faster than you can look].
i think a large scale study on this would find that there is an absolute, quantifyable speed difference between the systems. ease of use translates to more efficient and less frustrating work experience.
for example, i use my PC 8 hours per day at work, and i appreciate its qualities. but when i have to do work that can be done on my Mac, i will do it there. it's just more effective.
as an example, i just wasted 15 windows minutes because i suddenly decided to clean up my system and remove all old applications and demo versions i never use. i went through the "add and remove software" thing - half the apps in there are no more on the system. ok, fine. others have "critical errors" when removing. can live with that. then i made the mistake to remove "firebird 0.9.0" because i know i am using 0.9.2. whoops, that deleted 0.9.2 instead. foolish me. a system restore (who knows what prefs are stored where...) and firefox reinstall cost about 15 minutes.
how would i do that on the mac? i go through the app folder and just drop the ones i don't use in the trash. done.
at the end of the day, usability (or non-usability) translates into cold, hard dollars.
i am an expert in Java and a dabbler in Python. i love python for its clean syntax and fully-OO model (everything is an object). also for the elegance with which it can process strings or files.
but i found it lacking in GUI support. Tcl/tk is _not_ the state of the art in GUI building. Far from it, actually.
I was considering writing a client app fully in Python. But then i found that i needed tabbed panes, tables, tree views, as well as the ability to draw graphs in all varieties.
AFAIK Python as none of that. Java has (great!) tables, tabbed panes and tree views built-in, as well as multiple open source frameworks for graphing (i used JFreeChart).
i also found it irritating that i didn't have the strict java package/class name/file name structure. but i assume it can be done in python, too and it's just not enforced.
Oh, and Eclipse. There is nothing like it for Python. I guess there are python plugins, but they don't come with the wide range of tools that are available for Java (refactoring, etc). Those are huge, huge time-savers, too.
I am perfectly willing to give beautiful Python another chance if somebody can provide Python-equivalents for all of the above.
We also have Java for the write-once-run-anywhere thing. I fail to believe that .NET/Mono/.GNU will be better or solve any new problems that have not already been solved.
They provide much needed competition. Because of this, Java is going to get better. Also, different approaches might open up new avenues... I am particularly interested in how Gtk# will match up with Swing.
Already, improvements from c# have made it into Java. Others will hopefully make it into future versions. Like c#'s event handling syntax:
txtRegex.Changed += new EventHandler(ChangedSomething);
i would love to have that in Java. i am always kind of annoyed with having to write some anonymous inner class to call my event handling method. (note to Sun: event handling. it shouldn't be difficult.)
so... you say that taking a Windows box along with all the tech developed for it (Visual Studio, DirectX, networking), then stripping the OS and hardware of all non-gaming related features, and packing it into an ugly-as-sin box is the "most innovative console ever"?
Microsoft created the ultimate gaming PC, put it in said ugly-as-sin box, and claimed it was a console. then proceeded with the usual tactics to sign up or buy out develpers etc. it's impressive in the same way an 800 pound gorilla is impressive. but it's not innovative.
anekdote: i was running in semi-two user mode recently and tried to start iTunes. i got the error message "bla... another user is using iTunes... bla". the other user logged in had not quit iTunes.
== lameness.
to me, that implies that certain corners have been cut in OS X development, and tweaking the system for true multi-user capability would be _hard_ (if you are using Aqua, that is).
meditate. then you don't need to sleep. i am not kidding. meditation allows your mind to completely relax while staying awake.
drugs are your enemy - clouding your judgement, hiding your problems, nothing but empty promises. as long as you rely on drugs, you will continue on as you have. so why not try something else? you seem to believe in drugs. that's your first problem - the realization that drugs can not help you.
I completely agree - kids are insanely creative. Here is a little story: We were developing a product at Apple [i was an intern at the time] which would later turn into Stagecast, a visual programming language for Kids. You can create characters and give them simple rules with this program.
We were at a school doing a user-test. One of the researchers gave a 5 minute introduction to the software - how to use it. I timed it: It was _exactly_ 5 minutes. The the kids, ages 8 - 9, would have a go at it. What they produced was just unbelievable in terms of variety, detail, and... creativity. We had lemmings jumping off cliffs and dying a bloody death, we had roses flowering, we had characters running around on the screen, we had a full-fleged traffic simulation complete with traffic jam... Each of those children did something completely different from the next. Not knowing what to do was not a problem any of them experienced. At the end of the lesson we had to pry them away from the computers.
So if kids are insanely creative - then to not be creative when they are adults must be something they get taught by society.
the newton was too far ahead of its time. namely the problems with handwriting recognition were not solved. it should never had shipped at the time it did. but corporate needed to ship, and so the product sucked.
palm went a different route and eliminated the problems w/ handwriting recognition by making users learn a new handwriting/alphabet (graffiti). something Apple and the Newton group would have never, ever considered - making the user adapt his to the machine was pretty much a sacrilege.
only the last newton had halfway-decent handwriting recognition, and it wasn't that good, either.
i think 4G is closer than we think.
Japan's NTT DoCoMo is testing it.
India is skipping 3G alltogether and going straight to 4G.
the reason: 3G is too little, too late. It's not completely packet-based (voice calls are still point-to-point), and it allows for only up to 300kbps. read the fine print: that's bits per second. so in the best of all cases (3am, drunks home in bed, etc), you get... 30kB/seconds. rather underwhelming.
with 4G, on the other hand, NTT DoCoMo targets 100Mbit/s for the customer.
thanks for answering my concerns. i hereby admit i am a lazy-ass and rather than looking at the code, the bugs, the process, etc. before talking about security, i ask slashdot. /. readers now know FireFox is secure.
... and that's all it says. i wouldn't exactly guess from that that
i would like to note, though, that as a side-benefit to my procrastination, all
in my defense, i also want to note that FireFox' own security claims are rather modest, as noted on the homepage:Built with your Security in mind, Firefox keeps your computer safe from malicious spyware by not loading harmful ActiveX controls. A comprehensive set of privacy tools keep your online activity your business.
"we've considered security at every step of the way, from design, to implementation, to testing. We've got some of the top minds in the business constantly trying to find holes in our security story. They find 'em and we fix 'em.".
maybe it's time to step up the marketing?
I have been using FireFox for a long while. It's great.
But then, i don't think it has been designed with security in mind as much as convenience, exactly the same predicament that made IE such a huge security hole. There is auto-install of plug-ins, there is auto-install of skins - i kind of have a hard time believing that all of these were written by people wrecking their brains about possible exploits. [if you know different, let me know]
With IE, we know it's broken beyond fixing. With FireFox, we don't know. It has not been tested, as it has not been the target of serious malware writers.
Imagine - unlikely as it may be - FireFox wins the new browser war. Will it still be safe? IMHO, only a real security model like the one built into Java can really protect users.
And from working with that, i know that it places lots of seemingly unnecessary and annoying constraints on development and web apps.