Why does anyone pay attention to Cringley? I mean, do any of these 'industry pundits' ever have to keep track of the accuracy of their 'predictions'? No... they just make ever-outlandish predictions because it gets them some publicity and gets some eyeballs for ad revenue over to their website. Just say 'no'.
Nothing to see here except a crank who made a fairly obvious, if not very likely prediction.
I don't want to have to dual-boot... I want VMWare on OS X. I could run several sifferent machines with windows, linux, etc all at the same time. I do it now on windows - the only one missing is OS X. Having that as a host would be enough for me.
In 1990, for an electronic music course I took in college, I used several decades worth of stock market data from a book entitled "Don't sell stocks on Monday" to create a composition for an assignment on aleatoric music. Can I claim prior art?
if you don't like to have a choice, then drink the kool aid and use Swing. Swing is the ONLY rich gui that is baked in to Java and has Sun's blessing. AWT is mostly deprecated (Swing is built on top of AWT, so some things are still used), and SWT, while sexy, brings deployment complexity and platform specific libraries.
Here is a real answer, unlike the dozen or so I just saw perusing existing posts.
The goal of 'crash free' is going to be impossible... Even if you could write perfect code, you already stated you need to rely on third party libraries. You can only be as stable as they are. You want to change this goal to be 'high availability', which is a system architecture term that you can now google on and find some design principles, including redundancy. You want to be 'resiliant to crashes'. Keep in mind that this will affect everything down to the design of the computer it will run on (do you need 2 hot-swappable power supplies so that one can fail without the app going down?)
While this term is so overused as to almost be meaningless, you will want to keep in mind a 'service-oriented architecture'. What I mean is that you will want to build the modules you discuss in your post as 'services' that other components will rely on. The components that rely on the services need to be resiliant to failure, with strategies such as queueing a request that isn't fulfilled (due to a crashed service), redirecting the request to another available service, etc. You want to be able to decompose your problems into 'problem chunks', and think of your various modulces as 'producers' and 'consumers' of these chunks. the producers and consumers shouldn't talk to each other directly; there should be a blocking queue between each so that producers and consumers can be decoupled - the producer can keep producing while consumers can come and go, and consumers can have work to do if a producer crashes and has to restart.
That should give you a good start for googling on some architecture.
Lastly, if you really want your code to have any hope of being nearly bulletproof, you have to have some discipline, in the following forms:
1) Use Coding conventions, and stick to them. Automate the ability to check compliance. With coding conventions, maintenance becomes easier, defects stand out, etc.
2) Write unit tests, and have good code coverage. In C++, you are going to have to worry about bounds checking, etc. Unit tests are the best way to prove your code works.
3) Document things well. Don't document what the code does, document WHY it does it.
4) Use some Version Control/CM processes and tools, like CVS or Subversion. You ALWAYS want to be able to recreate a particular state, for instance, if you do have a defect and need to be able to recreate it in a predictable environment. Besides this, CM gives you a project-lifetime 'undo' capability.
5) Use static source code analysers like lint. (There are dozens of these in Java, like PMD and FindBugs). Even if these tools cannot find the really hairy problems for you, they do find defects and do so cheaply and easily, compared to finding the same defect yourself, or worse, after your software is in production.
My employer embraces it. We have offices split in San Diego, Colorado, and Washington D.C., as well as a few telecommuters in various corners of the U.S. We use Skype (along with AIM, VNC, Subversion, etc) to create a really collaborative environment, no matter where you are.
I realize some information is a lot more sensitive than others, but exactly, then, WHO is supposed to edit this information? Isn't this the point of the whole wikipedia excercise? I mean, it is hardly a headline when musicians edit entries about musical intruments, even when a violinist edits an entry adding a comment about the 'harsh tone' of brass instruments. The brass players need to come in and correct their own entries.
By the same model, politicians are probably going to be the ones editing the entries about politics. If a politician doesn't like his own entry, he should get in there and fix it (or tell his staffers to). If entries become too volitile, they will trigger other wikipedia policies.
Frankly, I think the 'meta moderation' of these entries is interesting political infotmation itself. I think the article itself should have some header or hilighting ranking its volatility - I would be more likely to 'trust' stable entries.
His entire argument is predicated upon the false premises that Microsoft wants to support open standards and that they want to support the Mac.
Microsoft has virtually bottomless resources - if they really wanted to, they could crank out a secure cross-platform web browser that supported relevant standards. What Microsoft has is exactly what they want - vendor lock-in with a mediocre product that through its various 'feature-driven' incompatibilities gives them some sense of control.
If Mircosoft can't own the roads, they want to own the potholes.
The author's concern could be expressed about the maintainability of generated code, whether in Ruby or Otherwise.
To talk about this intelligently, lets split it into 2 kinds of generation: the 'one-off' code generation that occurs once, in order to get something up and running, which is then maintained on its own, and the 'generate every time you build' mentality of things like XDoclet (to mention one of many). Both have their pros and cons.
With one-off code generation, (which is what Rails is), you generate the code that gets the 'skeleton', but from there, it is something you have to maintain yourself. You have to understand what you are generating and maintaining... you might as well think about it as starting our having to maintain someone else's code (which really, it is). As long as you understand the generated code, this is not a problem. one-off code generation is simply a convenience for getting started, it is not a replacement for knowledge.
With build-time code generation, you are ideally automating something that you would have to understand in order to keep up with changes elsewhere in the system. While it might be automating away some drugery, often times you also end up automating away 'layers' that you don't want or need to understand. This is where the maintenance nightmares of generated code come in - you have to hook into stuff you don't understand, often by inserting code in between comments that say something like://** your code to be put here//** end of your code
When this is done well, it leads to the dream scenario of getting 'something for nothing' where it is not done well, you create a 'culture of ignorance' that simply guarantees you won't know how to solve the problems you inevitably end up creating.
In my humble conclusion, rails-generated code is VERY maintainable, but you are not off the hook for understanding what has been generated.
"In no time, you can build a simple RSS viewer that takes a user-entered RSS feed URL and retrieves the title, description, and link for that channel."
And so now we can expect a rapid proliferation of readers that don't work with every other RSS feed in the world; they will require the 'Microsoft Extensions' (I am assuming this of the VB implementation, either now or in the future). RSS feeds and readers alike will eventually have to implement it one way or the other.
I don't know what the plan for World Domination here is, but it goes something like this:
1) Wedge yourself in the middle where no one wants or needs you 2) ??? 3) Profit!
1) I hear people talk about building PCs the way they used to talk about tweaking their hot rods in the 50's and 60's. Heck - I just put together an AMD X2 4400+ with 4 gigs on an ASUS motherboard and can have a 'normal' conversation about it with pretty much anyone. My brother, the most non-technical person I can think of (he is a salesman) asked me "What kind of case did you put it in?". Geek has gone mainstream.
2) A college professor I know from a local user group says that 'typing speed has become macho'. That is, once a thing used to measure secretary pools is now used as bragging rights among teen boys in the context of who can type more words while fragging their opponent in an FPS.
Geeks went mainstream several years ago, when instead of being the character that was picked on, they became either the hero of the film (Jurassic Park, Independence Day), or the character you empathise with (Napolean Dynamite, Office Space, or heck - even Revenge of the Nerds).
You have now reached a maturity level in your career where you will be able to read books like 'The Mythical Man Month' and understand them. With that book, you will first be shocked by the fact that someone has written so clearly on these issues, and then you will be shocked to find out he wrote it most likely before you were born.
Read the following books, in the following order:
The Mythical Man Month The Rise and Fall of the American Programmer The Pragmatic Programmer After the Gold Rush
After the Gold rush is out of print with a second edition coming out soon... a while back some of the chapters from the new edition was available from the Author's website. In any case, pick up a used copy if necessary - it will be worth it.
hundreds of posts, and noone has seen this for what it is - a way for porporations to battle open source. If there is a chance I could get sued, I would NOT contribute to an open source project... And I have contributed to 3 different ones in the past.
If a developer can be held liable for a defect, then that same developer needs to have approval over when to ship. That is what this is implying, isn't it? I mean, if I can be held liable, I should have the authority to say "It isn't good enough yet". That would be an interesting power for the average cubicle-farmer to have... It would also mean that if they fire me for saying that, I should have the power to have all of my code removed from the shipping code, as I do not have faith the company would maintain it properly.
If you spend a lot of time coding in Java, take a look at any of the popular blogs at jroller.com.
Take a look at the blog aggragation of all the speakers from the No Fluff Just Stuff coference series (www.nofluffjuststuff.com) - disclaimer: I'm one of those speakers.
This greed is fucking rediculous... If I am searching for their Madonna, well, they will probably make a cut of whatever I find that I might buy from that search. Hell - if I'm searching for that Madonna, I am probably already interested enough in her to own a CD or two, so they already have some of my money in their pockets. Am I going to have to pay them if I mention Madonna in my blog? Isn't that fair use? Why should I pay for any mismatches that might come up? Whats next? Should I pay for the privilege of looking at billboards when I drive along the interstate?
If Microsoft were smart, they WOULD write office for linux, but not for the reasons most people here would think...
Given Microsoft's normal tactics, I would expect they would do it to:
1) Kill OpenOffice, which if left to thrive over on linux will eventually also eat into their windows market (they are obviously worried about this - see earlier articles involving the state of Massachusettes).
2) Control the user's typical experience with linux. They could make Office a steaming pile of dog crap on linux, but people would still buy it. Microsoft could basically control your average manager's impression of linux by making Office for Linux a dog. Those managers who had the misfortune of being stuck with this at the advice of some linux-zealot in their IT department would never listen to that zealot again.
I'm GLAD they haven't realized this and decided to make office for linux. Of course, they might be secretly working on it already, because this is not the kind of thing Microsoft would want to pre-announce. They only pre-annouce vaporware when they need to chill the market for their competitors who are ahead of them.
This has been your daily dose of conspiracy. Now back to your regular microsoft-bashing.
I am a musician - I actually majored in it in college, and now do nothing with it but entertain friends and family.
If I were good enough to pick up my instrument, sing into a microphone, and have people willing to pay me 99 cents (or some reasonable fraction thereof) to download 3.5 minutes of something I created, I would consider myself the luckiest person in the world. I would want to spend my days making songs that more people would download.
Now if I were a record company executive, who had somehow wedged myself between the producer and the consumer, I would consider myself even luckier, in the sense that I'm getting money 'for free'. Sure, once upon a time my kind might have provided a service to the industry, creating channels and brokering deals, etc, but now I'm just skimming - just riding someone elses coattails. I would sit in my office and count my money, laughing all the way to the bank, secretly worried that someday, with distribution channels becoming digitized and producers and consumers able to meet without me in the middle, I would become irrelevant.
Record company execs should just sit down and shut up, and ride the wave to the bank while they get the chance. The world is changing, and you are about to be left behind. Either figure out how to make money in the new economy, or get the hell out of the way. You are the buggy whip makers of the 21st century.
Arguments of freedom aside, a piece of software provides business value to me in that it DOES something - I might pay more for a piece of software if it does something of that much value for me.
A movie does nothing but entertain me for a fixed period of time. All movies are about the same length, therefore they are the same price. To me, it makes more sense to charge based on the LENGTH of the movie - which in some sense, I already pay, because I pay far more for a season of 'Star Trek' on DVD than I would pay for the last Star Trek movie...
Yes, which is what I do now... but it is one more thing to carry, leave behind, suck my battery down, etc. It always seems that I don't have it when I need it the most.
I am a software developer who does a lot of travelling, so I use a laptop. I also work on a lot of different projects, and the source code bases can be HUGE.
Recently, I started using VMWare. I can better isolate my development environments for each project from each other by having them exist in different virtual machines - I can also back them up and create 'snapshots' much easier. But it consumes a hell of a lot of disk space. On one project alone I have a windows XP, 2 different flavors of linux, and Solaris 10. I have all of that on an external 100gb drive.
120 gigs? That's nice. I want a laptop with 250 gigs. I know I'm not the norm at this point, but I don't think I'm more than a couple of years ahead of the curve.
Why does anyone pay attention to Cringley? I mean, do any of these 'industry pundits' ever have to keep track of the accuracy of their 'predictions'? No... they just make ever-outlandish predictions because it gets them some publicity and gets some eyeballs for ad revenue over to their website. Just say 'no'.
Nothing to see here except a crank who made a fairly obvious, if not very likely prediction.
I don't want to have to dual-boot... I want VMWare on OS X. I could run several sifferent machines with windows, linux, etc all at the same time. I do it now on windows - the only one missing is OS X. Having that as a host would be enough for me.
In 1990, for an electronic music course I took in college, I used several decades worth of stock market data from a book entitled "Don't sell stocks on Monday" to create a composition for an assignment on aleatoric music. Can I claim prior art?
Dude,
if you don't like to have a choice, then drink the kool aid and use Swing. Swing is the ONLY rich gui that is baked in to Java and has Sun's blessing. AWT is mostly deprecated (Swing is built on top of AWT, so some things are still used), and SWT, while sexy, brings deployment complexity and platform specific libraries.
Here is a real answer, unlike the dozen or so I just saw perusing existing posts.
The goal of 'crash free' is going to be impossible... Even if you could write perfect code, you already stated you need to rely on third party libraries. You can only be as stable as they are. You want to change this goal to be 'high availability', which is a system architecture term that you can now google on and find some design principles, including redundancy. You want to be 'resiliant to crashes'. Keep in mind that this will affect everything down to the design of the computer it will run on (do you need 2 hot-swappable power supplies so that one can fail without the app going down?)
While this term is so overused as to almost be meaningless, you will want to keep in mind a 'service-oriented architecture'. What I mean is that you will want to build the modules you discuss in your post as 'services' that other components will rely on. The components that rely on the services need to be resiliant to failure, with strategies such as queueing a request that isn't fulfilled (due to a crashed service), redirecting the request to another available service, etc. You want to be able to decompose your problems into 'problem chunks', and think of your various modulces as 'producers' and 'consumers' of these chunks. the producers and consumers shouldn't talk to each other directly; there should be a blocking queue between each so that producers and consumers can be decoupled - the producer can keep producing while consumers can come and go, and consumers can have work to do if a producer crashes and has to restart.
That should give you a good start for googling on some architecture.
Lastly, if you really want your code to have any hope of being nearly bulletproof, you have to have some discipline, in the following forms:
1) Use Coding conventions, and stick to them. Automate the ability to check compliance. With coding conventions, maintenance becomes easier, defects stand out, etc.
2) Write unit tests, and have good code coverage. In C++, you are going to have to worry about bounds checking, etc. Unit tests are the best way to prove your code works.
3) Document things well. Don't document what the code does, document WHY it does it.
4) Use some Version Control/CM processes and tools, like CVS or Subversion. You ALWAYS want to be able to recreate a particular state, for instance, if you do have a defect and need to be able to recreate it in a predictable environment. Besides this, CM gives you a project-lifetime 'undo' capability.
5) Use static source code analysers like lint. (There are dozens of these in Java, like PMD and FindBugs). Even if these tools cannot find the really hairy problems for you, they do find defects and do so cheaply and easily, compared to finding the same defect yourself, or worse, after your software is in production.
Hope this helps.
My employer embraces it. We have offices split in San Diego, Colorado, and Washington D.C., as well as a few telecommuters in various corners of the U.S. We use Skype (along with AIM, VNC, Subversion, etc) to create a really collaborative environment, no matter where you are.
I realize some information is a lot more sensitive than others, but exactly, then, WHO is supposed to edit this information? Isn't this the point of the whole wikipedia excercise? I mean, it is hardly a headline when musicians edit entries about musical intruments, even when a violinist edits an entry adding a comment about the 'harsh tone' of brass instruments. The brass players need to come in and correct their own entries.
By the same model, politicians are probably going to be the ones editing the entries about politics. If a politician doesn't like his own entry, he should get in there and fix it (or tell his staffers to). If entries become too volitile, they will trigger other wikipedia policies.
Frankly, I think the 'meta moderation' of these entries is interesting political infotmation itself. I think the article itself should have some header or hilighting ranking its volatility - I would be more likely to 'trust' stable entries.
His entire argument is predicated upon the false premises that Microsoft wants to support open standards and that they want to support the Mac.
Microsoft has virtually bottomless resources - if they really wanted to, they could crank out a secure cross-platform web browser that supported relevant standards. What Microsoft has is exactly what they want - vendor lock-in with a mediocre product that through its various 'feature-driven' incompatibilities gives them some sense of control.
If Mircosoft can't own the roads, they want to own the potholes.
The author's concern could be expressed about the maintainability of generated code, whether in Ruby or Otherwise.
//** your code to be put here //** end of your code
To talk about this intelligently, lets split it into 2 kinds of generation: the 'one-off' code generation that occurs once, in order to get something up and running, which is then maintained on its own, and the 'generate every time you build' mentality of things like XDoclet (to mention one of many). Both have their pros and cons.
With one-off code generation, (which is what Rails is), you generate the code that gets the 'skeleton', but from there, it is something you have to maintain yourself. You have to understand what you are generating and maintaining... you might as well think about it as starting our having to maintain someone else's code (which really, it is). As long as you understand the generated code, this is not a problem. one-off code generation is simply a convenience for getting started, it is not a replacement for knowledge.
With build-time code generation, you are ideally automating something that you would have to understand in order to keep up with changes elsewhere in the system. While it might be automating away some drugery, often times you also end up automating away 'layers' that you don't want or need to understand. This is where the maintenance nightmares of generated code come in - you have to hook into stuff you don't understand, often by inserting code in between comments that say something like:
When this is done well, it leads to the dream scenario of getting 'something for nothing' where it is not done well, you create a 'culture of ignorance' that simply guarantees you won't know how to solve the problems you inevitably end up creating.
In my humble conclusion, rails-generated code is VERY maintainable, but you are not off the hook for understanding what has been generated.
And today, this article appears on Developer.com: "RSS: So Simple with Wisual Basic 2005".
4 1
http://www.developer.com/net/vb/article.php/35671
"In no time, you can build a simple RSS viewer that takes a user-entered RSS feed URL and retrieves the title, description, and link for that channel."
And so now we can expect a rapid proliferation of readers that don't work with every other RSS feed in the world; they will require the 'Microsoft Extensions' (I am assuming this of the VB implementation, either now or in the future). RSS feeds and readers alike will eventually have to implement it one way or the other.
I don't know what the plan for World Domination here is, but it goes something like this:
1) Wedge yourself in the middle where no one wants or needs you
2) ???
3) Profit!
1) I hear people talk about building PCs the way they used to talk about tweaking their hot rods in the 50's and 60's. Heck - I just put together an AMD X2 4400+ with 4 gigs on an ASUS motherboard and can have a 'normal' conversation about it with pretty much anyone. My brother, the most non-technical person I can think of (he is a salesman) asked me "What kind of case did you put it in?". Geek has gone mainstream.
2) A college professor I know from a local user group says that 'typing speed has become macho'. That is, once a thing used to measure secretary pools is now used as bragging rights among teen boys in the context of who can type more words while fragging their opponent in an FPS.
Geeks went mainstream several years ago, when instead of being the character that was picked on, they became either the hero of the film (Jurassic Park, Independence Day), or the character you empathise with (Napolean Dynamite, Office Space, or heck - even Revenge of the Nerds).
-db
Ah young Grasshopper,
You have now reached a maturity level in your career where you will be able to read books like 'The Mythical Man Month' and understand them. With that book, you will first be shocked by the fact that someone has written so clearly on these issues, and then you will be shocked to find out he wrote it most likely before you were born.
Read the following books, in the following order:
The Mythical Man Month
The Rise and Fall of the American Programmer
The Pragmatic Programmer
After the Gold Rush
After the Gold rush is out of print with a second edition coming out soon... a while back some of the chapters from the new edition was available from the Author's website. In any case, pick up a used copy if necessary - it will be worth it.
You want consensus on an opinion so you turn to Ask Slashdot? Wow...
hundreds of posts, and noone has seen this for what it is - a way for porporations to battle open source. If there is a chance I could get sued, I would NOT contribute to an open source project... And I have contributed to 3 different ones in the past.
If a developer can be held liable for a defect, then that same developer needs to have approval over when to ship. That is what this is implying, isn't it? I mean, if I can be held liable, I should have the authority to say "It isn't good enough yet". That would be an interesting power for the average cubicle-farmer to have... It would also mean that if they fire me for saying that, I should have the power to have all of my code removed from the shipping code, as I do not have faith the company would maintain it properly.
With responsibility comes authority.
The headgear looks pretty cool... is it some kind of new game interface? Where do I get it?
I would get it cut into 6 slices... I don't think I could eat 10 slices of pizza.
If you spend a lot of time coding in Java, take a look at any of the popular blogs at jroller.com.
. xml
y EstimatesareMuda.html
Take a look at the blog aggragation of all the speakers from the No Fluff Just Stuff coference series (www.nofluffjuststuff.com) - disclaimer: I'm one of those speakers.
If you read Dave and Andy, you will also want to read Mike Clark:
http://www.clarkware.com/cgi/blosxom/index.rss
Martin Fowler's Blog:
http://martinfowler.com/bliki/bliki.rss
The Daily WTF has some great examples of horrible code:
http://thedailywtf.com/rss.aspx
Johanna Rothman has a good blog on software management:
http://www.jrothman.com/weblog/RSS/mpdblogger_rss
as does David Anderson:
http://www.agilemanagement.net/Articles/Weblog/Wh
And what if I'm searching for paintings of the Madonna? How are they going to differentiate?
This greed is fucking rediculous... If I am searching for their Madonna, well, they will probably make a cut of whatever I find that I might buy from that search. Hell - if I'm searching for that Madonna, I am probably already interested enough in her to own a CD or two, so they already have some of my money in their pockets. Am I going to have to pay them if I mention Madonna in my blog? Isn't that fair use? Why should I pay for any mismatches that might come up? Whats next? Should I pay for the privilege of looking at billboards when I drive along the interstate?
If Microsoft were smart, they WOULD write office for linux, but not for the reasons most people here would think...
Given Microsoft's normal tactics, I would expect they would do it to:
1) Kill OpenOffice, which if left to thrive over on linux will eventually also eat into their windows market (they are obviously worried about this - see earlier articles involving the state of Massachusettes).
2) Control the user's typical experience with linux. They could make Office a steaming pile of dog crap on linux, but people would still buy it. Microsoft could basically control your average manager's impression of linux by making Office for Linux a dog. Those managers who had the misfortune of being stuck with this at the advice of some linux-zealot in their IT department would never listen to that zealot again.
I'm GLAD they haven't realized this and decided to make office for linux. Of course, they might be secretly working on it already, because this is not the kind of thing Microsoft would want to pre-announce. They only pre-annouce vaporware when they need to chill the market for their competitors who are ahead of them.
This has been your daily dose of conspiracy. Now back to your regular microsoft-bashing.
Frankly, there are no great magazines, but there are a lot of great articles. Most of them are never put to a glossy page.
Read blogs. Surf. Find your community. Keep reading those books. That is the way to keep growing.
I am a musician - I actually majored in it in college, and now do nothing with it but entertain friends and family.
If I were good enough to pick up my instrument, sing into a microphone, and have people willing to pay me 99 cents (or some reasonable fraction thereof) to download 3.5 minutes of something I created, I would consider myself the luckiest person in the world. I would want to spend my days making songs that more people would download.
Now if I were a record company executive, who had somehow wedged myself between the producer and the consumer, I would consider myself even luckier, in the sense that I'm getting money 'for free'. Sure, once upon a time my kind might have provided a service to the industry, creating channels and brokering deals, etc, but now I'm just skimming - just riding someone elses coattails. I would sit in my office and count my money, laughing all the way to the bank, secretly worried that someday, with distribution channels becoming digitized and producers and consumers able to meet without me in the middle, I would become irrelevant.
Record company execs should just sit down and shut up, and ride the wave to the bank while they get the chance. The world is changing, and you are about to be left behind. Either figure out how to make money in the new economy, or get the hell out of the way. You are the buggy whip makers of the 21st century.
Arguments of freedom aside, a piece of software provides business value to me in that it DOES something - I might pay more for a piece of software if it does something of that much value for me.
A movie does nothing but entertain me for a fixed period of time. All movies are about the same length, therefore they are the same price. To me, it makes more sense to charge based on the LENGTH of the movie - which in some sense, I already pay, because I pay far more for a season of 'Star Trek' on DVD than I would pay for the last Star Trek movie...
Yes, which is what I do now... but it is one more thing to carry, leave behind, suck my battery down, etc. It always seems that I don't have it when I need it the most.
but did you save a bunch of money on your car insurance?
Its not about music.
I am a software developer who does a lot of travelling, so I use a laptop. I also work on a lot of different projects, and the source code bases can be HUGE.
Recently, I started using VMWare. I can better isolate my development environments for each project from each other by having them exist in different virtual machines - I can also back them up and create 'snapshots' much easier. But it consumes a hell of a lot of disk space. On one project alone I have a windows XP, 2 different flavors of linux, and Solaris 10. I have all of that on an external 100gb drive.
120 gigs? That's nice. I want a laptop with 250 gigs. I know I'm not the norm at this point, but I don't think I'm more than a couple of years ahead of the curve.