Good grammar correctors will politely point it out along with quiting the rule that was broken.
Hopefully these so-called grammar correctors will quote the rule that was broken. If the enlightened masses unilaterally decide to just quit the rule as you suggest, the world of communication may descend into chaos.
We'll probably see devices with dual compatibility soon. With technology such a commodity today, it's much less expensive to provide players that can play any format. It's kind of like music: I usually don't care what format it is (Ogg, Mp3, FLAC, AAC, WMA, etc) because I can just use Winamp. The content is (and should be) much more important than the delivery mechanism.
Sony may not be doomed. '30' is a big number for games, but may not be too high for Blu-Ray movies. After all, how many DVDs do you own? 30? 100? You'll probably buy that many Blu-Ray discs in the next few years if you've got a shiny hi-def player in your living room.
And that's where Sony's real money will be made..anacron
I have been using Adobe Photoshop Album for the past year or so and have found it to be great. It's tag based, and will even let you create dynamic collections based on tags. It's like a standing search.
Currently have over 15,000 photos in there and performance doesn't seem to be an issue.
The only gripe I have is that it doesn't (yet) support RAW photos. Hopefully they'll change that in the next release..anacron
Why not try Groove? It's owned by Microsoft, and likely to show up in future versions of the OS. It's fairly easy to use, and you can store whatever you like securely.
If you have a lossless source, the quality of the derived audio should be as good as an original rip of the CD itself. That's the whole point of lossless encoding. If you're going from lossy->lossy, then any transcoding will introduce garbage, but how much garbage depends on how good the original source is..anacron
The Tomatometer is currently at 38/100. In contrast, Matrix I was 86% and Reloaded was 73%.
Maybe this is why Warner Brothers wanted a worldwide simultaneous release. They effectively mitigated their risk that the opinions of audiences in one country would adversely affect sales revenues in other countries.
In essence, the movie sucked, they knew it, and used the gimmick of the worldwide simultaneous release to increase first-weekend sales to the point that it wouldn't matter if everyone thought the movie sucked.
... if you produce a media product, you can use whatever copy protection you want.
I would agree with this statement if the same content was available via alternative delivery mechanisms. It's one thing to impose a copy protection scheme on a particular method of content delivery, but it's quite another to do so when that's the only method of content delivery that's available.
Some on this thread have advocated just not buying the CD, but if I happen to really like the artist I have no alternative avenue for purchasing the content.
For me, the conflict is that the companies that have the interest in the content are the same as the ones doing the distribution. I'm all for record companies and artists making money, but I don't think they should be involved in the actual distribution of their product. When was the last time you walked up to a corner convenience store that was owned by the Coca Cola Company? Never. The content and the delivery are two distinct things, and it gets very messy and much more expensive for a single company to do both.
I think all the flap over copyright we've seen over the past few years would be solved if the record companies focused on the talent side of things -- acquiring, producing and recording artists and songs.
Once they have a finished product (albums and singles), they license the content to distribution companies who are free to distribute the albums and singles as they see fit. Some may choose to put the content on a CD and impose a copy protection scheme, and some may choose to make it available via digital download (perhaps with a different copy protection scheme in place).
The difference here is that the record companies have gone out of the distrubution business. Can you imagine going into your favorite record store and seeing the same CD but distributed from three or four different companies?
It's all about competition. The record companies don't care because they are earning a cut each time the song is distributed, no matter what form that distribution takes. The distribution companies want the markup on the actual sales of the disk, so they'll compete with each other to drive the price down so they can earn a piece of the sales.
I think this is a win-win situation for everyone involved, and perhaps on-balance will be about the same revenue stream for the record companies. Sure, they're giving up the sales of the CDs, but their content will be available in more venues.
The bottom line question: Is the content good enough to stand on its own, or is the real money where the sales are? Either way, let's turn the RIAA lawyers loose on coming up with a pen-and-paper content distribution model that allows the free market to operate. It'd be the first time this was done on pure content and not on actual physical products, but I think the model would hold quite well.
Anyone ever given serious thought that perhaps the SCO code was lifted from the Linux source? The SCO engineers obviously had the same level of access as everyone else in the public domain -- perhpas the case will come down to who can prove what was released when..anacron
Mario Kart was cool, but bring me back Uniracers. That game got me through 2 years of college. If you want some fun, turn the tournament mode into a drinking game.
However, there is emperical evidence that does indicate the basic notions of quantum mechanics are more or less correct. What this means is that the smallest unit by which position can change or be defined is defined by the plank constant.
How can there be empirical evidence of this? The Heisenburg Uncertainty Principle precludes us from knowing both the position and the velocity of a particle in one measurement. The act of measuring one affects the other. How, then, is it reasonable to assume that the Plank constant is the lower bound of both distance and speed? We can't measure both at the same time. Isn't it reasonable to assume that the when we're measuring the position the lower bound Plank constant of velocity is violated? And that when we measure velocity the lower bound of distance is voilated?
Mathematics, on the other hand, contains the notion of infinitely divisiable continuities, which appear not to be reflected in our physical reality. This is one example where the math doesn't appear to map correctly to the physical world, and where the math can come up with infinities that, to the best of our knowledge, simply are not there in the physical world.
I would argue, based on literally thousands of years of this sort of thing going on, that our abstract mathematical notions of how the world operates are probably more correct than the observed values of the same thing. See Tycho Brahe, Newton, Copernicus, DaVinci et al.
Given this, it's reasonable to assume that just because we can't currently map our mathematical models to the physical world, it's likely that we just don't understand enough about the physical world to see how those models fit. After all, mathematics has withstood nearly two millenia of attack, but how many scientific theories do you know that have been around for more than 100 years? I can think of maybe 3 or 4.
So yes, there probably is a breakdown between the mathematics and the physical world, but that's just because our models of the physical world are incorrect. Including, perhaps, the Plank constant.
That volume has some descrete limit (though depending on one's interpretation, that limit may be the entire volume of the universe, or more commonly, some small volume around that atom's nucleus). Either way, that volume has an upper limit.
This is the Menger Sponge problem. Fractals are the same way -- Sure, they may have a finite derivable volume, but try and calculate the area and you're wasting your time. It's infinite. Koch Curves are the same way.
So although you may have a finite problem space to work in, the number of viable solutions is surely not finite.
Unless of course quantum mechanics has no basis in the "real world" of physical manifestations.:)
I've always wondered -- if there was a 'Hurry The Fuck Up' button on your computer that you could press to increase the speed, how long would it take before the damn thing was permanantly duct-taped down?
For instance, I could choose to display their name, birthday, wedding anniversary, and their favorite restaurant. It would be information that I already know, this would just allow me to access it more readily. In a way, it would act like a face-recognizing entry in my PDA, brining up all of the information I've already collected about that person.
If you have already personally collected that much information about the person then you probably know them well enough not to need a face-recognition software to pull that information up.
I think the real value in having a display like this is for Location Based Services. Want to see a movie but don't know where one is? Just overlay all the theatres in a 20 minute walk with what they're playing and next showtime. If you're driving, the HUD can give you advance warning signs that there's unseen traffic ahead. Thinking a bit further into the future, imagine having the outline of the road you're on highlighted -- so dark roads become just as safe as fully illumated ones.
Also imagine being able to stand in the middle of a city, look around you and see the menus of the restaurants you can see. Or real-time table availability. That restaurant has a 40 minute wait? No problem -- the one over there has immediate seating.
The crutch to all of this, of course, is how to pull that type of information. Web Services is a step in the right direction, but now combine it with the power of P2P (see Jini, JXTA, Groove.net or LimeWire) and automatic device and network discovery and you have a real killer app.
Miniaturization would allow all of this data to be fed into contact lenses, so you get a permanent, "augmented" view of the world. What a great thing.
The point being you can compress random data if the decoder knows what the random data is beforehand.
Won't this always be true for typical-use applications like compressing files and such? The bits that are to be encoded are known, because the encoder can just parse them. Things like streaming video and audio might get a bit tricky because unless you put some sophisticated buffering mechanism in place the bits to be encoded are probably not known ahead of time.
I actually remember the day I wanted to upgrade the modem on my BBS from a 24oo to a 14.4. I remember fondly going to CompUSA, plunking down $200, and spending 2 hours flipping DIP switches and fixing Telix so it would all work. WWIV was pretty relaxed about the new modem thing, but I do remember getting G-modem (or was it H-modem) to work properly took some time.
Now it's just $10 bucks, and a quick PCI port install. Man I miss the good old days -- the days when it actually took some (not much) skill to run a computer.
My BBS ran on a 386/sx (16mhz) with 2MB of memory and a 120MB hard drive. I think with all my downloads, messages and such I still had nearly 60MB free. I thought 120 megs was impossibly huge. I still have the disk image burned onto a CD. It's fun going through messages that are 8 years old and remembering the good times.
"Refactoring" is a trendy term (which alone makes it suspect) that came into mainstream acceptance very recently, but that most certainly doesn't mean that those in the software industry having been doing EXACTLY that for many years since?
I agree -- the term 'refactoring' is pretty trendy right now. But for the first time, there's a methodology behind it. Your argument is like saying, "Medicine has been around for 2000 years. All the advances that have been are just trendy and don't really benefit us."
Just because something is done, doesn't mean that it's done correctly, to plan, and for a good reason. Refactoring formalizes the best of what most people have already been doing, puts rules behind it, and quantifies exactly the reasons for doing it.
anacron, interesting experience and solid advice. I didn't see Extreme Programming mentioned. Did you use it at all?
Actually we didn't use it formally. But we used some of the best ideas. Iterative development, frequent code reviews, programming in pairs etc. We had a pretty small team so XP might have helped a little bit more, but it's a fundamental paradigm shift that most people I work with aren't comfortable making. My team would have been less effective had I said, "You *must* use XP."
I have been on projects in the past that have embraced more of the XP model, but something like Rational's Unified Process (RUP) kind of fits in more with what we do.
For traditional software shops (e.g. those that make products) a methodology can be set in place by the management, because the company is in essense it's own client. For other types of software shops -- such as consulting firms, or web design shops -- where one-off software is commonplace, the type of methodology that's used is usually determined by the client.
For example, if I'm working with a client that isn't very savvy, I probably don't want to do all of my requirements in formal use-cases, followed up by UML design documents. They won't add any value to the client at all, yet we still have to make sure we understand what it is we're building.
It's an interesting challenge and it's usually best overcome by having solid people on the team that can speak to both sides. A solid requirements team which can talk to the client (be it internal or external) and truly understand the business problems, all the whole clearly articulating those to the technical team. Sometimees double documentation is necessary -- one set for the client and one set for the developers or development lead.
There is just no easy way to do software development correctly. It's amazing that in nearly 60 years, no one has come up with a "right" way. There's only so much a methodology can bring to the table -- after that it's about finding and keeping a competant staff who understand the value of what they're doing.
The methodology is just a roadmap. How the car is driven is completely up to the development team. Even a good technical leader can become a backseat driver at times, as there is just not enough hours in the day to provide oversight to every single member of a team.
I think the more traditional software shops should look at the console gaming industry for tips. They have a difficult challenge -- it's not possible for them to release a fix or update for their game once it's completed. So how do companies like Activision, Square, Nintendo and Sega do their software development, and is there anything that the development teams at large can learn? Rigerous testing is one of the most obvious things that comes to mind for them, but how do they know what it is they're testing when a game's vision usually only exists in the mind of the creator?
Refactoring is not re-writing. Refactoring is a methodical approach to moving, redesigning, and making the code cleaner. It's not throwing away and starting from scratch. The two words are wholly semantically different.
In his book, Refactoring, Martin Fowler talks about how code "smells". He identifies a whole slew of reasons why code can "smell" bad, such as having a method that's too long, having a method on the wrong object, incorrect use of polymorphism, etc. He then outlines "Refactoring Patterns" which can be applied to certain "smells" to make the code more managable.
The last project I managed was a 3 month re-write of over 75,000 lines of code for an auction component that had gotten way out of control. The original component integrated with a very very poorly written (yet still very expensive) auction engine, and our task was to take it out.
Because there was no time allotted to proper requirements gathering, the powers that be decided that we could use the existing system as a requirements base, and just make the new system "act" like the old one.
So I was thrown two things: A staff that was inexperienced in design, and a lack of requirements. We were re-writing from scratch -- throwing all of the code away and starting again. I'm one of the only ones on my team that actually knows what refactoring means, let alone how to apply it.
So we built the new system based on a solid design. We even did the design in UML. But that only goes so far. Given a properly designed system, there is still another lower step -- how to actually implement the code. Invariably, the design doesn't take into account helper methods that are necessary, other objects, etc. Because we were on a tight schedule, I left it up to each developer to design these new tidbits.
If they had known what they were doing, everything would have been fine, but there are several places where the code is absolutely abysmal. It's not that it will perform poorly or is totally unmanagable, but in some places it's close.
Granted, the business rules for the system are some of the most complex I've ever seen, but if the developers had known more about refactoring, they might have made better choices.
There's a whole notion of Quality here that should be discussed as well. Most good has a good enough quality, and though it looks ugly, I'd throw it away. There's an interesting interview by Joel (a former microsoft programmer) which tackles these problems of Quality head on. I also reccommend reading Zen and the Art of Motorcycle Maintenence: An Inqiry into Values for a pretty good discussion of the whole notion of quality.
I'd say just keep the codebase unless you are totally switching languages (or in our case taking out a 3rd party integration). Otherwise if you re-write you'll wish you hadn't. The new codebase will end up being in the same state as the old codebase, it'll just take a little bit more time to get there.
I'd also reccommend just doing a performance test of the site, and find out which modules really need to be re-written. The 80/20 rule will invariably apply -- 80% of the execution time will be spent in 20% of the code -- so at a minimum just re-write the 20% of the code that's executed on the most frequent paths. Leave the rest alone. Re-writing it will just be a waste of time, and you have to fix all the old bugs that were re-introduced during the re-write.
I'd love to offer up my opinion, but I'm too busy playing return to wolf. I plan on taking a break in 10 mins, but I want to get a quick game of tribes 2 in. Maybe sometime tonight after my clan's quake 3 match, although my friend just gave me a copy of Civ 3 and I really wanted to check it out.
Perhaps tomorrow I'll post after my 16-way Halo LAN. The folks that are coming over said they may want to play a little UT, so perhaps after that I'll offer up my opinion on how rediciulous gaming addiction is.
The latest release of the Java 3D APIs delegate handling to underlying open-gl calls, and in some cases to the video card itself.
It's proven to be one of the lowest-level Java APIs available.
When Sony releases the JDK for the PS2, expect to see some additional APIs which handle rendering. Remember, a java program is only as good as the APIs it calls. If Sony builds these well, you shouldn't even be able to tell.
Also on a side note, a child response to this message said he'd never seen any good Java games for the WinTel platform. Well, my response would be all of JellyVision's games (You don't know Jack, Who wants to be a millionaire) were written using Java and JNI (Java Native Interface). The graphics calls were done in C++, and I expect the same to happen for the PS2. Sony will probably use JNI to provide wrappers for the existing calls.
Yes, the grad student will. But has anyone figured out why these numbers were picked? Isn't it true that for every number we factor the set of available "secure" keys shrinks by 1?
Isn't this almost like turning the community against itself "Here, factor this number and win 200k", but by doing so we're actually breaking a number that's important to us in some way we just don't know how? I mean, for someone to pay 200k for a SINGLE number to be factored, the payoff on their side must be enormous. What's their ROI for the 200k they've spent? More importantly, WHY are they asking us to do this?
Ummm, is that a misprint? The problem is that the people with the power are the people with the money, and only the people with the money. I'll just assume you mistyped.
No, that wasn't a misprint. Capitalism relies on the relationship between supply and demand. In this case, let's assume that only companies have the supply and consumers create demand. We have the money. The companies want it. Yet we have no power.
Simplified model aside, companies do have money. And they do have power. But it wasn't supposed to be that way. Capitalism works because the money the supplier wants starts in the hands of the buyer. There's an inherent check and balance system at work.
Somehow over the past 10 years that system has flipped and the buyer also has money. This puts them in a superior position of power because of it, and the people with the buyers are left with nothing.
Quality used to stand for something. Now it's not quality but quantity. How much can we make? How many can we produce? How many features can we build? All of these drive current capitalism. It's not "We had better make this quality because then no one will buy it"
The real bummer is that competition is the root cause of the flip. It was supposed to be a Good Thing, but Thomas Paine couldn't have predicted what would have happened if the companies
Didn't care about consumers
Had too much money
Had IP to protect
It almost feels the same to me as the beginning of the industrial revolution. Or the huge Carnagie steel conglomerate around the turn of the century. Money and power in the hands of a corporation can't be a good thing. Look what happened last time (hint, it starts with a D and ends in epression). When the companies with money and power lose all their money they lose all their power too.. and the rest crumbles like a stepped-on sand castle.
Good grammar correctors will politely point it out along with quiting the rule that was broken.
Hopefully these so-called grammar correctors will quote the rule that was broken. If the enlightened masses unilaterally decide to just quit the rule as you suggest, the world of communication may descend into chaos.
.anacron
Sony may not be doomed. '30' is a big number for games, but may not be too high for Blu-Ray movies. After all, how many DVDs do you own? 30? 100? You'll probably buy that many Blu-Ray discs in the next few years if you've got a shiny hi-def player in your living room.
.anacron
And that's where Sony's real money will be made.
I have been using Adobe Photoshop Album for the past year or so and have found it to be great. It's tag based, and will even let you create dynamic collections based on tags. It's like a standing search.
.anacron
Currently have over 15,000 photos in there and performance doesn't seem to be an issue.
The only gripe I have is that it doesn't (yet) support RAW photos. Hopefully they'll change that in the next release.
Why not try Groove? It's owned by Microsoft, and likely to show up in future versions of the OS. It's fairly easy to use, and you can store whatever you like securely.
If you have a lossless source, the quality of the derived audio should be as good as an original rip of the CD itself. That's the whole point of lossless encoding. If you're going from lossy->lossy, then any transcoding will introduce garbage, but how much garbage depends on how good the original source is. .anacron
The Tomatometer is currently at 38/100. In contrast, Matrix I was 86% and Reloaded was 73%.
.anacron
Maybe this is why Warner Brothers wanted a worldwide simultaneous release. They effectively mitigated their risk that the opinions of audiences in one country would adversely affect sales revenues in other countries.
In essence, the movie sucked, they knew it, and used the gimmick of the worldwide simultaneous release to increase first-weekend sales to the point that it wouldn't matter if everyone thought the movie sucked.
I would agree with this statement if the same content was available via alternative delivery mechanisms. It's one thing to impose a copy protection scheme on a particular method of content delivery, but it's quite another to do so when that's the only method of content delivery that's available.
Some on this thread have advocated just not buying the CD, but if I happen to really like the artist I have no alternative avenue for purchasing the content.
For me, the conflict is that the companies that have the interest in the content are the same as the ones doing the distribution. I'm all for record companies and artists making money, but I don't think they should be involved in the actual distribution of their product. When was the last time you walked up to a corner convenience store that was owned by the Coca Cola Company? Never. The content and the delivery are two distinct things, and it gets very messy and much more expensive for a single company to do both.
I think all the flap over copyright we've seen over the past few years would be solved if the record companies focused on the talent side of things -- acquiring, producing and recording artists and songs.
Once they have a finished product (albums and singles), they license the content to distribution companies who are free to distribute the albums and singles as they see fit. Some may choose to put the content on a CD and impose a copy protection scheme, and some may choose to make it available via digital download (perhaps with a different copy protection scheme in place).
The difference here is that the record companies have gone out of the distrubution business. Can you imagine going into your favorite record store and seeing the same CD but distributed from three or four different companies?
It's all about competition. The record companies don't care because they are earning a cut each time the song is distributed, no matter what form that distribution takes. The distribution companies want the markup on the actual sales of the disk, so they'll compete with each other to drive the price down so they can earn a piece of the sales.
I think this is a win-win situation for everyone involved, and perhaps on-balance will be about the same revenue stream for the record companies. Sure, they're giving up the sales of the CDs, but their content will be available in more venues.
The bottom line question: Is the content good enough to stand on its own, or is the real money where the sales are? Either way, let's turn the RIAA lawyers loose on coming up with a pen-and-paper content distribution model that allows the free market to operate. It'd be the first time this was done on pure content and not on actual physical products, but I think the model would hold quite well.
-anacron
Anyone ever given serious thought that perhaps the SCO code was lifted from the Linux source? The SCO engineers obviously had the same level of access as everyone else in the public domain -- perhpas the case will come down to who can prove what was released when. .anacron
Mario Kart was cool, but bring me back Uniracers. That game got me through 2 years of college. If you want some fun, turn the tournament mode into a drinking game.
.anacron
However, there is emperical evidence that does indicate the basic notions of quantum mechanics are more or less correct. What this means is that the smallest unit by which position can change or be defined is defined by the plank constant.
How can there be empirical evidence of this? The Heisenburg Uncertainty Principle precludes us from knowing both the position and the velocity of a particle in one measurement. The act of measuring one affects the other. How, then, is it reasonable to assume that the Plank constant is the lower bound of both distance and speed? We can't measure both at the same time. Isn't it reasonable to assume that the when we're measuring the position the lower bound Plank constant of velocity is violated? And that when we measure velocity the lower bound of distance is voilated?
Mathematics, on the other hand, contains the notion of infinitely divisiable continuities, which appear not to be reflected in our physical reality. This is one example where the math doesn't appear to map correctly to the physical world, and where the math can come up with infinities that, to the best of our knowledge, simply are not there in the physical world.
I would argue, based on literally thousands of years of this sort of thing going on, that our abstract mathematical notions of how the world operates are probably more correct than the observed values of the same thing. See Tycho Brahe, Newton, Copernicus, DaVinci et al.
Given this, it's reasonable to assume that just because we can't currently map our mathematical models to the physical world, it's likely that we just don't understand enough about the physical world to see how those models fit. After all, mathematics has withstood nearly two millenia of attack, but how many scientific theories do you know that have been around for more than 100 years? I can think of maybe 3 or 4.
So yes, there probably is a breakdown between the mathematics and the physical world, but that's just because our models of the physical world are incorrect. Including, perhaps, the Plank constant.
.anacron
That volume has some descrete limit (though depending on one's interpretation, that limit may be the entire volume of the universe, or more commonly, some small volume around that atom's nucleus). Either way, that volume has an upper limit.
:)
This is the Menger Sponge problem. Fractals are the same way -- Sure, they may have a finite derivable volume, but try and calculate the area and you're wasting your time. It's infinite. Koch Curves are the same way.
So although you may have a finite problem space to work in, the number of viable solutions is surely not finite.
Unless of course quantum mechanics has no basis in the "real world" of physical manifestations.
.anacron
I've always wondered -- if there was a 'Hurry The Fuck Up' button on your computer that you could press to increase the speed, how long would it take before the damn thing was permanantly duct-taped down?
.anacron
For instance, I could choose to display their name, birthday, wedding anniversary, and their favorite restaurant. It would be information that I already know, this would just allow me to access it more readily. In a way, it would act like a face-recognizing entry in my PDA, brining up all of the information I've already collected about that person.
If you have already personally collected that much information about the person then you probably know them well enough not to need a face-recognition software to pull that information up.
I think the real value in having a display like this is for Location Based Services. Want to see a movie but don't know where one is? Just overlay all the theatres in a 20 minute walk with what they're playing and next showtime. If you're driving, the HUD can give you advance warning signs that there's unseen traffic ahead. Thinking a bit further into the future, imagine having the outline of the road you're on highlighted -- so dark roads become just as safe as fully illumated ones.
Also imagine being able to stand in the middle of a city, look around you and see the menus of the restaurants you can see. Or real-time table availability. That restaurant has a 40 minute wait? No problem -- the one over there has immediate seating.
The crutch to all of this, of course, is how to pull that type of information. Web Services is a step in the right direction, but now combine it with the power of P2P (see Jini, JXTA, Groove.net or LimeWire) and automatic device and network discovery and you have a real killer app.
Miniaturization would allow all of this data to be fed into contact lenses, so you get a permanent, "augmented" view of the world. What a great thing.
The point being you can compress random data if the decoder knows what the random data is beforehand.
Won't this always be true for typical-use applications like compressing files and such? The bits that are to be encoded are known, because the encoder can just parse them. Things like streaming video and audio might get a bit tricky because unless you put some sophisticated buffering mechanism in place the bits to be encoded are probably not known ahead of time.
.anacron
I actually remember the day I wanted to upgrade the modem on my BBS from a 24oo to a 14.4. I remember fondly going to CompUSA, plunking down $200, and spending 2 hours flipping DIP switches and fixing Telix so it would all work. WWIV was pretty relaxed about the new modem thing, but I do remember getting G-modem (or was it H-modem) to work properly took some time.
Now it's just $10 bucks, and a quick PCI port install. Man I miss the good old days -- the days when it actually took some (not much) skill to run a computer.
My BBS ran on a 386/sx (16mhz) with 2MB of memory and a 120MB hard drive. I think with all my downloads, messages and such I still had nearly 60MB free. I thought 120 megs was impossibly huge. I still have the disk image burned onto a CD. It's fun going through messages that are 8 years old and remembering the good times.
.anacron
"Refactoring" is a trendy term (which alone makes it suspect) that came into mainstream acceptance very recently, but that most certainly doesn't mean that those in the software industry having been doing EXACTLY that for many years since?
I agree -- the term 'refactoring' is pretty trendy right now. But for the first time, there's a methodology behind it. Your argument is like saying, "Medicine has been around for 2000 years. All the advances that have been are just trendy and don't really benefit us."
Just because something is done, doesn't mean that it's done correctly, to plan, and for a good reason. Refactoring formalizes the best of what most people have already been doing, puts rules behind it, and quantifies exactly the reasons for doing it.
anacron, interesting experience and solid advice. I didn't see Extreme Programming mentioned. Did you use it at all?
Actually we didn't use it formally. But we used some of the best ideas. Iterative development, frequent code reviews, programming in pairs etc. We had a pretty small team so XP might have helped a little bit more, but it's a fundamental paradigm shift that most people I work with aren't comfortable making. My team would have been less effective had I said, "You *must* use XP."
I have been on projects in the past that have embraced more of the XP model, but something like Rational's Unified Process (RUP) kind of fits in more with what we do.
For traditional software shops (e.g. those that make products) a methodology can be set in place by the management, because the company is in essense it's own client. For other types of software shops -- such as consulting firms, or web design shops -- where one-off software is commonplace, the type of methodology that's used is usually determined by the client.
For example, if I'm working with a client that isn't very savvy, I probably don't want to do all of my requirements in formal use-cases, followed up by UML design documents. They won't add any value to the client at all, yet we still have to make sure we understand what it is we're building.
It's an interesting challenge and it's usually best overcome by having solid people on the team that can speak to both sides. A solid requirements team which can talk to the client (be it internal or external) and truly understand the business problems, all the whole clearly articulating those to the technical team. Sometimees double documentation is necessary -- one set for the client and one set for the developers or development lead.
There is just no easy way to do software development correctly. It's amazing that in nearly 60 years, no one has come up with a "right" way. There's only so much a methodology can bring to the table -- after that it's about finding and keeping a competant staff who understand the value of what they're doing.
The methodology is just a roadmap. How the car is driven is completely up to the development team. Even a good technical leader can become a backseat driver at times, as there is just not enough hours in the day to provide oversight to every single member of a team.
I think the more traditional software shops should look at the console gaming industry for tips. They have a difficult challenge -- it's not possible for them to release a fix or update for their game once it's completed. So how do companies like Activision, Square, Nintendo and Sega do their software development, and is there anything that the development teams at large can learn? Rigerous testing is one of the most obvious things that comes to mind for them, but how do they know what it is they're testing when a game's vision usually only exists in the mind of the creator?
.anacron
Refactoring is not re-writing. Refactoring is a methodical approach to moving, redesigning, and making the code cleaner. It's not throwing away and starting from scratch. The two words are wholly semantically different.
In his book, Refactoring, Martin Fowler talks about how code "smells". He identifies a whole slew of reasons why code can "smell" bad, such as having a method that's too long, having a method on the wrong object, incorrect use of polymorphism, etc. He then outlines "Refactoring Patterns" which can be applied to certain "smells" to make the code more managable.
The last project I managed was a 3 month re-write of over 75,000 lines of code for an auction component that had gotten way out of control. The original component integrated with a very very poorly written (yet still very expensive) auction engine, and our task was to take it out.
Because there was no time allotted to proper requirements gathering, the powers that be decided that we could use the existing system as a requirements base, and just make the new system "act" like the old one.
So I was thrown two things: A staff that was inexperienced in design, and a lack of requirements. We were re-writing from scratch -- throwing all of the code away and starting again. I'm one of the only ones on my team that actually knows what refactoring means, let alone how to apply it.
So we built the new system based on a solid design. We even did the design in UML. But that only goes so far. Given a properly designed system, there is still another lower step -- how to actually implement the code. Invariably, the design doesn't take into account helper methods that are necessary, other objects, etc. Because we were on a tight schedule, I left it up to each developer to design these new tidbits.
If they had known what they were doing, everything would have been fine, but there are several places where the code is absolutely abysmal. It's not that it will perform poorly or is totally unmanagable, but in some places it's close.
Granted, the business rules for the system are some of the most complex I've ever seen, but if the developers had known more about refactoring, they might have made better choices.
There's a whole notion of Quality here that should be discussed as well. Most good has a good enough quality, and though it looks ugly, I'd throw it away. There's an interesting interview by Joel (a former microsoft programmer) which tackles these problems of Quality head on. I also reccommend reading Zen and the Art of Motorcycle Maintenence: An Inqiry into Values for a pretty good discussion of the whole notion of quality.
I'd say just keep the codebase unless you are totally switching languages (or in our case taking out a 3rd party integration). Otherwise if you re-write you'll wish you hadn't. The new codebase will end up being in the same state as the old codebase, it'll just take a little bit more time to get there.
I'd also reccommend just doing a performance test of the site, and find out which modules really need to be re-written. The 80/20 rule will invariably apply -- 80% of the execution time will be spent in 20% of the code -- so at a minimum just re-write the 20% of the code that's executed on the most frequent paths. Leave the rest alone. Re-writing it will just be a waste of time, and you have to fix all the old bugs that were re-introduced during the re-write.
I'd love to offer up my opinion, but I'm too busy playing return to wolf. I plan on taking a break in 10 mins, but I want to get a quick game of tribes 2 in. Maybe sometime tonight after my clan's quake 3 match, although my friend just gave me a copy of Civ 3 and I really wanted to check it out.
Perhaps tomorrow I'll post after my 16-way Halo LAN. The folks that are coming over said they may want to play a little UT, so perhaps after that I'll offer up my opinion on how rediciulous gaming addiction is.
The latest release of the Java 3D APIs delegate handling to underlying open-gl calls, and in some cases to the video card itself.
It's proven to be one of the lowest-level Java APIs available.
When Sony releases the JDK for the PS2, expect to see some additional APIs which handle rendering. Remember, a java program is only as good as the APIs it calls. If Sony builds these well, you shouldn't even be able to tell.
Also on a side note, a child response to this message said he'd never seen any good Java games for the WinTel platform. Well, my response would be all of JellyVision's games (You don't know Jack, Who wants to be a millionaire) were written using Java and JNI (Java Native Interface). The graphics calls were done in C++, and I expect the same to happen for the PS2. Sony will probably use JNI to provide wrappers for the existing calls.
.anacron
It's more terrorist activity. Check this out:
- 02 1.htm
http://www.nipc.gov/warnings/advisories/2001/01
Leggo my LEGO.
.anacron
Yes, the grad student will. But has anyone figured out why these numbers were picked? Isn't it true that for every number we factor the set of available "secure" keys shrinks by 1?
Isn't this almost like turning the community against itself "Here, factor this number and win 200k", but by doing so we're actually breaking a number that's important to us in some way we just don't know how? I mean, for someone to pay 200k for a SINGLE number to be factored, the payoff on their side must be enormous. What's their ROI for the 200k they've spent? More importantly, WHY are they asking us to do this?
.anacron
No, that wasn't a misprint. Capitalism relies on the relationship between supply and demand. In this case, let's assume that only companies have the supply and consumers create demand. We have the money. The companies want it. Yet we have no power.
Simplified model aside, companies do have money. And they do have power. But it wasn't supposed to be that way. Capitalism works because the money the supplier wants starts in the hands of the buyer. There's an inherent check and balance system at work.
Somehow over the past 10 years that system has flipped and the buyer also has money. This puts them in a superior position of power because of it, and the people with the buyers are left with nothing.
Quality used to stand for something. Now it's not quality but quantity. How much can we make? How many can we produce? How many features can we build? All of these drive current capitalism. It's not "We had better make this quality because then no one will buy it"
The real bummer is that competition is the root cause of the flip. It was supposed to be a Good Thing, but Thomas Paine couldn't have predicted what would have happened if the companies
It almost feels the same to me as the beginning of the industrial revolution. Or the huge Carnagie steel conglomerate around the turn of the century. Money and power in the hands of a corporation can't be a good thing. Look what happened last time (hint, it starts with a D and ends in epression). When the companies with money and power lose all their money they lose all their power too.. and the rest crumbles like a stepped-on sand castle.
.anacron