I was an intern at Apple in 1997 when Steve came back. We all knew he would save the company and were happy when Amelio left.
This was the time of Windows 95 vs OS 9, pre-OS X. What was a huge problem back then was the Not Invented Here syndrome, which sounds silly until you realize that this is bound to happen at a company like Apple. Apple has the brightest engineers and used to make the best software and hardware. Now, if you are the best, who is going to voluntarily run Windows 3.x (for example) just to keep on top of what's happening on the other side. So at Apple, Win95 was pretty unknown. NT - even more unknown. People had no idea why it was better than OS 9. All they could see was the uglier interface.
The exact same thing happens these days with XCode and Objective-C. Once upon a time, Objective-C and InterfaceBuilder and the predecessor to XCode were light-years ahead of the competition. They were literally about 10 years ahead in NeXT times. Like, two or three generations ahead. Nowadays, they are falling behind. but because no one at Apple even considers to use anything else, they still think they are the best. XCode developers think that XCode is way better than anything else out there, even though VS.NET, Eclipse, and IDEA for Java development are far better. XCode's latest improvement was auto-completion (that works)... Eclipse and IDEA meanwhile are working on ever more refined refactoring mechanisms that automate away days and weeks of development time.
As for Objective-C I don't know it well enough to make a judgement but the syntax is certainly extremely different from anything else. I don't want to lean it if it is just for the sake of writing proprietary OS X-only software.
But since Obj-C is already dynamic and can do "everything" a dynamic programming language can do, why not at least provide wrappers for Ruby and Python? Ruby wrappers should be totally simple to write, and then I could just use my favorite programming language to program my favorite OS. Ruby would really be a perfect fit for OS X - elegance from within.
Developer's ignorance plays a good part in this too. If XCode is better than the previous XCode and works for you, why should you use anything else. I actually run into this problem with colleagues who use CodeWarrior or some other abomination of an IDE, or who use no IDE at all and claim that that's better for them than learning an IDE. Yeah, right. I have not met anybody who wanted to switch back from a modern IDE (IDEA, Eclipse, VS.NET) to a text editor or emacs or some glorified-text-editor-IDE like CW or XCode. Nobody goes back. The productivity gains are not only real, they are also significant.
I'm not sure what the goals were. I was under the assumption that it was a cross platform application environment, completely with a cross platform GUI.
Clearing up some points here: - Eclipse is written in Java but uses its own GUI framework called SWT - Azureus is written in Java / SWT as well because it's based on the Eclipse Rich Client Platform - the Eclipse app frameworks generalized so they can be used for any GUI application. - OOo is not pure Java AFAIK but I never really understood why, maybe somebody else can clear this up. - Java on the Mac traditionally has sucked and unfortunately continues to suck though not as much as it used to.
As for the goals of creating a cross platform GUI framework, for Java itself this was hindered by the fact that Sun doesn't have a clue about GUIs and now, 10 years later, still didn't get it. Sun is a CLI company.
But there are others: WxWindows and Tk, together with Ruby, Python and C# as JVM-type cross platform languages.
There are no _really good_ cross platform GUI frameworks that I am aware of, and it's really a shame. I would love to have a "Ruby on Rails" kind of GUI framwork - simple, powerful and just working.
I don't see why at least 90% of the programs available for computers are not Java.
I am wondering about this too. I think part of the answer is the bad rep Sun got for version 1.0 through 1.3 which had god-awful slow GUIs. Another part is most likely that while it's possible to write a Swing GUI that's indistinguishable from native speed, it's not easy to do.
I am an expert Swing programmer, and I know I could rewrite almost all existing native windows GUI apps in Swing; but there are many pitfalls and it is extremely easy for a novice to fall into one of them and end up with a sluggish, freezing UI. Easy things are not easy in Swing. As a Framework, both design and implementation are a catastrophic failure. Much easier to cobble something together in Visual Studio..
Look at the JGoodies applications to see what's possible with Swing.
1) People buy shiny things. If you want to sell something it's a good idea to make it shiny.
2) Eye candy is value. I do much prefer to look at my extremely pretty - but at the same time very well designed - OS X desktop to Windows or Linux. Take the Fonts - is quadruple anti-aliasing eye candy? It looks about 1000 times better than ClearType and is easier to read. Transparency effects don't add much value - but they do add a little bit.
Eye candy is not everything, nor perhaps the most important thing, but it undeniably is value.
It's true that trying to not get fired is a pretty good motivation to say yes to everything thrown at you. I even know westerners who do it.
But it may also be a cultural thing.
I now live in Asia and the culture is that you DO NOT under any circumstances tell your boss off. Or anybody else of "more respected" status like your dad or even any older, presumably wiser person.
People here say no but they say it in a way that an American or other westerner would hear as a clear and loud yes. It's subtle. I can now tell a yes-that-means-no from a yes-that-means-yes but it took me a while. And some westerners who live here simply never get it.
I find your comment strange especially because you claim to love Ruby. If you love Ruby, Rails is your only option for web frameworks.
On so many occasions I just felt cheated. It was all valid ruby code, but it just didn't seem in the spirit of ruby. I am guessing, but maybe this is where your negativity is coming from? I find it to be very much in the spirit of Ruby, but I guess everybody is entitled to their own opinion on what the spirit of Ruby really is. My namespace was cluttered with a million methods. The names of which didn't seem logical and_reminded_me_of_php_function_names_... Strange. I found the names to be extremely logical. Sometimes overly verbose, but I consider that a good thing. Better be too clear than too unclear. If I made changes to the database, I either had to a) wipe the directory and start over reimplementing my changes. Or b) go through all the MVC code and find the references to the database. Option a) is just bizarre. Option b) - well if you did rename variables (columns) you have to rename them everywhere, no way around it.
Code generation in Ruby is for your convenience. The code generated is minimal, e.g. pretty much just the files in the right places. At no point do you have to use code generation. If it doesn't work for your style of development or your project, don't do it.
The experience seemed more like programming in php with a twist of mod_perl. Um, No.
The 15 minute videos are somewhat misleading in several ways: 1) You can follow it and build a web app in 15 minutes which is great but as soon as you need something a little bit different you are out in the cold and on your own and there is no way to do it using the information in the video. 2) If, on the other hand, you have plenty of experience with Rails, you can in fact program a real live application prototype in 15 minutes. It's that flexible. It's that powerful.
The learning process to get from noob to masterful user of Rails is difficult. It's hard. You need to understand the concepts behind Rails - they make sense, but they are also subtle. I mean - Rails uses _all_ the power of a fully dynamic, fully OO programming language. It's extremely powerful and extremely flexible but it hides all that behind its convention over configuration philosophy.
The bottom line is: Rails will just work for 99% of all things you try to do. For the remaining 1% you need to dig deep and understand, and Rails lets you.
The problem is just that the problem with automatic code generation in Rails simply doesn't exist. The guy who posted this apparently had some beef with it (not good enough?) but the facts are: - If you want to use code generation, you can. - The code generated by this is pretty minimal (a good thing) - You can run it again and again - Never in Rails development do you HAVE TO use it. Ever.
This last point is why I think the criticism regarding the code generation is a load of BS. I never had an issue with this in Rails dev either.
Yes, I have implemented a commercial app using RoR.
It goes like this:
1) RoR is WONDERFUL 2) RoR takes a heck of a lot more effort than those blog-in-5-minutes kind of videos make you believe. It takes deep understanding. 3) RoR is WONDERFUL
Number 2 is where I started struggling. I had to learn - the hard way - that in order to use Ruby on Rails properly, you have to understand what's behind it. You have to learn Ruby which pretty much means you have to purchase the pragmatic programmer's book. You also have to learn RoR and purchase the other pragmatic programmer's book, Agile Web Development with Rails.
Both books contain crucial information that is not easily found on the web or in the RoR mailing list.
The bottom line is then that RoR is indeed the bee's knees, better than Java/PHP or anything else I have used and better by a very large margin. Going back to Java after Ruby development is a huge letdown - I didn't know how bad Java really was before I learned Ruby.
I learned Ruby and RoR and finished my project on time. It's well worth the investment. I am also planning to switch all my development over to Ruby. Java is on its way out.
I feel like I am repeating myself ad nauseam - call it preaching if you will. But I think that any user of any IDE and certainly any developer of any IDE needs to look at Eclipse/Java. This is the state of the art.
Surely, word completion better than nothing, but Eclipse has changed the whole way I write Java programs. Nothing out there like it for Python, unfortunately - the PyDev plugin only does some word completion and some very welcome but very basic error detection and that's it.
Here is what I do with Eclipse every day:
- I don't declare variables (ok in python you don't anyway), instead i write foo = obj.getFoo() and auto-fix it to declare it local or instance variable as desired. - I Open the calling chains for a method. That is, I see all code that calls my method and all code that calls these methods and so on. I get a whole inverse calling tree; takes about a second. - Find all usages of a variable. Or all write to operations. Or all read operations on a variable. - Remove variables that are not used. For example Eclipse marks all variables that are "never read". That means the variable is there, gets assigned to something but is then never used. Happens a lot with legacy code. - Hover over methods / classes to see the docs - Auto-complete that is smart. For example if I write "Foo myFoo = obj." and then hit ctrl-space, it will list those methods that return an object of type Foo first. The same could be done for Python even though it's dynamically typed. - rename methods/variables - the rename affects all code inside the project and even all code defined in dependent projects. What was once a huge and scary (will it work?) global search and replace operation is now a no-brainer. Which makes it MUCH more likely that things are named sensibly just because renaming is so easy. Rename also allows moving classes to new packages and so on - all automatically updated. - Add / remove method parameters. Again, globally, all dependent code is automatically updated and I get to define a default value for add. - See errors marked as I type. There is no compile button. Everything is compiled at all times, in the background. This is the way it should be, IMHO. - Auto imports. Say you write a = ExternalObject() - Eclipse will automatically add that to the import statements. If it can't be found in the project scope but is in the project scope of another project in the workspace it will offer to add that other project to the dependencies and import the class. Basically I never waste a thought on import statements. I never even look at them unless there's a conflict (they are folded away) - Mark several lines of code and extract a method from it. - Tons of other things too of course.
I hear that IDEA and even VS.NET can do the same things. But all the others really need to take a good sharp look at these things and improve their IDEs. Yeah, XCode, that would be you. It's not 1995 anymore. Or 1975 for you Emacs guys. Emacs was very competitive for a long time mainly because there was no innovation in IDEs. That has changed now.
Microsoft is an anti SDE company anyway. They employ the brightest hackers on top of the most broken platform in the world. Software that was not good to begin with, then got hacked on for decades, then almost saved by a dramatic switch to NT, then watered down with XP and now it's a huge pile of broken shit wrapped in a gigantic marketing budget and service/support system. It takes an active group of really bright people just to prevent a total collapse.
To have no proper code quality check / audit team just fits this picture. I would expect MS to have a team which is solely responsible for checking checkins and finding smelly code. And getting paid for that. Apparently they don't.
The goal of the competition is obviously to find that one genius amongst the 5000. Which doesn't sound like such a bad idea, really. Only BillG fans - of which there are many in India - will enter, but what's bad about that? So the genius is fiercely loyal - bad thing? Only when he learns the truth and turns;)
As for China good, India bad... I don't buy it. So, you work with a shit company from India and a good one from China. Don't nationalize your experience. Due to the huge boom in IT in India and probably the lack of other opportunities there are a huge number of people in IT there that really should not be. Remember 2000 in Silicon Valley? Any monkey was hired as a web-designer there in those days, for $90 an hour. So what if you have no clue, it's good money! Same thing in India today - only on a much larger scale.
I second that. I can go down to the store right now and purchase a complete laptop for $500. And that includes an LCD screen, profit for the dealer, profit for the manufacturer, etc. -
Building an XBOX does NOT cost $470 in raw materials.
I usually say "concurrent programs are guarnteed to have errors" but I am not talking about people - like above poster - who write clean well architected frameworks to make it manageable. I am talking about all the other shit that is out there, the stuff that I get to see in real life every day.
It's no wonder that Symantec and other AV companies were reluctant to react - they produce software that's almost as intrusive.
For example, ZoneAlarm installs a low level network filter that listens to all network traffic. It also just so happens to break a few things it should not break, like Ruby networking. The driver sits at such a low level that turning off ZoneAlarm doesn't disable it - you have to uninstall the software to get rid of it.
Name any Symantec product - even backup software - and it requires you to restart the system. I wonder why. I want to have software that does its job, without side-effects.
If Microsoft were not the worst offender itself (Visio update installed - please restart the system!) it should release a code of conduct for software: - Application programs shall not install themselves anywhere in/Windows. Only exceptions are hardware drivers and the registry entry. - Applications shall not require a restart to be installed. - Users can stop applications via the GUI, and all aspects of the software will shut down
The problem with Windows is that it encourages programs to install themselves all over the system. MS provides the worst example with the ball of hair that is Office.
Intel Yonah specs have just been leaked. What I find most surprising is the prices - 2.16GHz will set you back $640 for the processor alone. Making it rather unlikely that the iBook will ship at that speed.
More likely, it will ship at 1.66GHz which is the lowest-spec Yonah. If it's dual core, it will still be faster than the Powerbook for native apps. But it will also still be slower than the Powerbooks for professional apps, e.g. Photoshop.
Unless they ship a dual core Powerbook 2.16 right along with it.
I wonder if one could use one core to do a prefetch-translate in rosetta, leaving the other core to run the translated app at native speed.
Amen to that. Lots of the latest, feature laden do-it-all phones have crap battery life. I am sure they will improve but until they do, they are useless as cameras and mp3 players and inferior as phones.
Do not forget one other thing: Apple doesn't make PDAs. Before the iPod, there were lots of mp3 HD players. I had a Creative Nomad, which was just awful - the buttons and menus were so confusing that I could not learn them in 2 months of ownership. 3 hours battery life tops. Taking the rechargeable AA batteries out required a degree in electronics and a screwdriver. I was actually unable to use the included windows software and eventually resorted to iTunes/Mac with a plugin to fill it. My friend had a PJB-100, which was acceptable albeit much larger than an iPod and not nearly as nice looking.. and cost $700 (!).
Then the iPod came along. Not only was it usable, it was as close to perfect as I have ever seen a piece of hardware. My non-techie girlfriend learned how to use it in 5 minutes with NO instructions whatsoever - a first.
In my view, the original question is easily answered: There hasn't been a breakthrough in usability for PDAs as there has been for mp3 players. PDAs are hard to use. How long does it take me to enter a new appointment in my calendar? If it takes longer than scribbling on a paper calendar then I don't want it.
I agree that Java has not improved in ages. I write Java client apps and have been for a while. The JVM has come along very well and since 1.4 it allows us to write really great end user apps - it's fast as hell. Once they get the memory usage under control it will be perfect. But the language and the libraries are suffering from the weight of (bad) past decisions. There are usually about 3 million ways to do anything in Java. The language was great when it came out, but it has not been improved at all. The improvements in 5.0 are really a joke - too little, too late, and an unbearably ugly syntax.
Here's what Sun would have to do to improve Java:
Sit down and decide on what to keep and what to deprecate with an eye on deprecating as much as possible and leave a clean orthagonal set of libraries
rewrite all the tutorials so they make sense, then provide a patterns library for good solutions for common problems (non-existent)
quit wasting resources on second-best IDEs and embrace Eclipse and the rich client platform. Get over it.
educate people about threading (other than the "use it when your program is slow, hurrh" kind of crap in the current tutorials).
Then make the language nicer.
Ruby is publicly available and everyone at Sun should be made to read the Ruby book [1]. Java would improve dramatically as Sun would suddenly become aware of how far behind Java really is.
Newsflash to Sun: Being miles ahead of c doesn't cut it anymore!
It's not perfect, but it represents a lot of what people have learned from experience. Apple is using a version of C that fakes object orientation through a runtime and some clever preprocessing. Nobody expected objective C to be around in the year 2005.
I don't know about the rest of the comment, but this statement is completely wrong.
Objective C may be ancient and cryptic but it is and always has been fully OO. It's dynamic which means you can generate classes / subclasses / methods on the fly. Not something that C# or Java could do.
On a side-note, I used to think that these dynamic language features are too clever to use, but Ruby and Ruby on Rails have convinced me otherwise.
I am not opposed to user prefs, but it does not solve the problem as you still have to think about the default setting.
Correct default settings make the difference between a great GUI and a horrible GUI.
And blank tabs are the only correct interpretation of "new". Showing the home page is redundant, and showing the previous page is just plain weird - why would I want to get the same information that I just had _again_? No one would consciously open two windows/tabs with the exact same contents, so why should the browser do it per default?
Yeah, wasting karma.. but.. This is a fantastic idea!
I would have a crawler go over my emails and send it back to a central server (again, Google comes to mind). Then that server can make a global network of connected emails. It would not really reflect social networks because email doesn't say how real or strong the contact is as I easily fake to know all manner of celebrities as long as I find their email addresses.
I really would like to see my 6 degrees network, and I also would like to see how large it really is. If the 6 degrees of separation theory were true, then all email users world-wide should be in it.
Science (or, Science!) has become a religion all in itself so it's not surprising people don't see that much difference.
There are many reasons, the most important the wide disconnect between real science, what's going on in the labs and the science for dummies as presented in the media. It's very hard to explain the real goings on in layman's terms but it's nearly impossible when trying to sell a story. So the media feeds us half-truths and made up things and people know it's BS and don't trust in it.
People are losing faith in science.
At the same time, the western scientific community has only itself to blame for being extremely closed minded about many alternative treatments. For example, I tried Reiki - which involves exchanging energy with the healer without touching. The thing is, it just works. You don't have to believe in it. You don't have to chant. You don't have to do anything special. You can feel the effects immediately. In terms of immediacy of effects, it's like taking an aspirin.
I have no idea how it works though - western science has no explanation for it. Why? Because even though it quite obviously works for anybody willing to try, western science has stubbornly refused to accept it. This is slowly starting to change - very slowly, but the point is that if my doctor tells me something won't work that obviously works I lose trust in him. I lose trust in western medicine. How scientific is it to stick your head in the sand and pretend a phenomenon does not exist when you find no explanation for it? Look harder!
Basically, at this point, I use western medicine only when I break a bone or to prevent wounds from getting infected. For that, it works excellent. For things like weird stomach problems, general feeling of uneasiness, back pain, RSI, etc, I use alternative methods - foot reflexology, acupuncture, Reiki are all effective tools for these. It works for me - I have not taken a sick day since 1997. In fact, it works well enough that I would wholeheartedly recommend it to anyone, the only problem is finding qualified practitioners.
The day the big faceless outsourcing companies in India figure out how to nurture employees for creativity, that's the day we have to fear.
As of now, they seem to be blissfully unaware, and so we can compete easily on creativity. They produce crap in large numbers, and for whom it's ok, it's OK. We make the interesting and innovative things.
And before you start flaming about how good the outsourced software really is, please give an example, and explain why it's good. All I have seen was useless crap, just like the stuff produced by big faceless corporations over here - unsurprisingly.
You are absolutely right, it's very simple: People buy new computers because the old one is "slow". 99% of the population does not know that it's slow because it's full of spyware (usually) or because it doesn't have enough memory (also usually). Instead, they think they need a 3GHz P4 to run word and email.
Old computers used to be slow because they _were_ too slow for modern applications. In our times, old computers are slow because they are full of spyware and viruses - while the hardware would be completely adequate.
To the common PC user it makes no difference - slow is slow. That, more than any cost efficiency argument, prompts people to buy new machines.
I am buying an iBook for my wife because I really don't feel like explaining terms like "Spyware" to her, and I don't feel like keeping her machine spyware and worm free.
To address your questions: Why is IBM unvailing it now?
Because they could not get them done sooner.
There are no known potential customers for this chip.
Steve Jobs said in his keynote that there would be many exciting PPC based products before the switch to Intel. Did you think they were just going to stop making computers until mid-2006? My bet is that the MPs are going into new quad powermacs and the low power 970FXs will go into G5 PowerBooks and iBooks.
So why would anyone buy them?. The quads because they are going to blow away any x86s you can buy today, and the PowerBooks because people such as myself have been sitting on their ageing G4 PowerBooks, waiting for a real upgrade to come along. I have a 667MHz TiBook and it's just only barely usable. I will buy the G5 powerbook as soon as it comes out.
They are answering Apple's problems - just a year or two late.
If you look at currently published Intel roadmaps, there are dual core laptop chips running at 2GHz+ promised for Q1 2006.
IBM is at least 2 years behind in that area. So IBM is almost keeping up with the x86 world when it comes to desktops and years behind on laptops. And unwilling to put its own money into developing low power G5s.
You don't need to be a Nostradamus to see why switching is Apple's only reasonable option.
I was an intern at Apple in 1997 when Steve came back. We all knew he would save the company and were happy when Amelio left.
.NET) to a text editor or emacs or some glorified-text-editor-IDE like CW or XCode. Nobody goes back. The productivity gains are not only real, they are also significant.
This was the time of Windows 95 vs OS 9, pre-OS X. What was a huge problem back then was the Not Invented Here syndrome, which sounds silly until you realize that this is bound to happen at a company like Apple. Apple has the brightest engineers and used to make the best software and hardware. Now, if you are the best, who is going to voluntarily run Windows 3.x (for example) just to keep on top of what's happening on the other side. So at Apple, Win95 was pretty unknown. NT - even more unknown. People had no idea why it was better than OS 9. All they could see was the uglier interface.
The exact same thing happens these days with XCode and Objective-C. Once upon a time, Objective-C and InterfaceBuilder and the predecessor to XCode were light-years ahead of the competition. They were literally about 10 years ahead in NeXT times. Like, two or three generations ahead. Nowadays, they are falling behind. but because no one at Apple even considers to use anything else, they still think they are the best. XCode developers think that XCode is way better than anything else out there, even though VS.NET, Eclipse, and IDEA for Java development are far better. XCode's latest improvement was auto-completion (that works)... Eclipse and IDEA meanwhile are working on ever more refined refactoring mechanisms that automate away days and weeks of development time.
As for Objective-C I don't know it well enough to make a judgement but the syntax is certainly extremely different from anything else. I don't want to lean it if it is just for the sake of writing proprietary OS X-only software.
But since Obj-C is already dynamic and can do "everything" a dynamic programming language can do, why not at least provide wrappers for Ruby and Python? Ruby wrappers should be totally simple to write, and then I could just use my favorite programming language to program my favorite OS. Ruby would really be a perfect fit for OS X - elegance from within.
Developer's ignorance plays a good part in this too. If XCode is better than the previous XCode and works for you, why should you use anything else. I actually run into this problem with colleagues who use CodeWarrior or some other abomination of an IDE, or who use no IDE at all and claim that that's better for them than learning an IDE. Yeah, right. I have not met anybody who wanted to switch back from a modern IDE (IDEA, Eclipse, VS
I'm not sure what the goals were. I was under the assumption that it was a cross platform application environment, completely with a cross platform GUI.
Clearing up some points here:
- Eclipse is written in Java but uses its own GUI framework called SWT
- Azureus is written in Java / SWT as well because it's based on the Eclipse Rich Client Platform - the Eclipse app frameworks generalized so they can be used for any GUI application.
- OOo is not pure Java AFAIK but I never really understood why, maybe somebody else can clear this up.
- Java on the Mac traditionally has sucked and unfortunately continues to suck though not as much as it used to.
As for the goals of creating a cross platform GUI framework, for Java itself this was hindered by the fact that Sun doesn't have a clue about GUIs and now, 10 years later, still didn't get it. Sun is a CLI company.
But there are others: WxWindows and Tk, together with Ruby, Python and C# as JVM-type cross platform languages.
There are no _really good_ cross platform GUI frameworks that I am aware of, and it's really a shame. I would love to have a "Ruby on Rails" kind of GUI framwork - simple, powerful and just working.
I don't see why at least 90% of the programs available for computers are not Java.
I am wondering about this too. I think part of the answer is the bad rep Sun got for version 1.0 through 1.3 which had god-awful slow GUIs. Another part is most likely that while it's possible to write a Swing GUI that's indistinguishable from native speed, it's not easy to do.
I am an expert Swing programmer, and I know I could rewrite almost all existing native windows GUI apps in Swing; but there are many pitfalls and it is extremely easy for a novice to fall into one of them and end up with a sluggish, freezing UI. Easy things are not easy in Swing. As a Framework, both design and implementation are a catastrophic failure. Much easier to cobble something together in Visual Studio..
Look at the JGoodies applications to see what's possible with Swing.
You are missing two things:
1) People buy shiny things. If you want to sell something it's a good idea to make it shiny.
2) Eye candy is value. I do much prefer to look at my extremely pretty - but at the same time very well designed - OS X desktop to Windows or Linux. Take the Fonts - is quadruple anti-aliasing eye candy? It looks about 1000 times better than ClearType and is easier to read.
Transparency effects don't add much value - but they do add a little bit.
Eye candy is not everything, nor perhaps the most important thing, but it undeniably is value.
It's true that trying to not get fired is a pretty good motivation to say yes to everything thrown at you. I even know westerners who do it.
But it may also be a cultural thing.
I now live in Asia and the culture is that you DO NOT under any circumstances tell your boss off. Or anybody else of "more respected" status like your dad or even any older, presumably wiser person.
People here say no but they say it in a way that an American or other westerner would hear as a clear and loud yes. It's subtle. I can now tell a yes-that-means-no from a yes-that-means-yes but it took me a while. And some westerners who live here simply never get it.
Oh... signs of getting old, I am repeating my own argument.
I find your comment strange especially because you claim to love Ruby. If you love Ruby, Rails is your only option for web frameworks.
On so many occasions I just felt cheated. It was all valid ruby code, but it just didn't seem in the spirit of ruby.
I am guessing, but maybe this is where your negativity is coming from? I find it to be very much in the spirit of Ruby, but I guess everybody is entitled to their own opinion on what the spirit of Ruby really is.
My namespace was cluttered with a million methods. The names of which didn't seem logical and_reminded_me_of_php_function_names_...
Strange. I found the names to be extremely logical. Sometimes overly verbose, but I consider that a good thing. Better be too clear than too unclear.
If I made changes to the database, I either had to a) wipe the directory and start over reimplementing my changes. Or b) go through all the MVC code and find the references to the database.
Option a) is just bizarre. Option b) - well if you did rename variables (columns) you have to rename them everywhere, no way around it.
Code generation in Ruby is for your convenience. The code generated is minimal, e.g. pretty much just the files in the right places. At no point do you have to use code generation. If it doesn't work for your style of development or your project, don't do it.
The experience seemed more like programming in php with a twist of mod_perl.
Um, No.
The 15 minute videos are somewhat misleading in several ways:
1) You can follow it and build a web app in 15 minutes which is great but as soon as you need something a little bit different you are out in the cold and on your own and there is no way to do it using the information in the video.
2) If, on the other hand, you have plenty of experience with Rails, you can in fact program a real live application prototype in 15 minutes. It's that flexible. It's that powerful.
The learning process to get from noob to masterful user of Rails is difficult. It's hard. You need to understand the concepts behind Rails - they make sense, but they are also subtle. I mean - Rails uses _all_ the power of a fully dynamic, fully OO programming language. It's extremely powerful and extremely flexible but it hides all that behind its convention over configuration philosophy.
The bottom line is: Rails will just work for 99% of all things you try to do. For the remaining 1% you need to dig deep and understand, and Rails lets you.
Interesting.
The problem is just that the problem with automatic code generation in Rails simply doesn't exist. The guy who posted this apparently had some beef with it (not good enough?) but the facts are:
- If you want to use code generation, you can.
- The code generated by this is pretty minimal (a good thing)
- You can run it again and again
- Never in Rails development do you HAVE TO use it. Ever.
This last point is why I think the criticism regarding the code generation is a load of BS. I never had an issue with this in Rails dev either.
Yes, I have implemented a commercial app using RoR.
It goes like this:
1) RoR is WONDERFUL
2) RoR takes a heck of a lot more effort than those blog-in-5-minutes kind of videos make you believe. It takes deep understanding.
3) RoR is WONDERFUL
Number 2 is where I started struggling. I had to learn - the hard way - that in order to use Ruby on Rails properly, you have to understand what's behind it. You have to learn Ruby which pretty much means you have to purchase the pragmatic programmer's book. You also have to learn RoR and purchase the other pragmatic programmer's book, Agile Web Development with Rails.
Both books contain crucial information that is not easily found on the web or in the RoR mailing list.
The bottom line is then that RoR is indeed the bee's knees, better than Java/PHP or anything else I have used and better by a very large margin. Going back to Java after Ruby development is a huge letdown - I didn't know how bad Java really was before I learned Ruby.
I learned Ruby and RoR and finished my project on time. It's well worth the investment. I am also planning to switch all my development over to Ruby. Java is on its way out.
I feel like I am repeating myself ad nauseam - call it preaching if you will. But I think that any user of any IDE and certainly any developer of any IDE needs to look at Eclipse/Java. This is the state of the art.
Surely, word completion better than nothing, but Eclipse has changed the whole way I write Java programs. Nothing out there like it for Python, unfortunately - the PyDev plugin only does some word completion and some very welcome but very basic error detection and that's it.
Here is what I do with Eclipse every day:
- I don't declare variables (ok in python you don't anyway), instead i write foo = obj.getFoo() and auto-fix it to declare it local or instance variable as desired.
- I Open the calling chains for a method. That is, I see all code that calls my method and all code that calls these methods and so on. I get a whole inverse calling tree; takes about a second.
- Find all usages of a variable. Or all write to operations. Or all read operations on a variable.
- Remove variables that are not used. For example Eclipse marks all variables that are "never read". That means the variable is there, gets assigned to something but is then never used. Happens a lot with legacy code.
- Hover over methods / classes to see the docs
- Auto-complete that is smart. For example if I write
"Foo myFoo = obj." and then hit ctrl-space, it will list those methods that return an object of type Foo first. The same could be done for Python even though it's dynamically typed.
- rename methods/variables - the rename affects all code inside the project and even all code defined in dependent projects. What was once a huge and scary (will it work?) global search and replace operation is now a no-brainer. Which makes it MUCH more likely that things are named sensibly just because renaming is so easy. Rename also allows moving classes to new packages and so on - all automatically updated.
- Add / remove method parameters. Again, globally, all dependent code is automatically updated and I get to define a default value for add.
- See errors marked as I type. There is no compile button. Everything is compiled at all times, in the background. This is the way it should be, IMHO.
- Auto imports. Say you write a = ExternalObject() - Eclipse will automatically add that to the import statements. If it can't be found in the project scope but is in the project scope of another project in the workspace it will offer to add that other project to the dependencies and import the class. Basically I never waste a thought on import statements. I never even look at them unless there's a conflict (they are folded away)
- Mark several lines of code and extract a method from it.
- Tons of other things too of course.
I hear that IDEA and even VS.NET can do the same things. But all the others really need to take a good sharp look at these things and improve their IDEs. Yeah, XCode, that would be you. It's not 1995 anymore. Or 1975 for you Emacs guys. Emacs was very competitive for a long time mainly because there was no innovation in IDEs. That has changed now.
Microsoft is an anti SDE company anyway. They employ the brightest hackers on top of the most broken platform in the world. Software that was not good to begin with, then got hacked on for decades, then almost saved by a dramatic switch to NT, then watered down with XP and now it's a huge pile of broken shit wrapped in a gigantic marketing budget and service/support system. It takes an active group of really bright people just to prevent a total collapse.
;)
To have no proper code quality check / audit team just fits this picture. I would expect MS to have a team which is solely responsible for checking checkins and finding smelly code. And getting paid for that. Apparently they don't.
The goal of the competition is obviously to find that one genius amongst the 5000. Which doesn't sound like such a bad idea, really. Only BillG fans - of which there are many in India - will enter, but what's bad about that? So the genius is fiercely loyal - bad thing? Only when he learns the truth and turns
As for China good, India bad... I don't buy it. So, you work with a shit company from India and a good one from China. Don't nationalize your experience. Due to the huge boom in IT in India and probably the lack of other opportunities there are a huge number of people in IT there that really should not be. Remember 2000 in Silicon Valley? Any monkey was hired as a web-designer there in those days, for $90 an hour. So what if you have no clue, it's good money! Same thing in India today - only on a much larger scale.
I second that. I can go down to the store right now and purchase a complete laptop for $500. And that includes an LCD screen, profit for the dealer, profit for the manufacturer, etc. -
Building an XBOX does NOT cost $470 in raw materials.
Comments like these are why I read /.
I usually say "concurrent programs are guarnteed to have errors" but I am not talking about people - like above poster - who write clean well architected frameworks to make it manageable. I am talking about all the other shit that is out there, the stuff that I get to see in real life every day.
It's no wonder that Symantec and other AV companies were reluctant to react - they produce software that's almost as intrusive.
/Windows. Only exceptions are hardware drivers and the registry entry.
For example, ZoneAlarm installs a low level network filter that listens to all network traffic. It also just so happens to break a few things it should not break, like Ruby networking. The driver sits at such a low level that turning off ZoneAlarm doesn't disable it - you have to uninstall the software to get rid of it.
Name any Symantec product - even backup software - and it requires you to restart the system. I wonder why. I want to have software that does its job, without side-effects.
If Microsoft were not the worst offender itself (Visio update installed - please restart the system!) it should release a code of conduct for software:
- Application programs shall not install themselves anywhere in
- Applications shall not require a restart to be installed.
- Users can stop applications via the GUI, and all aspects of the software will shut down
The problem with Windows is that it encourages programs to install themselves all over the system. MS provides the worst example with the ball of hair that is Office.
Intel Yonah specs have just been leaked. What I find most surprising is the prices - 2.16GHz will set you back $640 for the processor alone. Making it rather unlikely that the iBook will ship at that speed.
More likely, it will ship at 1.66GHz which is the lowest-spec Yonah. If it's dual core, it will still be faster than the Powerbook for native apps. But it will also still be slower than the Powerbooks for professional apps, e.g. Photoshop.
Unless they ship a dual core Powerbook 2.16 right along with it.
I wonder if one could use one core to do a prefetch-translate in rosetta, leaving the other core to run the translated app at native speed.
Amen to that. Lots of the latest, feature laden do-it-all phones have crap battery life. I am sure they will improve but until they do, they are useless as cameras and mp3 players and inferior as phones.
Do not forget one other thing: Apple doesn't make PDAs. Before the iPod, there were lots of mp3 HD players. I had a Creative Nomad, which was just awful - the buttons and menus were so confusing that I could not learn them in 2 months of ownership. 3 hours battery life tops. Taking the rechargeable AA batteries out required a degree in electronics and a screwdriver. I was actually unable to use the included windows software and eventually resorted to iTunes/Mac with a plugin to fill it. My friend had a PJB-100, which was acceptable albeit much larger than an iPod and not nearly as nice looking.. and cost $700 (!).
Then the iPod came along. Not only was it usable, it was as close to perfect as I have ever seen a piece of hardware. My non-techie girlfriend learned how to use it in 5 minutes with NO instructions whatsoever - a first.
In my view, the original question is easily answered: There hasn't been a breakthrough in usability for PDAs as there has been for mp3 players. PDAs are hard to use. How long does it take me to enter a new appointment in my calendar? If it takes longer than scribbling on a paper calendar then I don't want it.
But the language and the libraries are suffering from the weight of (bad) past decisions. There are usually about 3 million ways to do anything in Java. The language was great when it came out, but it has not been improved at all. The improvements in 5.0 are really a joke - too little, too late, and an unbearably ugly syntax.
Here's what Sun would have to do to improve Java:
- Sit down and decide on what to keep and what to deprecate with an eye on deprecating as much as possible and leave a clean orthagonal set of libraries
- rewrite all the tutorials so they make sense, then provide a patterns library for good solutions for common problems (non-existent)
- quit wasting resources on second-best IDEs and embrace Eclipse and the rich client platform. Get over it.
- educate people about threading (other than the "use it when your program is slow, hurrh" kind of crap in the current tutorials).
- Then make the language nicer.
Ruby is publicly available and everyone at Sun should be made to read the Ruby book [1]. Java would improve dramatically as Sun would suddenly become aware of how far behind Java really is.Newsflash to Sun: Being miles ahead of c doesn't cut it anymore!
[1] free old version or the second edition
It's not perfect, but it represents a lot of what people have learned from experience. Apple is using a version of C that fakes object orientation through a runtime and some clever preprocessing. Nobody expected objective C to be around in the year 2005.
I don't know about the rest of the comment, but this statement is completely wrong.
Objective C may be ancient and cryptic but it is and always has been fully OO. It's dynamic which means you can generate classes / subclasses / methods on the fly. Not something that C# or Java could do.
On a side-note, I used to think that these dynamic language features are too clever to use, but Ruby and Ruby on Rails have convinced me otherwise.
I am not opposed to user prefs, but it does not solve the problem as you still have to think about the default setting.
Correct default settings make the difference between a great GUI and a horrible GUI.
And blank tabs are the only correct interpretation of "new". Showing the home page is redundant, and showing the previous page is just plain weird - why would I want to get the same information that I just had _again_? No one would consciously open two windows/tabs with the exact same contents, so why should the browser do it per default?
Good: Makes it more likely people click on the link because of the outrageous title.
Bad: Makes it less likely people will click on any links to Slashdot in the future.
Too bad...
Yeah, wasting karma.. but.. This is a fantastic idea!
I would have a crawler go over my emails and send it back to a central server (again, Google comes to mind). Then that server can make a global network of connected emails. It would not really reflect social networks because email doesn't say how real or strong the contact is as I easily fake to know all manner of celebrities as long as I find their email addresses.
I really would like to see my 6 degrees network, and I also would like to see how large it really is. If the 6 degrees of separation theory were true, then all email users world-wide should be in it.
Science (or, Science!) has become a religion all in itself so it's not surprising people don't see that much difference.
There are many reasons, the most important the wide disconnect between real science, what's going on in the labs and the science for dummies as presented in the media. It's very hard to explain the real goings on in layman's terms but it's nearly impossible when trying to sell a story. So the media feeds us half-truths and made up things and people know it's BS and don't trust in it.
People are losing faith in science.
At the same time, the western scientific community has only itself to blame for being extremely closed minded about many alternative treatments. For example, I tried Reiki - which involves exchanging energy with the healer without touching. The thing is, it just works. You don't have to believe in it. You don't have to chant. You don't have to do anything special. You can feel the effects immediately. In terms of immediacy of effects, it's like taking an aspirin.
I have no idea how it works though - western science has no explanation for it. Why? Because even though it quite obviously works for anybody willing to try, western science has stubbornly refused to accept it. This is slowly starting to change - very slowly, but the point is that if my doctor tells me something won't work that obviously works I lose trust in him. I lose trust in western medicine.
How scientific is it to stick your head in the sand and pretend a phenomenon does not exist when you find no explanation for it? Look harder!
Basically, at this point, I use western medicine only when I break a bone or to prevent wounds from getting infected. For that, it works excellent. For things like weird stomach problems, general feeling of uneasiness, back pain, RSI, etc, I use alternative methods - foot reflexology, acupuncture, Reiki are all effective tools for these. It works for me - I have not taken a sick day since 1997. In fact, it works well enough that I would wholeheartedly recommend it to anyone, the only problem is finding qualified practitioners.
The day the big faceless outsourcing companies in India figure out how to nurture employees for creativity, that's the day we have to fear.
As of now, they seem to be blissfully unaware, and so we can compete easily on creativity. They produce crap in large numbers, and for whom it's ok, it's OK. We make the interesting and innovative things.
And before you start flaming about how good the outsourced software really is, please give an example, and explain why it's good. All I have seen was useless crap, just like the stuff produced by big faceless corporations over here - unsurprisingly.
You are absolutely right, it's very simple: People buy new computers because the old one is "slow". 99% of the population does not know that it's slow because it's full of spyware (usually) or because it doesn't have enough memory (also usually). Instead, they think they need a 3GHz P4 to run word and email.
Old computers used to be slow because they _were_ too slow for modern applications. In our times, old computers are slow because they are full of spyware and viruses - while the hardware would be completely adequate.
To the common PC user it makes no difference - slow is slow. That, more than any cost efficiency argument, prompts people to buy new machines.
I am buying an iBook for my wife because I really don't feel like explaining terms like "Spyware" to her, and I don't feel like keeping her machine spyware and worm free.
** mod parent up **
Why is IBM unvailing it now?
Because they could not get them done sooner.
There are no known potential customers for this chip.
Steve Jobs said in his keynote that there would be many exciting PPC based products before the switch to Intel. Did you think they were just going to stop making computers until mid-2006? My bet is that the MPs are going into new quad powermacs and the low power 970FXs will go into G5 PowerBooks and iBooks.
So why would anyone buy them?. The quads because they are going to blow away any x86s you can buy today, and the PowerBooks because people such as myself have been sitting on their ageing G4 PowerBooks, waiting for a real upgrade to come along. I have a 667MHz TiBook and it's just only barely usable. I will buy the G5 powerbook as soon as it comes out.
My only conern is this bit from the press release:16W under typical workloads can mean pretty much anything. It all depends on your definition of a typical workload.
They are answering Apple's problems - just a year or two late.
If you look at currently published Intel roadmaps, there are dual core laptop chips running at 2GHz+ promised for Q1 2006.
IBM is at least 2 years behind in that area. So IBM is almost keeping up with the x86 world when it comes to desktops and years behind on laptops. And unwilling to put its own money into developing low power G5s.
You don't need to be a Nostradamus to see why switching is Apple's only reasonable option.
Looks like Steve Jobs is getting all the things he said he couldn't have. ... a year late (*). That's why he's switching.
It's "put a lot of effort and money in to be a year or more late" vs. "get crazy R&D for free and be guaranteed to be current". Tough choice.
(*) Ignoring for a moment that he was also promised 3GHz by mid-2004!