This wasn't a realtime system, and they weren't just doing atomic updates to a single array. There were transactions that involved changes to multiple data structures, and there was no synchronization of any kind. There were several long-standing bugs caused by reader threads getting their data while another thread was halfway through an update.
Sorry for not including all this detail in my original post.
I would like to see your fancy C++ with templates stuff compile onto some of the proprietary toolkits I have seen for small ARM and gate array systems. Writing code that uses a number of fixed sized simple data structures all written in C makes it very easy to port it to embedded systems. The moment you use something that seems as innocuous as C++ exceptions...
This was not (and never was going to be) an application for an embedded or real-time system. I'm not sure what I said that left everyone with the impression that I'm bashing real-time or embedded development practices. I know (more now than I did before) that there are reasons for doing such things in those environments, but none of those applied in this situation.
My point wasn't that they should switch to C++ or something else. Personally, I don't like fancy C++ template stuff; I'd rather just stick with ANSI C. What I was trying (but apparently failing) to do was make the point that needless memory bloat isn't some curse that only applies to OO development, as was suggested in the post I initially replied to.
No, what I failed to do is adequately convey that these guys didn't know how to work with anything that wasn't a fixed-size array. Worried about non-deterministic heap allocation, were they? That must be why there were dozens of threads updating and reading from these massive global arrays without using any kind of synchronization mechanism.
And this is often the curse of object-oriented programming. Objects carries more data than necessary for many of the uses of the object. Only a few cases exists where all the object data is used.
That sounds like bad software design that isn't specific to OO programming. People are perfectly capable of wasting memory space and CPU cycles in any programming style.
For example, I worked with "senior" (~15 years on the job) C programmers who thought it was a good idea to use fixed-size global static arrays for everything. They also couldn't grasp why their O(N^2) algorithm--which was SO fast on a small test data set--ran so slowly when used on real-world data with thousands of items.
This is going to require the majority of backend developers choosing one API/toolkit/etc to add features to, test for bugs and release on a predictable schedule. Yes, Gnome or KDE may whither or die, too bad. If we do not these steps now, Linux will continue receiving ports of projects developed on other platforms and not real development time.
I wish I could think of something really clever and snarky to say about maturity == conformity, but I can't.
Anyway, this sort of universal coordination is probably never going to happen, because you're dealing with tens or hundreds of thousands of developers that are going to do what they think is best for their particular library/application/framework/distro/etc., and not what some external collective tells them is best. Most of them do what they do solely because it interests them, and many probably don't give a damn whether Linux "succeeds on the desktop" or not.
GTK isn't as nice as everyone makes it out to be. Basically what everyone has been doing is talking red hat, and suse and making their product work on that. You can't "standardize" Linux because the 700 or so distros can't agree.
The first problem was this weird stigma attached to anyone who was interested in the industrial technology or shop courses. They certainly were viewed in a negative light by most of the administration.
Things were the same at my high school in rural North Carolina. That same attitude also applied to anybody that didn't want to go to college right out of high school--the principal and many teachers were absolutely horrified when I decided to join the Navy. They even went so far as to tell me that it would really "endanger my future" if I couldn't cut it in the military and had to come back home and try to get into school.
Amazingly, after being in the Navy for a while, and working other jobs for a few more years, I had no trouble at all getting back into school to do my 4-year, masters, and then PhD.
The next problem was that they scheduled shop courses so they were only offered in periods that would conflict with the upper level academic courses. You could not take honors English and drafting, for instance. There was no way to schedule electronics and AP physics ( which ironically cover much the same materials ).
I was fortunate that my dad had his own shop, with plenty of hands-on stuff for me to learn about, so I didn't even check to see if I could take any of the vocational courses. I wouldn't be surprised to find out that they had time conflicts with the academic classes, though. I'm sure the justification would have been that the people "smart enough" to handle the academic coursework didn't need the classes meant for "the dumb kids" (it just would have been phrased in more acceptable terms).
The linked report was less than useful, since the reporting was done in relative terms - e.g. "increased by two thirds". Okay, but two thirds over what? There are generally specific concentrations above which a chemical is identified as harmful by the government (or by a watchdog agency, if you don't trust the government). Why not say "BPA levels increase from the background level of xxxxxxx to a ppm/ppb of yyyyyy in individuals who drank from these bottles for one week"?
...And frankly, as someone with a science background, this sort of thing makes me LESS likely to be concerned. When I see fuzzy reporting, my first though is it was done intentionally because they can't support their case using objective numbers. I've seen this happen in honest-to-goodness scientific papers way too often to not notice.
It makes me skeptical as well, but I think there are at least two other reasons things get reported this way:
Reporters are afraid that if they mention more than one number, Joe Sixpack's eyes will glaze over and he'll think some gawl-durn science geek is trying to talk down to him, and he's less likely to read news from this source again.
The reporters themselves have such a poor grasp of science and math that they don't know that anything matters other than the relative increase.
The questions have to be so easy that the owner will -never- forget them...
Unless, of course, they force you to use security questions that (1) you don't have an answer to, or (2) you have an answer that doesn't satisfy their assumptions about possible answers; then you have to make up an answer on the spot that you won't remember a week later.
(1) "Who is your favorite author?" I have a handful of authors I like, but I don't go to the trouble of choosing a "favorite" one, so I had to pick one at random and forgot to write it down, so I couldn't answer the question a year later.
(2) What is your maternal grandmother's first name? "Ora" --> "Sorry, your answer is too short." WTF? IT'S HER NAME!
By now, most places seem to have figured out it's not a good idea to make you choose from a narrow set of predefined questions, but that's been replaced by making me choose a fucking image and make up some bullshit text and passkey to go with it on the spot.
The biggest "zone breakers" are interruptions of any kind or duration. Having to stop for even one minute to take a call or acknowledge a communication can break your flow completely and it can take time to get back into gear. I think there have even been studies showing it takes some 15 minutes average to get back.
That's one reason I hate working in a busy office environment: most workplaces seem to encourage people to interrupt each other. There's always a meeting, or a phone call, somebody wanting your attention, or some "emergency" knocking you out of a state in which you can make any progress.
It seems to me that it's a lot easier to get difficult things done at home where I can unplug the phone and internet connection and just work. It's better for others, too--if a good random idea pops into my head, it can sit in my outgoing mailbox queue instead of egging me on to walk over to someone's office/cubicle and interrupting their work.
I think that's mostly because it's got the name of a guy known for shameless self-aggrandizing promotion attached to it. Trying to generate buzz via press releases and media events doesn't help, either (except in the Mathematica fanboy community).
And that's what I find very interesting: WolframAlpha gets to watch the calculations be performed by bright (and not so bright) people all over the world and see what ideas people are tinkering with. They could flag certain equations on the cutting edge and so on...
I'm not working on the cutting edge of anything, but what little bit I know about science and math leads me to think that progress is very rarely about coming up with new equations. Even if it was, and I was working anywhere near cutting edge science, I certainly wouldn't be typing my work into W/A so that Wolfram can run off and patent and/or scoop my discovery.
I don't think I've seen many instances of people using memcpy to copy structures; it generally seems to get used for copying contiguous blocks of data between buffers, and not much else. Maybe I haven't worked with enough suspender-wearing graybeards, though.
Now here's the choice, you can get a professional masters (online and/or course work only). This pretty much shuts the door to going on academically.
I can only speak for my personal experience, but working on my online professional masters helped me get into the PhD program at the same school. I came from a 4-year school that ranked waaay down there near the bottom, and I'm not sure that I would have been accepted without the higher-ranked graduate school having a year of decent graduate classwork at their institution to include in the evaluation.
I will however agree that a "real" (i.e., you wrote a thesis) masters is probably going to be viewed by technical recruiters as a lot more solid qualification than a professional masters.
Going back to school, you see exactly how much BS you have to put up with, and how meaningless your studies are.
Yeah, that actually makes it a tiny bit more difficult going back to school: it's a lot easier to spot assignments that are make-work and/or almost worthless as a means of learning. Sometimes I find it hard to motivate myself through pointless exercises.
On the other hand, if you don't care too much about your GPA, having a BS detector honed by years of "ZOMG THIS MUST BE DONE ASAP" fake business emergencies makes it easier to tell which assignments and classes don't deserve your full attention.;)
On the one hand, it will never again be as easy to learn as it is now. The older you get and the more time passes between having been in school and then doing it again, the harder it will be. Not only to find the motivation (unless you really do like school), but also to get your brain into learning mode again.
Well there's your problem--you're not supposed to stop learning just because you stopped going to school.;)
I worked for about 15 years before starting on my 4-year degree full-time. So far (at the end of my second year of grad school) I've found academic life easier than having a job. Maybe it's because I developed some time and priority management skills while I was working. Maybe it's because I was frequently in "learning mode" when I was working.
Whatever the reason, I haven't found it significantly harder to learn at age 40 than it was at age 20.
Open source is about the ability of the community to freely access and manipulate, as long as the changes are documented. Regulation is about the control of access and manipulation.
Those don't seem mutually exclusive to me at all. Most successful open projects don't just let anybody come in and touch their source--they're free to make a branch, but the "official" source tree is guarded by people that care about its quality and reputation.
Maybe the Scientologists will be able to write the text book on psychology?
Hey, why not...after all, that "you have to teach both sides of the story" fallacy seems to be working out pretty well for the creationists in a few places.
You can license the developers, but when management pressures them to cut corners you still have shoddy software.
I suppose that all depends on what the effect of losing one's software development license is. If a doctor, lawyer or engineer cuts corners and loses their certified status because of it, they might find themselves unable to get another job with equal pay, status & benefits.
If the penalty for cutting corners and losing your license is high enough, you'd eventually develop a culture where pushing a developer to knowingly do bad work is just as unacceptable as it is for any other certified profession.
Of course, to get there, you have to convince or coerce most of the programmers to submit to a system under which they need a license to get certain classes of development jobs. That legislation gets a goodluckwiththat tag.
Thanks for trying, ion.simon.c. I didn't know it was this big of a sin to accidentally offend realtime developers on Slashdot.
This wasn't a realtime system, and they weren't just doing atomic updates to a single array. There were transactions that involved changes to multiple data structures, and there was no synchronization of any kind. There were several long-standing bugs caused by reader threads getting their data while another thread was halfway through an update.
Sorry for not including all this detail in my original post.
I would like to see your fancy C++ with templates stuff compile onto some of the proprietary toolkits I have seen for small ARM and gate array systems. Writing code that uses a number of fixed sized simple data structures all written in C makes it very easy to port it to embedded systems. The moment you use something that seems as innocuous as C++ exceptions...
This was not (and never was going to be) an application for an embedded or real-time system. I'm not sure what I said that left everyone with the impression that I'm bashing real-time or embedded development practices. I know (more now than I did before) that there are reasons for doing such things in those environments, but none of those applied in this situation.
My point wasn't that they should switch to C++ or something else. Personally, I don't like fancy C++ template stuff; I'd rather just stick with ANSI C. What I was trying (but apparently failing) to do was make the point that needless memory bloat isn't some curse that only applies to OO development, as was suggested in the post I initially replied to.
Best anti-pattern name ever! :)
No, what I failed to do is adequately convey that these guys didn't know how to work with anything that wasn't a fixed-size array. Worried about non-deterministic heap allocation, were they? That must be why there were dozens of threads updating and reading from these massive global arrays without using any kind of synchronization mechanism.
And this is often the curse of object-oriented programming. Objects carries more data than necessary for many of the uses of the object. Only a few cases exists where all the object data is used.
That sounds like bad software design that isn't specific to OO programming. People are perfectly capable of wasting memory space and CPU cycles in any programming style.
For example, I worked with "senior" (~15 years on the job) C programmers who thought it was a good idea to use fixed-size global static arrays for everything. They also couldn't grasp why their O(N^2) algorithm--which was SO fast on a small test data set--ran so slowly when used on real-world data with thousands of items.
I must be really behind the times, because I thought X was under the hood of my Ubuntu desktops. What took its place?
This is going to require the majority of backend developers choosing one API/toolkit/etc to add features to, test for bugs and release on a predictable schedule. Yes, Gnome or KDE may whither or die, too bad. If we do not these steps now, Linux will continue receiving ports of projects developed on other platforms and not real development time.
I wish I could think of something really clever and snarky to say about maturity == conformity, but I can't.
Anyway, this sort of universal coordination is probably never going to happen, because you're dealing with tens or hundreds of thousands of developers that are going to do what they think is best for their particular library/application/framework/distro/etc., and not what some external collective tells them is best. Most of them do what they do solely because it interests them, and many probably don't give a damn whether Linux "succeeds on the desktop" or not.
GTK isn't as nice as everyone makes it out to be. Basically what everyone has been doing is talking red hat, and suse and making their product work on that. You can't "standardize" Linux because the 700 or so distros can't agree.
Fixed that for you.
So the Oracle touch is already taking effect.
Fork you, Oracle!
The first problem was this weird stigma attached to anyone who was interested in the industrial technology or shop courses. They certainly were viewed in a negative light by most of the administration.
Things were the same at my high school in rural North Carolina. That same attitude also applied to anybody that didn't want to go to college right out of high school--the principal and many teachers were absolutely horrified when I decided to join the Navy. They even went so far as to tell me that it would really "endanger my future" if I couldn't cut it in the military and had to come back home and try to get into school.
Amazingly, after being in the Navy for a while, and working other jobs for a few more years, I had no trouble at all getting back into school to do my 4-year, masters, and then PhD.
The next problem was that they scheduled shop courses so they were only offered in periods that would conflict with the upper level academic courses. You could not take honors English and drafting, for instance. There was no way to schedule electronics and AP physics ( which ironically cover much the same materials ).
I was fortunate that my dad had his own shop, with plenty of hands-on stuff for me to learn about, so I didn't even check to see if I could take any of the vocational courses. I wouldn't be surprised to find out that they had time conflicts with the academic classes, though. I'm sure the justification would have been that the people "smart enough" to handle the academic coursework didn't need the classes meant for "the dumb kids" (it just would have been phrased in more acceptable terms).
The linked report was less than useful, since the reporting was done in relative terms - e.g. "increased by two thirds". Okay, but two thirds over what? There are generally specific concentrations above which a chemical is identified as harmful by the government (or by a watchdog agency, if you don't trust the government). Why not say "BPA levels increase from the background level of xxxxxxx to a ppm/ppb of yyyyyy in individuals who drank from these bottles for one week"?
...And frankly, as someone with a science background, this sort of thing makes me LESS likely to be concerned. When I see fuzzy reporting, my first though is it was done intentionally because they can't support their case using objective numbers. I've seen this happen in honest-to-goodness scientific papers way too often to not notice.
It makes me skeptical as well, but I think there are at least two other reasons things get reported this way:
The questions have to be so easy that the owner will -never- forget them...
Unless, of course, they force you to use security questions that (1) you don't have an answer to, or (2) you have an answer that doesn't satisfy their assumptions about possible answers; then you have to make up an answer on the spot that you won't remember a week later.
(1) "Who is your favorite author?" I have a handful of authors I like, but I don't go to the trouble of choosing a "favorite" one, so I had to pick one at random and forgot to write it down, so I couldn't answer the question a year later.
(2) What is your maternal grandmother's first name? "Ora" --> "Sorry, your answer is too short." WTF? IT'S HER NAME!
By now, most places seem to have figured out it's not a good idea to make you choose from a narrow set of predefined questions, but that's been replaced by making me choose a fucking image and make up some bullshit text and passkey to go with it on the spot.
Maybe, but it's not sure yet.
If somebody can do their best work at the drop of a hat, no matter how they feel, I'd venture a guess that their best isn't very good.
The biggest "zone breakers" are interruptions of any kind or duration. Having to stop for even one minute to take a call or acknowledge a communication can break your flow completely and it can take time to get back into gear. I think there have even been studies showing it takes some 15 minutes average to get back.
That's one reason I hate working in a busy office environment: most workplaces seem to encourage people to interrupt each other. There's always a meeting, or a phone call, somebody wanting your attention, or some "emergency" knocking you out of a state in which you can make any progress.
It seems to me that it's a lot easier to get difficult things done at home where I can unplug the phone and internet connection and just work. It's better for others, too--if a good random idea pops into my head, it can sit in my outgoing mailbox queue instead of egging me on to walk over to someone's office/cubicle and interrupting their work.
I think that's mostly because it's got the name of a guy known for shameless self-aggrandizing promotion attached to it. Trying to generate buzz via press releases and media events doesn't help, either (except in the Mathematica fanboy community).
And that's what I find very interesting: WolframAlpha gets to watch the calculations be performed by bright (and not so bright) people all over the world and see what ideas people are tinkering with. They could flag certain equations on the cutting edge and so on...
I'm not working on the cutting edge of anything, but what little bit I know about science and math leads me to think that progress is very rarely about coming up with new equations. Even if it was, and I was working anywhere near cutting edge science, I certainly wouldn't be typing my work into W/A so that Wolfram can run off and patent and/or scoop my discovery.
I don't think I've seen many instances of people using memcpy to copy structures; it generally seems to get used for copying contiguous blocks of data between buffers, and not much else. Maybe I haven't worked with enough suspender-wearing graybeards, though.
Now here's the choice, you can get a professional masters (online and/or course work only). This pretty much shuts the door to going on academically.
I can only speak for my personal experience, but working on my online professional masters helped me get into the PhD program at the same school. I came from a 4-year school that ranked waaay down there near the bottom, and I'm not sure that I would have been accepted without the higher-ranked graduate school having a year of decent graduate classwork at their institution to include in the evaluation.
I will however agree that a "real" (i.e., you wrote a thesis) masters is probably going to be viewed by technical recruiters as a lot more solid qualification than a professional masters.
Going back to school, you see exactly how much BS you have to put up with, and how meaningless your studies are.
Yeah, that actually makes it a tiny bit more difficult going back to school: it's a lot easier to spot assignments that are make-work and/or almost worthless as a means of learning. Sometimes I find it hard to motivate myself through pointless exercises.
On the other hand, if you don't care too much about your GPA, having a BS detector honed by years of "ZOMG THIS MUST BE DONE ASAP" fake business emergencies makes it easier to tell which assignments and classes don't deserve your full attention. ;)
If you don't have the money, one way to get the university to pay for the MS is to apply for a [funded] PhD and then quit once you get the masters.
That's a really shitty way to get somebody to pay for your MS.
On the one hand, it will never again be as easy to learn as it is now. The older you get and the more time passes between having been in school and then doing it again, the harder it will be. Not only to find the motivation (unless you really do like school), but also to get your brain into learning mode again.
Well there's your problem--you're not supposed to stop learning just because you stopped going to school. ;)
I worked for about 15 years before starting on my 4-year degree full-time. So far (at the end of my second year of grad school) I've found academic life easier than having a job. Maybe it's because I developed some time and priority management skills while I was working. Maybe it's because I was frequently in "learning mode" when I was working.
Whatever the reason, I haven't found it significantly harder to learn at age 40 than it was at age 20.
Open source is about the ability of the community to freely access and manipulate, as long as the changes are documented. Regulation is about the control of access and manipulation.
Those don't seem mutually exclusive to me at all. Most successful open projects don't just let anybody come in and touch their source--they're free to make a branch, but the "official" source tree is guarded by people that care about its quality and reputation.
Maybe the Scientologists will be able to write the text book on psychology?
Hey, why not...after all, that "you have to teach both sides of the story" fallacy seems to be working out pretty well for the creationists in a few places.
You can license the developers, but when management pressures them to cut corners you still have shoddy software.
I suppose that all depends on what the effect of losing one's software development license is. If a doctor, lawyer or engineer cuts corners and loses their certified status because of it, they might find themselves unable to get another job with equal pay, status & benefits.
If the penalty for cutting corners and losing your license is high enough, you'd eventually develop a culture where pushing a developer to knowingly do bad work is just as unacceptable as it is for any other certified profession.
Of course, to get there, you have to convince or coerce most of the programmers to submit to a system under which they need a license to get certain classes of development jobs. That legislation gets a goodluckwiththat tag.