Was this posted here before?
This is an actual book, sold on Amazon..
Was this posted here before?
This is an actual book, sold on Amazon..
@mott555 said in Argentina wants to register everyone's DNA. Seriously.:
My friends who had recently returned from Argentina had told us all they'd bring enough mate >to go around, and fortunately they forgot and left it all at home. I just know we'd have been >thrown in jail until lab tests confirmed it wasn't illegal drugs. That stuff looked shady as hell.
Wow? Really? I know airport security sometimes gets paranoid, but its not like they had coca leaves with them. And yes, in case anyone's wondering in the northern region of argentina coca leaves are sold freely. Usually in small quantities, though, not nearly close to the amount needed to make, y'know, actual cocaine (but then, that would take far more than just the leaves).
It's just too bad it doesn't compile
You're right, it doesn't. I didn't have a C compiler handy at the moment and it was written in a rush. The intention was to return an int and to assing the newly created pointer to the old pointer.
Then it should handle them differently, as a file type rather than a pointer.
Its a special type of pointer. FILE is already a type. The FILE * semantic actually tells you that it is a FILE pointer. FILE is the type. * signifies that its a pointer to a file. What would actually change if you omit the pointer? Nothing. Virtually no one tries to use free()
on a file pointer. It is not even an issue.
Can you really?
Okay, I lied, two lines:
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
I didn't account for the first line, which handles the case of an empty list.
Is it possible to achieve Quicksort's performance characteristics in one line of Haskell?
I haven't measured the code for speed (or claimed that it was faster for that matter). Do you have a large list of randomly generated numbers and enough time? Hold on, I'll fetch my beer.
Because you have to remember to use it on every execution path which necessitates the deallocation of memory.
Doing fclose()
on a file is not an issue amongst C programmers. Show me a large security hole that has resulted from it. Is not more complicated than doing .close()
on a file object. You are arguing non issues.
Because the guys who knew how to make an OS, were the guys who already had experience in it. And guess which language the had to get their experience with? That is the essence of the C vicious circle.
So Donald Knuth, Theo DeRaadt, Linus Torvalds and Bertrand Meyer are all wrong to distrust C++ and you are right, then?
Tizen
You mean the one that is based on the Linux kernel, which in turn is written in C? ( https://en.wikipedia.org/wiki/Tizen ). Given how unenthusiastic you are about C, why haven't you reimplement the rest of the kernel in C++?. I though that was the meat of your argument, that you know what is it like to implement an OS from the ground up in C++.
But regardless, you must have some killer performance measurements of what writing those not-quite-userspace parts of the OS in C++11 are. Can you share them with us?
The point is that C++ allows for optimizations, which are impossible to do in C. You can argue that's the compiler, but without the language support, the compiler wouldn't be able to do those. And a C compiler can't, as explained in that book.
Some optimizations are. Also some aren't. C++ has worse spatial locality than C. In fact so does anything object-oriented.
Oh yes, because it's better to rely on some 3rd party tool to show you your code is broken, instead of a compiler telling you that upfront.
Compilers can do that too now. I was hesitant to mention sanitizer routines since I don't know if they exist in GCC. On clang -fsanitize=< memory/address/etc > would do exactly that.
In other words, you know shit about C++, yet you dare compare it with C and give absolute statements, like it not being memory safe.
I wasn't aware of a C++11 feature, which uses object oriented parts to do its job. Exception handling has an overhead. Again...do you use object oriented constructs in the low level parts of the kernel? A little googling tells me that this is not the case. Because your operating system has those parts implemented in C. Because it uses the Linux kernel and that is written in C. You claim that you can get much better performance writing the entire OS in C++? Fine, so be prepared to backup your claims instead of restorting to angry outbursts against the C language or claiming that you are the only one in possesion of the truth.
Yes, I read the link you posted.C++ can qsort()
faster than C, but that doesn't prove that its faster for coding operating systems. This is why I brought up haskell. Generating a 10000 element list and asking for the first element is faster than both C and C++ because it computes fewer things. That doesn't make it faster for the general case and I wouldn't even want to see the code that generates.
The claim that C has to evolve and be replaced is a valid one. The claim that is a bad language is, at best a dubious one. The claim that C++ can replace it for ALL THE THINGS has to have some foundations. And instead of assuming that the rest of the world is idiotic and insane for using C, and going on lengthy and angry triades, calm down and try to provide evidence for your claims. If they are so compelling as you say they are, you will find no opposition.
Many times, C interfaces will give you pointers to refer to a resource of some kind. A FILE pointer, for example (right out of stdio.h, so you can't blame bad designers for this) has to be cleaned up with a call to fclose, not free. Even though it's a pointer.
Point taken, you are not using free (though it sounds more like OP was talking about freeing a struct with a dedicated function or something of the sort). I fail to see how that is an issue, though. You open()
a file and you close()
it. The interface is perfectly consistent. File pointers are different because on most operating systems you have a limited number of files that you can open simultaneously, so the special handling is justified.
These three functions do essentially the same thing: They allocate a chunk of memory, initialize that memory to some value, return the value to the caller and report an error if allocating fails.
int * cptr(int * out)
{
if(*out == NULL)
return FALSE;
void * ptr = malloc(sizeof(int));
if(ptr != NULL)
return FALSE;
*ptr = 10;
*out= *ptr;
return TRUE;
}
(Since it seemed like you were using C++ idioms I rewrote the program in pure C).
It honestly doesn't seem so illegible . Of course the C++ version is more succint. This is something that you get the higher you go. You can do quicksort in haskell with exactly 1 line of code. The question is if the tradeoff is worthy. The tradeoff in legibility seems not really worth it (again, we can go higher up the language ladder and we get more readabilty at the cost of performance).
The C-like function does what is the common idiom in C and uses the return value to signal errors, and an output parameter to return the value. The C++ functions are free to use the return value to return the value, since they report an error through an exception instead.
C++ does a lot of stuff behind the scenes to make that happen. Doing that in high level applications is good. Dealing with stack unwinding and exceptions in low level code is not so ideal. This is why e.g Rust doesn't have classes (though it does have something similar) and IMHO it has a real shot at replacing C.
The C-like function has to check its output parameter isn't null, although I guess you could use a macro to disable that check in release versions, trust your callers to never pass a bad pointer, and get rid of the added safety for higher performance. When has a null pointer ever caused problems for a C program, right?
In theory this sounds horrible, but in practice, it's not such a huge problem. C was intended for low level usage and this kind of "unsafe semantics" were intentionall. Most tools would detect uses after free, tough (if you bother to use them).
If you want absolute safety, you can allways go higher up the ladder. Haskell programs can be proven for termination (and correctness according to a spec) and don't deal with pointers at all. They take quite the performance hit but if you don't mind that your code can be secure and probably correct (there are ways to demonstrate that a specially . Almost no one bothers, though. I'll take the ocassional bad pointer over the overhead of having to deal with exceptions and unwinding of the stack.
Citation Fucking Needed.
You're right. I have no idea if they would have done so, had they thought other language was better. Newer projects would have used other alternatives had they been so good.
Or forgot the he should free memory with some magic function instead of standard free(), because the compiler wouldn't tell him.
What do you mean by this? Why wouldn't you use standard free()
?
*p = malloc(<insert number here>);
free(p);
Why would you use a non standard function? For the laughs?
And yes - C++ is an alternative for systems stuff. Been doing that for some years now, while you haven't.
Explain why then. Don't use an argument from authority. C++ was created in the 80's. Windows NT was created in 1993. If it is such a no brainer , why didn't Microsoft programmers use C++ entirely instead of going for a mixture of C++ and C (and C#)?
Incidentally, which OS are you developing?
Why do I need statistics, when you claim there is no alternative to C. I just need to point examples where other languages are being used, to prove you wrong.
I claimed that there was no better alternative. I pointed out other operating systems written in...not C (Djikstra's THE was one). I concede that I could have been more clear, though. You can find operating systems written in Java or Haskell. How many of those caught on?
And this deserves an award for ignorance. Garbage collection in C++? Nice way of proving you don't actually know what you're talking about.
The "garbage collected languages" part was not referring to C++, but to the likes of Java and C#.
Oh, I would just love to see the arguments for that. Or will just leave it as a dogma?
It is not impossible to write an operating system that doesn't use C. The alternatives didn't seem to catch on however, and the landascape is dominted by C. If the advantages are so many that one would have to be insane to ingore the tradeoff why do so many people choose to do so? You cannot chunk it all to argumenting cruft or programmer ignorance since there are systems that started from scratch and didn't adopt C++.
C++ std::sort being 670% faster, you can extrapolate the reasoning for other algorithms. That's another point towards your ignorance of the topic.
Can I extrapolate this to ALL the algorhythms and not just sort and sqrt?. I know some functions in the STL were faster in C++ than in C, but so is asking for the first element of a 10 000 element list in haskell (or the first element of an infinite list, for that matter). What I meant was how fast was in the general case of running programs. As it turns out, this depends on the compiler and the implementation and not on the language itself. What compiler are you using? GCC, LLVM, Intel C++ Compiler?
This is assuming that speed is the only factor, of course and somehow the curve of learning C++ (which is steeper than C) is worth it.
Sure, you can manage memory in C++ by hand, but why would you? Are you an idiot to do that?
So, you're claiming that when writing low level code, you do not need to manage memory by hand? What do you use instead?
Sure, you can use owning raw pointers in C++, but why would you? Are you an idiot to do that?
So what's C++ alternative to owning raw pointers?
Sure, can friend every class with every one, and ignore all the good programming practices, but why would you? Are you an idiot?
Because people want performance more than they want a sane language I guess. If no one should use it under any circumstance...why is it even a thing?
If you make a claim, at least do a quick googling to find it it's true.
You made the claim that C++ was more performant and safe in the first place. The burden on proof is on you, not on me.
Moot argument. It survived for 30y because there was no real alternative and later there was a metric ton of legacy code. And that led to our C vicious circle.
If there was a sufficiently compelling alternative, projects would have switched and new projects would have started from scratch. There wasn't. And the current alternatives are debatable at best. C++ is not an alternative to C for systems programming.
Windows has a very large portion written in C++.
And another large portion written in C, and another large portion written in C#. Do you have any statistics as to what is the percentaje of C++ regarding C and C#?
You have type and memory safe (unless forced otherwise) languages like C++.
Any language that supports arbitrary pointer arithmetic is not memory safe. Yes, that includes C++. You can't say "safe language" and "C++" in the same sentence. In fact, C++ allows you to violate many OOP concepts (e.g: friend functions) for an OOP language, it's not even good at that.
Windows is partly written in C because C is inescapable when writing operating systems. There are some low level parts that can't be written in C++ and the OO capabilities of C++ turn into baggage when writing low level code for that reason. Also for a lot of things you have to restrict yourself to use C (which is not a strict subset of C++) when coding operating systems.
C++ is a joke regarding safety and garbage collected languages aren't really suitable for low level programming unless you are willing to write a lot of assembly.
If you wanted to use an example of a type and memmory safe alternative you should have brought up either Rust or Go, not C++. It's doubtfull someone will make a successful OS out of them in the near future, but at least they are actual attempts to replace C. For one, Rust actually implements memory safety and OOTB unicode support (personally I'd put my money on Rust, since I actually like the language).
with even more performance than C (yes, google it - especially the standard library stuff)
The claim that it is "faster" (funny you should bring it up, its usually the other way arround) comes mainly from the implementation of qsort()
. Perhaps you can prove to me that it is faster for the general case, do feel free to point me towards benchmarks.
Oh right; and when I said "cow" you should have known I was including goats, sheep, chickens, etc. You must have telepathy to discuss things with mega-genius Ronin. Reading his posts without engaging your telepathy is not allowed!
It's common to use Unix to refer to Unix-like operating systems.
The important part to me is that you said the PS4 ran on Unix, which is blatantly untrue. But now I've learned the fault was mine, as I did not properly engage my telepathometer while reading your post.
You realize what you're arguing over, right? Had I said Unix-like, what would have changed? Also I clarified what I meant in a follow up post. Unix-like is a term used by many people. It is used to refer to Linux, BSD, Solaris and operating systems that share a Unix heritage and/or are modelled after Unix concepts. I'm not engaging in some esoteric vodooo wordplay here. It's an accepted and widely used terminology.
It kind of defeats your "Unix is so important to the success of the PS4" argument. Pretty thoroughly, I'd say.
I used Unix as an umbrella term. But since you like to nitpick I'll rephrase my argument.
You're right, Unix-like operating systems are definitely not used in commercial products all arround the world, like the PS4 or WhatsApp servers, or smartphones.If that doesn't qualify as "doing shit" to you I don't know what is.
Please, note the highlighted part, where I emphasise how Unix-like operating systems and C are used to actually make useful things that are used in the real world by lots of people. That was my point.
It's not.
Fair enough, why bring up Mac Classic then? There doesn't seem to be anything special about its use of pascal, it couldn't have been a very useful choice of language. Otherwise modern OS X versions would use it instead of C.
You need a kernel. Just like a car needs a chip to control the engine timings.
Which is used to actually do shit. Like message passing and socket comunication and all the low level things you can't do un userspace. The scheduller works in kernel space and there are differences from using one scheduller or the other.
But it doesn't need to be that kernel, and none of the customers would notice or care if it switched from that kernel to another kernel.
As I pointed out above, there can be differences in speed,or security, the system being demonstrably correct or having support for filesystems that avoid data corruption (like ZFS).
You seem to think of the customers as regular home users that do not care what OS their computer uses as long as they can use Skype, Facebook and Steam. There is a whole range of other people (sysadmins, researchers, etc...) that do not have the same priorities.
Right; because they had no other options. Not because it was good.
It was the best option available. If it was so bad, they would have found a suitable replacement in all those decades instead of keep using C. They could have used pascal or ADA or they could have done like the team that programmed THE...
I can't name-drop THE because I don't know what THE is, assuming it's not just a typo. THE? THE WHAT?
The THE Operating System by none other than Djikstra itself. Written with a modified ALGOL compiler. It didn't catch on.
Oh; right. My opinion's different from yours. I must be a dum-dum idiot. Obviously! The ONLY POSSIBLE EXPLANATION for disagreeing with Ronin is that you're just this side of functionally retarded.
It's funny you should bring that up, because to quote yourself:
I move you would not, unless you were a moron.
Let it be known, if you don't share blakeyrat's idea that operating systems should not be written in C, you are a moron. That is the only possible explanation. I should not have said that you don't know about operating systems, but I don't take it kindly when someone suggests I'm an idiot.
Ignoring for a moment the Unix/Linux thing (because WTF? Saying the PS4 runs on Unix is a blatant lie. Is this the open-source "let's redefine terms at will to confuse the fuck out of people!" thing?)
I don't see what's confussing. I could have said unix-like. Ask every Linux/BSD/Solaris user out there. If you say Unix, that's what they'll understand. But that wasn't the important part, anyway.
For all of those applications, you could swap it out with another kernel tomorrow and not a single person would notice.
That wasn't the point being debated. And you clearly need the kernel to do all that stuff. Try to port an application that makes heavy use of timestamps, or PulseAudio from Linux to BSD. You'll notice a difference (BSD uses the OSS API and timestamps are slower because of the increased precision). Better yet, try using MinGW or GCC for windows...There are surely absolutely no differences between these applictions and their native counterparts right?
Also, how is Pascal better than C? What features help you write an operating system? Why do you think its better than C for the task?
PS4 and WhatsApp use FreeBSD, which is not Linux.
Also it if you want to get technical nothing runs Unix. Unix is a brand and the copyright is held by The Open Group. In order to be "a Unix" your operating system has to undergo a certification process (which has to be paid for). When I say Unix I meant the defnition 90% of the people agree on: unix meaning unix-like. BSD code is derived from an actual unix system, though no one has bothered (or will bother) to pay for a certification. For FOSS projects it's a waste of money.
Right: backwards compatibility.
No, it's been chosen time and time again by experienced programmers to build operating systems from scratch.
I like how you put in the word "modern" there to pre-empt me saying Mac Classic. (PASCAL and assembly. No C.)
And also to prevent you from name dropping THE, yes. And also because you care about "doing shit". MAC Classic belongs in a museum as do Windows 3.1 and Unix System III.
I move you would not, unless you were a moron.
I would. C is fast, battle tested and has useful abstractions. I move you do not understand operating systems.
I like making software that actually does shit.
You're right, Unix is definitely not used in commercial products all arround the world, like the PS4 or WhatsApp servers, or smartphones. Oh, wait... it is. If that doesn't qualify as "doing shit" to you I don't know what is.
I agree that Minix isn't widely used, however. I should have mentioned QNX, which is used for a lot of things.
Microsoft Singularity.
The lowest-level x86 interrupt dispatch code is written in assembly language and C.
Sory, try again ;)
They did. Plus drivers, plus userland utilities. Measured speed only showed a 20% drop, and that's because they also used debugging symbols.
Got a link to that?
We, sane programmers, know how bad is C.
No, we know it to be exactly the opposite. It has survived through 30 years being used as the language for programming operating systems for a reason. In fact, name one modern operating system that isn't programmed in C. No one is going to use a CGI library programmed in C to make a website, but no one is going to use C# for low level programming.
After all, who cares about things like architecture, design patterns, scalability or maintainability.
If You think so, here's an exercise. Try to reimplement the Minix kernel in C#. Or Unix device drivers in Java. Or userland utilities like grep in Haskell. Then measure the speed and see how it scales.
Why negate the error codes?
My guess is he's writing code for Linux which (AFAIK) is the only system where error codes are negative.
I arrived at work today.
I have 75 unread emails (they are sent to my group everytime the user reports a bug). Thankfully none of those were assigned to me...yet. But I've been getting those every 5 minutes. Fucking automated notifications.
Status:
I fought the coroporate bureaucracy.
Corporate bureaucracy won.
I didn't know prolyl hydroxylase domains came in math form…
You are clearly Doing It Wrong, then.
They're an advanced mathematical concept. Anyone that lacks a PHD in math will most certainly not get it.
Status: experiencing a small case of looking at the previous coder's work in disgust. Like Peano said:
Bro, do you even...natural numbers?
Postgres is a decent database In my experience. Over here, I use PGAdmin III as a GUI Tool. Its miles away from something like SQLServer, but I can live with it.
Is that a thing? Because I wouldn't be surprised if that happens.
Status: I hate my job. This application uses VB6 and on top of that, some genuis used 2 folders to place files: "Behaviors" and "Behaviours" (yes, the american and english spellings). What's the difference you ask? No clue.
Too bad I don't have fair use laws in my country. I would have gotten lawyers to defend me whenever I decide to review The Room.
What are we comparing?
How do projects with a large amount of code and contributors deal with bad code.
The BSDs are weird as they started out as a single product (BSD up to 4.4) and forked from there.
I'm not sure what you mean by "weird". Forks happen everyday in the software industry. Those in particular happened 20 years ago.
Do you speak from experience or do you just pull your arguments from thin air?
My personal experiencie is irrelevant as you have no way of confirming if what I'm saying is true or not.
If you have different actual experience managing a team, please tell a story.
We delivered a project on a deadline. Whithout insulting each other. It didn't suck. The end.
You know, you are asserting something, and if you assert something, the burden of proof is on you.
I showed you projects that are actually well managed without needing to shout at their contributors. In other words I presented the evidence you asked for, you just keep moving the goalposts so that it's impossible to have a discussion.
I stand by my point that when a product is being developed healthily, there are two things to care about:1. The product gets developed2. The discussions revolve around code and code-related stuff
That's not what "developed healthily" means. That just means it gets developed which, again, is not very impressive.
Speaking of which, Theo de Raadt is at least as much of a dick as Linus is and no-one cares.
Does he shout at contributors? Because so far I haven't seen him do that. Feel free to point me to the OpenBSD mailing lists though, I might be wrong (which is why I intentionally left OpenBSD out from my list).
Perhaps (SURPRISE!!!!) more than one methodology can be correct?
It is enterily possible. In this particular case, I don't consider Torvald's methodology to be correct.
Yes, Linux Torvalds is a giant asshole. So, if he's so terrible why not fork the Linux Kernel and develop it under some nice polite management?
Because it takes manpower and nobody wants to have 20 versions of the same thing. Forking is a non-option and I don't see why people bring it up. Yes, you can fork the Linux kernel but you're not the original author, so it's unlikely that people (especially non developers that don't work with Torvalds) will get behind your version. Intel supports (as in develops drivers for) Linux because they have a potential customer market there. If very few people are going to use your own version of the kernel then there is not a huge market share there.
As an aside, people have forked it. As I mentioned before, the FSF mantains its own deblobbed fork (Libre Linux or something like that) but they still have to rebase torvalds changes now and then.
Because ultimately, nobody cares that Linux Torvalds is a big mean poopyhead.
Nobody being...? Those who are on the recieving end of his rage usually do. Some developers even left the project.
Does the product work? Does it do what is needed without exploding, burning down your house or killing your dog? That's the only thing people care about.
I'm sory, but I fail to see your argument. You're essentially saying that we shouldn't criticize Torvalds because Linux "works"? So do a lot of other products (in fact nearly all of the products that work), its not really far fetched to ask for a product to actually work the way it was intended.
All the pissing and moaning about Linux Torvalds' management style is just pointless drama.
And all this "you can't even discuss about Torvalds management style" is tiresome. Apparently you are taking it as some sort of personal criticism (which it isn't) or trying to end the discussion by repeating that "it works". We get it, it works. It boots on a variety of hardware and is able to execute applications that work on top of it and consume the services it provides. Like literally every other operating system in the world.
You are better off telling @wtf that has request is pointless. Now he's going to ask you to prove that these projects have been more successful than the kernel and that the difference in success was due to management style.
It looks like I got on a no-win situation. He can allways pull more arguments out of his magic hat if I prove him wrong, though.
Nope. The number of contributors to Python, MySQL, etc is a tiny fraction of the number of Linux kernel contributor. I asked for a project of similar scale of contributors.
I doubt it amounts to a tiny fraction but it looks like you intentionally ignored my other examples. But hey, fine, lets go with FreeBSD which is a complete operating system (as in it has way more LoC than a kernel) and never had this sort of problems.
You don't have any project of a similar scale to prove that other styles of management do better.
And you know this because...? Oh, right you went through all the big software projects in the world and concluded that every leader/BDFL/whatever has to insult everyone all the time.
Far more likely: you only know one example and have to restort to name calling because you're running out of arguments.
Anyway, here are a few examples: Python, FreeBSD, NetBSD, LLVM/Clang, PostgreSQL, MySQL, KDE...
Okay, you're not paying Linus to do his job and yet you critique how he's doing his job.
In keeping with that logic, you're not the person being criticised (Linus) and yet you're criticising my critique of him.
If I were Linus, I'd tell you to go fuck yourself.
Well, that escalated quickly.
The Linux Foundation? They don't seem exactly the most impartial and unbiased source in the matter. And the companies that fund Linux development do so because it's profitable for them on some level. Whether or not they care about Torvalds management they can't do much about it.
...Then you watch teh drama of endless whys unfold and people get offended for being ignored, and Linus made into a passive aggressive dick again.
That's a false dicothomy. Sayig "your code is in poor shape because of X,Y and Z and I will not merge it" its different from letting the project go unmannaged. In any case insulting people takes him as much time and is much less constructive. Alternatively he could just keep ignoring them.
Et voilà, instead of doing actual coding,
Except that his day consists mostly of replying to emails and merging requests, you know, instead of doing actual coding...
he needs to constantly address the fucking drama queens and other easily microaggressable Untermenschen who, unlike him, have lots of time to spare.
That's part of the job. And It's not unpaid labor either. He gets handsomely rewarded for doing what he does.
He has the final say on what goes into his tree and what doesn't.
His tree is still the basis for everything linux related. Very few people use the deblobbed-FSF blessed-GNUKERNEL (and that's just the most popular one).
Kernel development is distributed. You're completely free to adopt anybody else's tree as your definitive kernel source, if it suits your purposes better than Linus's does.
I'm not entirely sure what your point is. I was speaking about Torvalds' attitude, not the usability of linux distros (by the way Hardened Linux still breaks a lot of packages).
I still don't get why people justify Torvalds' attitude. You can tear apart people's code and not integrating it into the source tree without using the mailing list as an outlet for your passive-aggresive tendencies. Its not like he's some loony runt with no power. He's the head-honcho of the company (err...foundation), he has the final say on what goes into the tree and what doesn't.
Now, some people see this diatribe as evidence that Torvalds is a bad-tempered bully. I see a perfectionist who, within his field, doesn’t put up with crap.
Perfectionist? We are talking about the guy who rejected pax's ALSR patch (implementing a crappy variant in its place) and is fine with the way linux's PRNG is implemented... a prefectionist would certainly raise objection to those things.
In Accidental Empires, his classic book on the rise of PCs, Robert X. Cringely described Microsoft’s software management style when Bill Gates was in charge as a system where “Each level, from Gates on down, screams at the next, goading and humiliating them.” Ah, yes, that’s the Microsoft I knew and hated.
Ah, good, Microsoft does it, so its ok I guess (I certainly expected a better argument than an appeal to common practice).
2/10 would not re-read.
The sole exception to the rule . Also if you consider its size, it's pretty small for an operating system + time sincronization daemon + ls replacement + package management tool + container replacement + HTTP server.... (I haven't used linux in a while so I'm not even sure of what subsystem is it currently replacing).
Sure software is bloated. Moreso than in the 80s? I'm not exactly sure. In fact the leading trend in the unix world seems to be to go minimalist (X - wich has frequently been called an operating system on its own - is being replaced by Wayland, Sendmail will eventually reach EOL IIRC, etc).
Tanembaum for example gives other reasons (the computer constantly probes to see if new devices are conected, etc) and gives as an example the fact that his PDP-11 booted faster than a new(ish) machine. Did we really need another "benchmark" for this?
Come over to the dark side, Jarry. We have ZFS, Dtrace, Clang and LLDB in the default install and huge unix beards.
I wouldn't be too surprised if they used ppt to format the input at this state of the proceedings.
Status: I just removed a lot of long-forgotten commented out code from this application. I'm tempted to include something to the effect of "we're not in the fifties, stop doing this" in my commit message.
...and I just found out this table is missing the number 91. Guess that renders it unusable.
This is a pain in the balls to do without a tally table.
Point taken. It isn't strictly necessary to generate it by hand, however.
There are a handful of reasons this might make sense, but they're generally a bit y.
I assumed it was there for some reason (actually that's what I would have done if the application was less broken). There are better ways to doing this, however. TRWTF is not using SQLServer's facilities.
Google "Tally table". It is a very useful table to avoid loops (as mentioned), as loops in sql is DEAD slow. We use it for a variety of cases, i.e. generate a date table on the fly, splitting strings with a defined separator, etc.
I'm not saying it didn't have its uses once. Still, as I supposed the world has come up with better solutions as in ones that save people from having to store - and maintain - an 8 million row table.
A coleague just sent me this to me via skype...
I couldn't believe my eyes, so I checked in case it was a joke. Turns out, that table really is there in the database, it has "Number" as the only row and apparently, the application cannot function without the table...
And no, this is not an applicaton to implement Peano's axioms and see if you can generate all the natural numbers.
You've just replied to a post from one month ago... about reggaeton?
Correct. I couldn't pass on the chance to insult a latin-american musical genre on an english speaking forum.
you are not the only one, that's why the powers that be added this nifty thing:
I hadn't seen that until you pointed it out. Needs moar discokerning, less discovisibility and it would be cool if the background was discolor red, but that last one is just me nitpicking.
Think of it as the dumb child of reggae and rap, made by people who haven't heard either of them. Most of the songs are about getting high, or fucking or getting high while fucking.
Status: this thread's constant title changes confuse me. I need to embrace chaos better.
I'll keep that in mind. Something tells me, I'll be posting there soon.
Status: it's friday, I don't want to work.
ACEPTAR
I'm from a spanish-speaking country, so yes
Also, TRWTF is IE8 or, as it is known in this project "cutting edge".
Status: just found this completely useful message in production code.
And the accompanying source code:
function _DoStuff()
{
alert('ooo');
if(userIsAllowedToDoStuff())
DoStuff();
else
DontDoStuffJustReturn();
}
...you've found errors in your own forum*, which uses a totally different forum software.
(*) - Which you'll absolutely fix someday. Just...probably not now.
Empty collection, nothing to do.
Actually that's a non-existent variable (as oppossed to a variable that exists but is set to null) rather than an empty collection.
PHP, can we come to an agreement? When there's an error, fucking tell me there's an error! Or, if you want to be an ass, stay silent. Just be fucking consistent!
PHP is consistent about ignoring things like that. It used to* silently cast false when used as an array index (as in foo[false] is equal to foo[0]). Very useful if you want your program to never crash, even if it has errors that should make the program crash.
(*) Read: at least until 5.4. It might have gotten fixed.
Hey, if a teacher got away with* showing her class ABCs of Death , I think you're safe.
(*) She didn't actually get away with it.
Ah, do you remember the good old days when Microsoft made a Unix clone?
Yeah, me neither, because I wasn't born. But I would have paid to see that. I wonder what Torvalds' reaction to this is.
If you consume English for pleasure as well...
Is it enjoyable if you haven't read anything about the Arthurian myths? I was looking for a place to start...
Unless you're willing to pay someone to pretend to be me while also pretending to be working on something important it'll have to wait until the weekend. You could wear a wig and pretend to like obscure metal bands I suppose.
I will make sure to implement the feature that prevents your user from posting, though.