If you get Design Patterns, get also "Pattern Hatching" by Vlissides (one of the Gang of Four who wrote the original). It's a much thinner tome, and concerns application of patterns - in the first example, it shows how a number of patterns are found in building a filesystem model with symlinks and other basic info.
Not absolutely neccessary reading, but very useful.
(BTW, I concur with whoever posted to get the first edition with examples in Smalltalk alongside C++. Smalltalk owns, one of the coolest languages I ever learned in college.)
No. The Complex/Reduced refers to the instruction set - RISC architectures tend to have an large number of registers and very simple instructions, CISC architectures have fewer registers and highly detailed, complex instructions.
Take a Pentium MMX, which has single instructions to add and crossproduct floating point vectors but have only 16 or 18 primary registers and 8-16 floating point / mmx registers. Even something basic like the 8086 had DJNZ, one instruction capable of implementing most loops singlehandledly. (DJNZ = Decrement CX, Jump to immediate address if Non-Zero)
In contrast, take the SPARC, which has 64 registers and a minimal instruction set (adds, multiplies, etc..)
I can almost guarantee you these numbers are incorrect, since I've been up all night studying dataflow analysis for a compiler design final this morning. Feel free to correct me if I'm wrong, I won't take it personally:)
On the other hand, one of the problems in RISC architectures is you got a lot of incredibly similar CPUs that vary just enough to be impossible to support with a single code base. A good example of this is the MIPS processor - everyone and their mom implements it differently. I remember attending a talk from the woman who implemented the memory management system for VxWorks and hearing they had some amazingly huge number of different implementations and feature set definitions for MIPS processors.
Gah - my apologies, at a LAN party and another slashdotter at the party wrote on my machine while his was rebooting. (It's a damn good thing the contact information on here is nearly two years old, I don't need any flames.)
I can top it - I had the RS-232 expansion in mine and a 300 baud modem!
LOL I miss mine... not sure if it's still in an attic or not. I know I've got the cartridges in a box next to my XT. (And oddly enough, I had the phatty supra-l33t disk array, even the word processor for it, the speech synth, and Parsec still owns me... but I didn't have that 3-cartridge-in-one expander! GAH!)
He'd be proud of it, yes. He also realizes, since it is a pile of shit, it stinks. Romero thinks Daikatana is a masterpiece. In this way, his shit stinks less than Romeros.:)
Most of us hardcores use copper, aluminum, or silver grease now:-) No dry out, and I'd like to see silicone beat those for heat transfer.
As for those of you who aren't sure about lapping, it's grinding down the rather large amount of extra metal on certain processor cores such as the Socket370 Celerons, flattening it to an incredible amount. Most people equally lap their heatsinks, and a few have gotten them so flat and clean that they got impact welded:P People will sand these things down to 2000 grit or higher, until you can get perfect reflections in the copper.
We are quite aware that it's fair, and perfectly legal. Unisys has every LEGAL right to it.
We're angered by two things:
1) While it may be legally right as of now, a patent shouldn't have been awarded for something so simple and straightforward as palleted RLE encoding with a GIF header smacked on it.
2) Even if GIF was somehow deserving of a patent, the moral issues surrounding slapping patents and extracting fees for a format that forms a good part of the Internet are quite debatable.
3) Unisys also has been known to slap companies which have used legal software with licenses for GIF to pay in turn, claiming that Internet use constitutes enough reproduction to deserve buying their own license. They're effectively charging two license fees for the same image.
So, we know very well the legal issues involved. We're saying that Unisys deserves to be cast in the same steaming sack of shit as Microsoft for unethical means of making green for corporate.
If this is indeed the case, I just don't see what's so unethical about it. (Other than the possible threats of Rob pushing VA over other Linux companies.) Granted, I didn't know about it until I read this comment.
That's it, penalty time, no posting to Slashdot for a week on the grounds of being too lazy to read the goddamn article.
The students in that dorm were authorized and even told to bring their machines down and hook it into that jack to connect to the Internet. They decided, instead of hauling heavy ass computers up and down stairs to connect via Ethernet, to make the cable longer to reach up and down the stairs. Same connection, same authorization, only this time it's illegal for some reason.
> It's akin to me running a wire next door to my neighbor's house to get free cable tv.
BAD analogy. You forget that they had good accounts, and were authorized to access the school's machines.
It's akin to you running a wire next door to your neighbor's house to get your paid-for cable TV with a legally sold and authorized descrambler, because the cable company is too cheap to run a cable to your own house.
No, he was right the first time. Monads are a technique for handling I/O in functional languages (since I/O is an imperative task). Check out chapter 18 of Simon Thompson's "Haskell: The Craft of Functional Programming" for more info. In turn, it references "Advanced Functional Programming" by Jeuring and Meijer.
Linux is getting closer as far as software support (such as StarOffice/KOffice, etc.) but it has a ways to go as far as making drivers easy to handle for people. Even my parents and siblings can handle the most basic driver work in Windows such as installing or uninstalling drives or a scanner or printer, etc. - but even engine gods like Carmack can have troubles with Linux drivers.
THE Carmack and Bernd Kreimeier (of Loki software, the guys with the mad porting skillz) talked about this on the Utah-GLX driver list. They have a copy of the exchange on LinuxGames for Sunday the fifth.
I don't see why you couldn't conversely solder on a capacitor and flash the BIOS. But why? The ATA66 controllers are cheap (esp. compared to the RAID controller) and most RAID controllers have a single disk mode anyways.
AFAIK as long as Report.lib isn't based on GPL code, you're alright. Otherwise we wouldn't be able to have many of the modules we have today (i.e. GPL'ed sound programs relying on OSS, and so on.) The second case would also make it hard for Perl to coexist with Linux, since Perl is under the Artistic.
A lot of it has to do with the environment and stress (this may sound like utter BS, but it's fairly truthful in my experience) in which you work. I use the same ergo keyboard at work and at home, and while I can hack at a program for hours on end at home, I used to have sore wrists at the end of the day at work. Also the arrangement of the rest of your area is important, I rearranged a while back after the sore wrists started and now can do 10 hour stretches without problems, although I still can go longer at home.
Most damage in keyboarding comes from people holding their wrists bent outwards and upwards, and that's where the split keyboards help alot. (I can't stand the independent split, though, since I code and need to type with one hand from time to time while looking through hardcopy stuff, so I have a set-split.)
For those considering a change but not wanting to fork out big cash, the MS Natural Keyboard (not the Elite) is a lot easier on your wrists compared to a normal 104 or 105, and you can pick those up pretty cheap. It might take a few days to get used to it, but you'll feel cramped going back afterwards =) And yes, I use a highly unorthodox keying method. (At least for me, they also don't interfere with typing speed, as I type over 100wpm. I don't use the MSNK, but a different one with a different split line.)
2) Not moderation, he karma whored before this and now gets an automatic +1 bonus to anything he posts. Other users who have karma high enough to give them the +1 bonus usually use their ability to turn it off (as I have in this posting). IMHO the Karma +1 button is a good thing, it rewards people who actually think before they post, but there should be an option through M2 (M3?) to turn the +1 option off for those who abuse it by posting frivolous or off-topic things at Lv2.
Or maybe just try quoting some studies featured in these books. I had been writing kernel hacks and coding fulltime long before I ever read any of McGuire's books. He provides hard quantitative reasoning for most of the things that a decent programmer knows (but that an investor with a non-programming background might not understand at face value).
Try not being sarcastic and jumping on people. Or did you have any intent at all besides being an ass?
What, what? A mention on/. of a programming language that's not descended from von Neumann ideas? Who knew. =)
Out of curiosity, have any projects of reasonable size been implemented in a modern FP such as Haskell? (I ask since I'm taking CS492 right now which is a seminar class on Haskell, and it's a total blast.)
For those who are unfamiliar with Haskell and other functional programming languages, FPs constitute a different way of thinking about programming and system architecture; Haskell features strong typing, higher order functions (functions can be passed to and returned from other functions), rank-2 polymorphism, lazy evaluation, curried functions (pass unsufficient #s of args and get back a function that works with those args preset and takes the other missing args) and other such COOL STUFF (tm). And as it's built on functions, there is no internal state, no variables, pointers, etc. which is hard to get used to but eliminates most of the nasty crash-prone parts of C/C++/etc.
Here's something nasty to twist your mind around for C programmers: quicksort in four lines of code that works on any object supporting inequality operators.
qsort [] = [] qsort (x:xs) = (qsort ls) ++ [x] ++ (qsort rs) where ls = [y | y = x]
This reads: Quicksorting an empty list returns an empty list. Otherwise, take everything after the first element (xs), create two lists of everything above and below the first, and concatenate them together with the first element in the main list. This also features another neeto part of Haskell, pattern matching on function parameters to determine behavior (for both speed enhancements and for design reasons).
If you get Design Patterns, get also "Pattern Hatching" by Vlissides (one of the Gang of Four who wrote the original). It's a much thinner tome, and concerns application of patterns - in the first example, it shows how a number of patterns are found in building a filesystem model with symlinks and other basic info.
Not absolutely neccessary reading, but very useful.
(BTW, I concur with whoever posted to get the first edition with examples in Smalltalk alongside C++. Smalltalk owns, one of the coolest languages I ever learned in college.)
No. The Complex/Reduced refers to the instruction set - RISC architectures tend to have an large number of registers and very simple instructions, CISC architectures have fewer registers and highly detailed, complex instructions.
:)
Take a Pentium MMX, which has single instructions to add and crossproduct floating point vectors but have only 16 or 18 primary registers and 8-16 floating point / mmx registers. Even something basic like the 8086 had DJNZ, one instruction capable of implementing most loops singlehandledly. (DJNZ = Decrement CX, Jump to immediate address if Non-Zero)
In contrast, take the SPARC, which has 64 registers and a minimal instruction set (adds, multiplies, etc..)
I can almost guarantee you these numbers are incorrect, since I've been up all night studying dataflow analysis for a compiler design final this morning. Feel free to correct me if I'm wrong, I won't take it personally
On the other hand, one of the problems in RISC architectures is you got a lot of incredibly similar CPUs that vary just enough to be impossible to support with a single code base. A good example of this is the MIPS processor - everyone and their mom implements it differently. I remember attending a talk from the woman who implemented the memory management system for VxWorks and hearing they had some amazingly huge number of different implementations and feature set definitions for MIPS processors.
No, you get 80 to 100 KB/s.
34MBits is 3/4 of a full fiber DS-3.
Gah - my apologies, at a LAN party and another slashdotter at the party wrote on my machine while his was rebooting. (It's a damn good thing the contact information on here is nearly two years old, I don't need any flames.)
:D
Well, at least he actually made first post
I can top it - I had the RS-232 expansion in mine and a 300 baud modem!
LOL I miss mine... not sure if it's still in an attic or not. I know I've got the cartridges in a box next to my XT. (And oddly enough, I had the phatty supra-l33t disk array, even the word processor for it, the speech synth, and Parsec still owns me... but I didn't have that 3-cartridge-in-one expander! GAH!)
He'd be proud of it, yes. He also realizes, since it is a pile of shit, it stinks. Romero thinks Daikatana is a masterpiece. In this way, his shit stinks less than Romeros. :)
Actually, looks like he is the real bruce perens.
Most of us hardcores use copper, aluminum, or silver grease now :-) No dry out, and I'd like to see silicone beat those for heat transfer.
:P People will sand these things down to 2000 grit or higher, until you can get perfect reflections in the copper.
As for those of you who aren't sure about lapping, it's grinding down the rather large amount of extra metal on certain processor cores such as the Socket370 Celerons, flattening it to an incredible amount. Most people equally lap their heatsinks, and a few have gotten them so flat and clean that they got impact welded
I could be wrong, but I think the patent only involves compression, not decompression.
We are quite aware that it's fair, and perfectly legal. Unisys has every LEGAL right to it.
We're angered by two things:
1) While it may be legally right as of now, a patent shouldn't have been awarded for something so simple and straightforward as palleted RLE encoding with a GIF header smacked on it.
2) Even if GIF was somehow deserving of a patent, the moral issues surrounding slapping patents and extracting fees for a format that forms a good part of the Internet are quite debatable.
3) Unisys also has been known to slap companies which have used legal software with licenses for GIF to pay in turn, claiming that Internet use constitutes enough reproduction to deserve buying their own license. They're effectively charging two license fees for the same image.
So, we know very well the legal issues involved. We're saying that Unisys deserves to be cast in the same steaming sack of shit as Microsoft for unethical means of making green for corporate.
If this is indeed the case, I just don't see what's so unethical about it. (Other than the possible threats of Rob pushing VA over other Linux companies.) Granted, I didn't know about it until I read this comment.
The article said that the lab was unused, IIRC.
It's a day later and I don't remember =P
That's it, penalty time, no posting to Slashdot for a week on the grounds of being too lazy to read the goddamn article.
The students in that dorm were authorized and even told to bring their machines down and hook it into that jack to connect to the Internet. They decided, instead of hauling heavy ass computers up and down stairs to connect via Ethernet, to make the cable longer to reach up and down the stairs. Same connection, same authorization, only this time it's illegal for some reason.
> It's akin to me running a wire next door to my neighbor's house to get free cable tv.
BAD analogy. You forget that they had good accounts, and were authorized to access the school's machines.
It's akin to you running a wire next door to your neighbor's house to get your paid-for cable TV with a legally sold and authorized descrambler, because the cable company is too cheap to run a cable to your own house.
Hmm. NT. Halon. NT. Halon. NT needing a halon system to put out fires.
Although I know quite well these are implemented for any hardware massed in a small room, somehow I just can't stop smiling. =)
(And yes, unix admins like breathing. in most cases. i've known a few that could live off the supply of hot air in their inflated heads. =D)
No, he was right the first time. Monads are a technique for handling I/O in functional languages (since I/O is an imperative task). Check out chapter 18 of Simon Thompson's "Haskell: The Craft of Functional Programming" for more info. In turn, it references "Advanced Functional Programming" by Jeuring and Meijer.
Linux is getting closer as far as software support (such as StarOffice/KOffice, etc.) but it has a ways to go as far as making drivers easy to handle for people. Even my parents and siblings can handle the most basic driver work in Windows such as installing or uninstalling drives or a scanner or printer, etc. - but even engine gods like Carmack can have troubles with Linux drivers.
THE Carmack and Bernd Kreimeier (of Loki software, the guys with the mad porting skillz) talked about this on the Utah-GLX driver list. They have a copy of the exchange on LinuxGames for Sunday the fifth.
Not any more. The company is dead. If you know who I am and my connection to them, you are likely aware of the reason.
I don't see why you couldn't conversely solder on a capacitor and flash the BIOS. But why? The ATA66 controllers are cheap (esp. compared to the RAID controller) and most RAID controllers have a single disk mode anyways.
AFAIK as long as Report.lib isn't based on GPL code, you're alright. Otherwise we wouldn't be able to have many of the modules we have today (i.e. GPL'ed sound programs relying on OSS, and so on.) The second case would also make it hard for Perl to coexist with Linux, since Perl is under the Artistic.
IANAL, of course, but I think you're okay.
A lot of it has to do with the environment and stress (this may sound like utter BS, but it's fairly truthful in my experience) in which you work. I use the same ergo keyboard at work and at home, and while I can hack at a program for hours on end at home, I used to have sore wrists at the end of the day at work. Also the arrangement of the rest of your area is important, I rearranged a while back after the sore wrists started and now can do 10 hour stretches without problems, although I still can go longer at home.
Most damage in keyboarding comes from people holding their wrists bent outwards and upwards, and that's where the split keyboards help alot. (I can't stand the independent split, though, since I code and need to type with one hand from time to time while looking through hardcopy stuff, so I have a set-split.)
For those considering a change but not wanting to fork out big cash, the MS Natural Keyboard (not the Elite) is a lot easier on your wrists compared to a normal 104 or 105, and you can pick those up pretty cheap. It might take a few days to get used to it, but you'll feel cramped going back afterwards =) And yes, I use a highly unorthodox keying method. (At least for me, they also don't interfere with typing speed, as I type over 100wpm. I don't use the MSNK, but a different one with a different split line.)
1) Not a troll, he's really that juvenile.
2) Not moderation, he karma whored before this and now gets an automatic +1 bonus to anything he posts. Other users who have karma high enough to give them the +1 bonus usually use their ability to turn it off (as I have in this posting). IMHO the Karma +1 button is a good thing, it rewards people who actually think before they post, but there should be an option through M2 (M3?) to turn the +1 option off for those who abuse it by posting frivolous or off-topic things at Lv2.
Nah. APL takes the cake any day.
Haskell does pretty good too if you don't use parenthesis - here's a nasty one we encountered in class:
executeTwice f x = f (f x)
successor x = x + 1
executeTwice successor 7 = 9
executeTwice executeTwice successor x = 11
executeTwice executeTwice executeTwice successor 7 = 23
Two cents to anyone not well versed in FPs that can trace expansion of the above. =)
Or maybe just try quoting some studies featured in these books. I had been writing kernel hacks and coding fulltime long before I ever read any of McGuire's books. He provides hard quantitative reasoning for most of the things that a decent programmer knows (but that an investor with a non-programming background might not understand at face value).
Try not being sarcastic and jumping on people. Or did you have any intent at all besides being an ass?
What, what? A mention on /. of a programming language that's not descended from von Neumann ideas? Who knew. =)
Out of curiosity, have any projects of reasonable size been implemented in a modern FP such as Haskell? (I ask since I'm taking CS492 right now which is a seminar class on Haskell, and it's a total blast.)
For those who are unfamiliar with Haskell and other functional programming languages, FPs constitute a different way of thinking about programming and system architecture; Haskell features strong typing, higher order functions (functions can be passed to and returned from other functions), rank-2 polymorphism, lazy evaluation, curried functions (pass unsufficient #s of args and get back a function that works with those args preset and takes the other missing args) and other such COOL STUFF (tm). And as it's built on functions, there is no internal state, no variables, pointers, etc. which is hard to get used to but eliminates most of the nasty crash-prone parts of C/C++/etc.
Here's something nasty to twist your mind around for C programmers: quicksort in four lines of code that works on any object supporting inequality operators.
qsort [] = []
qsort (x:xs) = (qsort ls) ++ [x] ++ (qsort rs) where
ls = [y | y = x]
This reads: Quicksorting an empty list returns an empty list. Otherwise, take everything after the first element (xs), create two lists of everything above and below the first, and concatenate them together with the first element in the main list. This also features another neeto part of Haskell, pattern matching on function parameters to determine behavior (for both speed enhancements and for design reasons).