Over the last 5-8 years, Bill has pretty clearly been stepping back and reducing his role. It's a very hard problem, we saw what happened to Apple when Steve wasn't around. The hardest thing as a parent is letting your kids fail at something, but that's often the only way they really learn. The emails seems somewhat realistic to me. Then as a user and developer that has a windows laptop at work and I have to use it from time to time, a lot of the stuff they've done simply doesn't make sense, I can't imagine that it was Bill's vision.
What's clear to me is 2 things, MS has built up a huge empire that they really cannot manage effectively and it's looking more and more to me like Ballmer isn't the guy to do it. He's just too close to things, too many battles fought, won and lost to be objective and he's simply not a technologist.
My prediction is one of two things will happen, they'll stay their course and continue to lose and erode their brand and reputation (you'd be shocked how quickly the tide can turn in this world, I'd say when folks like my mom are considering macbooks instead of thinkpads and inspirons that it's a good sign it's already happening) or in the next maybe 3-5 years they'll bring in an outsider to run the show and he'll start to split it up in to successful smaller companies (3: media and entertainment, office and sql, and platforms and tools and get rid of MSN and MSNBC and all the bit parts)
You can't count them out, but it's really hard to see how they're doing things well right now. Sure they make tons of money but all the non-Macs bought come with Vista. What's truly amazing to me isn't Linux which I'm near and dear to but how common Mac Books have actually become and how they are becoming a serious option to not just home users but business users too.
I've heard these arguments over and over, saying you're more productive doesn't really mean much.
It means quite a bit to me, although I'll grant it's difficult to put an objective number on. I can agree with that. There is something to comfort. It'd be nice to measure the productivity and correctness though, otherwise it's just kind of a talking point that sounds good.
what it really means is you know python better than you know java
Well, as I said I've been writing Java for more than 10 years and Python less than 2. I used to be in the static typing camp, figuring that mass chaos would ensue if you didn't religiously inform the compiler of the type of every variable. In practice, I've found there are many benefits and few costs. I apologize if what I said was at all offensive, as I read it again I probably should have waited on the coffee to kick in. I was meaning "comfort."
The differences between the Python code and Java code sample are really pretty small, tooling will fix most of it, in Idea or Eclipse it will auto populate most of those key strokes for you
The problem isn't the keystrokes when first typing it. The problem is the mental shift between levels of abstraction, which happens both when you initially write it and when you subsequently read it. It lumps together code that describes the essential purpose of the algorithm with code that only exists because the language isn't sufficiently expressive. Like declaring the output variable? I really don't see much difference in this case. I'm not discounting it, I guess I sort of ignore that part and just see code iterating through a list and creating a new list with the matching criteria. I've been using both python and java for a long time and I almost can't see a difference between the two examples, my brain kind of keys off of a couple parts and they both read just about the same.
Where it seems to matter if you ask me is in C and C++ where there are pages and pages of definitions included and boiler plate included just to use libraries, compare a C GTK+ pop-up dialog to a Java swing popup dialog and there is a verbosity argument.
Right, we're just drawing the line in different places. Personally I don't like loops in general; I find most of the time they're a low-level distraction from what I really want to do, and a frequent source of silly bugs (off by 1 in the indices, using the wrong local variable inside the loop, etc). I'm even slightly annoyed by the "for e in employees" implicit loop in the Python list comprehension. I'd prefer something like a "select" method like the C# code above. (Although that would require improving Python's lambda syntax, which Guido doesn't want to do. But I digress). Maybe there is something in this. I understand the different types of defects in static vs. dynamic systems and the costs associated with fixing them; in particular you might have trouble just making the program compile to see it fail where as seeing it fail and then seeing that you're treating a "student" object like a "teacher" object (or something of that nature) is usually a fairly simple fix. It seems like a difference in terms of explicitness, there are engineers that like things very well defined and spelled out and those that like it vague, just as a matter of taste.
What's funny is that people will argue that there is a cost, I don't think there is a measurable one, not with the keystroke typing. I also suggest that with modern tooling, it'll more than eat that cost up by itself, if that cost actually exists. Eclipse ADT will auto populate the "END IF;" and "THEN" when you type in "IF" if you desire.
I think there is often a radical difference in cost when it comes to reading and maintaining the code though, those simple mistakes can be costly. Ada has proven itself over and over, if you care about correctness and reliability as well as performance, it should be in the conversation and there are wonderful free tools available, next time you're writing a C or C++ program from scratch, you should consider Ada, there are whole classes of problem that large C and C++ apps tend to develop that aren't there in Ada. A more notable issue might be that developers still approach software as a disposable commodity, they simply aren't used to maintaining code or producing it for the next guy to maintain.
I challenge comparisons like these. I've heard these arguments over and over, saying you're more productive doesn't really mean much. There isn't a metric that measures it and what it really means is you know python better than you know java (or whatever) and the parts of the program you don't understand that cause the typing errors are usually easy to fix.
The differences between the Python code and Java code sample are really pretty small, tooling will fix most of it, in Idea or Eclipse it will auto populate most of those key strokes for you and aside from keystrokes or lines what is your metric for this? At then end of it all, what really matters is which is easier to read at a glance and personally I can't find a difference. One is one line and one is 3 or 4 lines, I find myself doing the same mental parsing regardless of the line count. Does the code "verbosity" really matter here? Where it seems to matter if you ask me is in C and C++ where there are pages and pages of definitions included and boiler plate included just to use libraries, compare a C GTK+ pop-up dialog to a Java swing popup dialog and there is a verbosity argument.
There is also the logical hole that line counts affect readability and maintainability of program to begin with, there is a definite argument that a really compact and concise piece of code is at times even more difficult to maintain than a more verbose piece of code, just about any assembly language program is an example. With your code, it starts to look a little bit more crummy in python as soon as you start to add other criteria.
Should have when the Guile stuff started to blow up.
I'm not sure the right way to say this without sounding offensive, I use and love emacs, but some newer blood in the leadership might be the right thing. There are all sorts of things it can do better, faster, differently.
Does this seem like a really obvious extension to switches? Why not power down ports and then power them on via 802.1x requests. Kind of hits two birds with one stone.
I'll take some heat for this, but I lump Apple and Google together and I see their business model as access to data. That's essentially what Google provides, access to data, anywhere in the world. Apple is basically thumping the competition for the same reason, sure iPods are nice but the real service isn't "music" it's access to your media, any where, and you can take it with you. DRM isn't really their business so much as it's an evil you have to put up with to do business with the major labels. Why is the iPhone SDK basically tools to help you write web apps? Web apps that will work with essentially any browser... Same reason, actually running apps on the iphone is sort of the old model.
By comparison, MS tries to sort of control that. Zune they see as music, not data and they don't see their business as access to data, they want to provide mechanisms to do that and control every part of the process, access to data is secondary and sort of a side effect. Google supports mozilla because it's a primary conduit to your data and opens the playing field, their business is "access to data" not browsers and certainly not controlling it. Same with android, they want to make sure that phones have good and open mechanisms to take part in accessing data so they have invested and provided mechanisms for people to build that. MS still wants to control all of those things. Likewise, google uses open development tools for the same reasons, their business is access and data not "windows apps." Or "windows server apps" or even "linux server apps" Linux happens to get the job done and nobody can control what they do with it to get the job done.
MS's biggest threat is openness and people really understanding what it means to control their own data and have access to it. The paradigm is shifting, just look at the open document stuff, what will MS do when a lot of customers just expect to see their documents on their razr phones rather than buying a bulky POS windows mobile device? Apple and Google are playing in that world.
Those are kind of the basic skills we look to leadership for. You have to do all those things to be average. Some of those things you need to be able to do even if you don't "lead," those are just good life skills regardless of your vocation.
Dealing with crisis, performance under pressure, maintaining bearing, providing vision, delegation and multiple task management and just plain execution are what start to separate the great leaders from the average. The whole idea is really silly actually, maybe tomorrow's gamers might be training for leadership but right now, the most sophisticated games there are really don't push you that much, not anything like just rudimentary project planning or logistics in a business.
I've done my fair share of gaming and for what it's worth, I can't ever recall ever feeling real stress. Work at a startup and deal with a tight schedule and a couple support issues and it puts the best online games to shame and that's nothing compared to actually leading, not like a CEO or what the military expects. This idea might feel good or might sound neat and justify our gaming addictions but it's silly. You play games to escape from the stresses of life and those are usually substantially less than the stresses of actual leadership.
Mark maintains GCC. He's basically the project leader.
I read the GCC mailing list. I haven't heard or seen any grumbling. Nothing I'd call significant. The most grumbling I've read is on how to deal with the branching and labeling/versioning which always seems to be a GCC issue; it's a major release number with no new features, when major release number imply new features... Read this. There are closed branches of GCC, ones that vendors may add custom support for their hardware to, stuff like that, those people will have to change things. There was some discussion about how you license patches, purely an academic discussion on licensing though. Like I said, I haven't seen any grumbling and it simply doesn't affect end-users.
I also read LKML and I don't think that that is terribly significant, Linus brings up some points that seem to go un-addressed elsewhere. There is also some disagreement about how something like Linux goes through the process of being recopyrighted, you see there are people that are dead that have contributed large amounts of code. With Linux in particular, nobody was requested to re-assign their copyright to anyone like they are with GCC and a lot GNU projects. Really the only serious disagreement I've seen anywhere is from companies that exploit free software and are worried that they might have to share their substandard source code or rewrite the free components that make up the heart of their applications. Some of the hacks from the magazines are trying to stir the pot a little but that's it. It's unfortunate, some of the folks that really benefit the most from free software, folks that have products that exist because free software makes it possible for them to afford to make software, are now trying to attack and undermine the very software they depend upon.
It's a pretty short read, fairly easy to comprehend. It's worth a try but if dynamic linking is too much... I don't know how successful you'll be.
If you're serious, ask a lawyer or two about it. Most likely, if the BSD vs. Linux thing is so seamless then you're not doing any real kernel mods, you're just running code on top of a POSIX like OS. So you're free to license it as you wish, your use of 3rd party libraries is the only thing to be concerned with. If you're going to change the kernel, there are some other, very important, factors to consider also.
So the relatively low number of well written articles compared to the total is that sign of this failure?
Don't get me wrong but that really misses the point. Take, for example, Voltron. I can plug that into Britannica and Wikipedia. Britannica doesn't know who or what Voltron is. Wikipedia has a fairly detailed explanation. Accurate? Well written? I'd be shocked if that article fell in to the 2000 or so "well written" articles. I doubt it's verifiable in any credible way. Also, I don't see Britannica ever having an article that talks about Voltron. It's not a scholarly article because it's not a scholarly subject. That doesn't change the fact that when I couldn't remember the names of the pilots of the lions and for whatever reason I wanted to remember them, wikipedia provided an answer and a whole lot more where most other sources wouldn't provide anything. That's the beauty of it.
I don't know that you should read a candidates wikipedia article and decide off of that alone if you will vote for them. I don't know any single sources that you should use for that. I also don't know that I'd read about global warming on wikipedia and use it as an exclusive guide to your own beliefs on it; again, there is no good single source on such an important subject. However if you do want to look up who's driving for each F1 team next season or Voltron, or what looks like well over a million other articles, wikipedia is probably ok. The alternative is either nothing or you scour the web for some hobbiest that cares enough about Voltron or whatever to put up a webpage of his own and provide a detailed document on it.
I'm not an Apple user. And I'm not attacking you. I am, however, affiliated with the security business and it's bad for everybody when half truths and lies are propagated. If you have an example of Apple being difficult to work with then please bring it up. The example you did bring up shows security folks being difficult work work with not just apple but everybody. I really don't see what you were trying to demonstrate or show with that CERT bug link, that Apple found and fixed a bug in their software and then reported it like a responsible company? Or were you trying to suggest that they stole credit from "security researchers" that still haven't disclosed anything, including any documentation of a threat from Apple?
And I think you're mistaken if you believe that marketshare directly reflects the security of a platform. The number of users has little to do with the number of exploitable bugs in it or architectural flaws. More existing bugs might be found in more popular platforms but that doesn't prove that more exist that just aren't found in other platforms. Windows is less secure because it simply wasn't a design factor when most of it was built, that and MS went out of their way to do things differently than how existing systems like UNIX did.
I think the suggestion that the vulnerability is the same one without any validation from Secureworks is slanderous towards Apple. Perhaps you didn't paint them badly but Secureworks most certainly tried to. Any hole or bug apple ever fixes in the Airport code now could be "the bug secureworks 'exploited'" To be honest, I'm not sure where the bad feelings from the security researchers side come from, I really don't see that Apple actually did anything wrong. Now if Apple was upset, I could understand that, secureworks claimed to be threatened with lawsuits and various other things that never actually happened. These are facts, I'm not making this up. David Maynor has an axe to grind with Apple and I don't know that Apple has wronged him or the company he no longer works for in any way.
Then to make matters worse, rather than dealing with truth and facts, they through the smugness of Apple's users out there, like that has anything to do with anything. I suppose that somehow makes the platform less secure, huh?
The reality of the situation is that neither market share, nor the attitudes of the user base of a platform contribute to its security.
Yeah but you see, that's against entirely different software and hardware than what secureworks supposedly demonstrated.
I really don't see how you can paint apple in to a bad place with this, secureworks created a lot of hype while disclosing nothing to anyone, Apple took the initiative and at their own expense researched the issue and fixed potential problems they found, none of which has a known exploit. None of this validates what secureworks did, it is possible it's the bug they supposedly found but it's also possible they faked the whole thing.
Did you draw any conclusions based upon it being PG-13 rather than R, PG or G? I think it is a somewhat curious example you chose.
The MPAA isn't run by the government. It's a volunteer thing. You don't have to rate a movie. Should a movie recieve certain ratings I think there are laws in some places about letting minors in without a parent but that's about the extent of it. The feds don't rate the movies. It happens to be a cartel that is pretty powerful and you'll never get your non-rated movie shown in their theaters but that's a different issue. Basically, the movie industry saw what was coming and took care of their shit, like it or not, most movies get some kind of rating. the system isn't perfect and there will always be debates about movies getting soft-Rs and hard PG-13s and NC-17s for raunchy jokes but at least they are making an effort and theaters and rental places are supposed to help enforce the age issues.
Bills and things have come up multiple times in multiple areas. It's very clear that some percentage of the populus cares enough about it that various governments are starting to take things in to consideration. Sony, MS, and Nintendo should own up to this before they are told how to do it. Rate games, provide v-chip like mechanisms in the hardware to let parents define what kinds of things are allowed, done. Some of the other side effects are very logical, minors won't be allowed to buy some games anymore. That's not really a problem since they aren't the target audience anyways. You want your kid to play GTA4, then go buy the "rated R game" and give it to him/her. What's the big deal?
The worst thing would be letting the US government decide how this shit should work. Sony has already done the work, you can tell a PS2 not to play certain rated DVD movies without a code.
Really this has a lot more to say about the overall responsibility of the game publishers. Look at the Hot Coffee thing, someone, somewhere did work, real work to make it and put it in the game. It wasn't an accident. It was supposed to be a joke or gag for testers or something and it backfired. Their audience is bigger and they need to take some responisbility that comes with the hundreds of millions of dollars (billions?) that the publishing houses are making.
It's nice. Ruby is nice too, I like it. I guess there are 3 things that stand out to me, Rails is still a toy compared to j2ee, I've been doing "opensource" professionally for nearly 10 years and good enough usually isn't good enough. There seems to be a lot of consultant types pushing the rails way and it's because they've never finished anything.
Second, I'm skeptical of religion in technology. Ruby and rails has a ton of religion going on. Enough that it's not just advocacy, it's crossing over in to that place where there are a lot of believers that it's a silver bullet. It is in a consulting type way but nobody has ever maintained a rails app.
Third, and this might be a couple of issues. Engineering died in the last decade (or maybe it's just in a coma) and things like agile (which is really just a formal declaration that engineering is hard so we're not going to do it) have really taken hold. I read and worked through the Agile Web with Rails book and in the "getting serious" section they spend a nice little couple of paragraphs explaining how if you hit the db every page and share nothing then you scale because you can put dbs in clusters and they are fast; it's really kind of laughable if you've ever worked on that problem there is a difference between running on a cluster and requiring a cluster to run. Never mind the fact that j2ee exists to really kind of provide tools to solving that problem. That's how it scales, but when you start to kick people about it they just say you don't really need to scale hat much anyways, 37signals uses it how's that for scaling! There is this culture of non-engineering surrounding rails, there is almost contempt for it. You bring it up and they talk about how they turned ajax on in a couple lines of code; try that in j2ee. Now it's great if you're banging out a quick app and then you take your money and walk away but it's not real. Along with that, different is good kind of comes up a lot, they like to use lighttpd over apache, because it's easier to configure and then there is this lore that it's 50x faster; now I've beat on apache a lot, it's not easy to configure but the 50x part, I simply don't believe that in any meaningful way, it's bullshit. There are a lot of details that just get glossed over, it's easy to talk, and software engineering is all about the details. I'm not debunking it all there are definitley uses but the problems it's claiming to solve haven't been solved and I don't think the community fully understands them in the first place. It's easy to say that the guys who wrote the pragmatic books run their web site on it and they get a lot of hits so it scales and just move on. The whole ruby on rails community, from my experience isn't in favor of engineering, they are in favor of feeling, things feel good and so they must be and they move on. Feelings are nice but at the end of the day someone is paying an engineer to make it work. And if you really want to get all touchy feely, you can bang out apps seriously fast in Seaside, Zope, Django, Turbogears, and even with some of the IDEs and tools in J2EE with EJB3 and such; I'd like to see a meaningful discussion, not about feelings, about all of that. Clean code isn't engineering, doing things quick isn't engineering, it's all of that plus making it work, supporting it, making it do what you say it will do.
Am I the only one that is just utterly amazed that they can actually come up with quantifiable numbers that they can compare between the two? Isn't that what they built Deep Thought for in H2G2? People write PhD thesis' on that crap and don't even start to answer it, they just raise more questions.
Never mind the fact that postscript (pdf) is a page description language and the output is generally ready for print where HTML isn't and you don't always get the same printed version of what was on the screen. That's really be the crux of the whole issue for decades, that's why OSX and Next used postscript (pdf) for their graphics. It's why windows printers use GDI. That whole WYSIWYG concept.
Dead? I bought apple stock the last time everyone was seriously talking about them being dead and that was one of the better moves I've made in the stock market... I imagine all the Sun people are really concerned too; they're as good as dead. I suspect redbull is killing coke too, they are probably dead.
I like C++, I like the idea and the intent. After spending like 10 years going through standards processes, I actually like the end product and the STL and what have you, it's substantially more clean that it was in 1991. I think they got a good 80% of the way there. There is still some jankiness though.
I think the thing with C++ that is larger is that they are still old world. There is no quick movement and there still isn't any "21st century" development style in the standards group. Java has warts but one of the great things it has going for it is Sun produced a lot of standards and then the jakarta group did the same and there tends to be a lot of similarity between "high quality" java products and components. There is a ton of java stuff to reuse and the code tends to be be laid out in a similar way, built in a similar way, javadoc is used, xdocklet is used, etc.. C++ doesn't have any of these standards working for it and there aren't any major projects (maybe KDE and QT) that are really sort of laying out the guidelines and building reusable components. In short, nobody is really showing everyone else "how to do it." I think that alone has accellerated java at a remarkable rate.
Beacuse of all of that, I don't know of a lot of good high quality C++ reuse. There are some knickknacks that might be reused. Then there is kind of this whole-world style framework, like QT which includes tons and tons of stuff. Simple little libraries don't seem to be popular because there are so many different ways you can use them, different conventions, etc.. Every time you start a C++ project, you're starting over from scratch. The other thing java has helping it is the class library. You cna buy Roguewave or something but there isn't a good opensource alternative. Boost is kind of filling the gap but it's still a little project and I think the scope has stayed fairly small for a lot of reasons, many of which are political.
Part of this is the C legacy and the C++ attitude, it let's you do things "your way." And the languages tries not to do "too much" yet it's supposed to compete with higher level languages that are totally tricked out with features and libraries. I think if you were starting a new large scale application project and Java wasn't an option and mono/.net wasn't an option and you were looking at C++, GNAT would also have to be considered (as radical a thought as that is) because I think there might be as much or more high quality reusable componets that you could harvest for it.
It just needs a really strong leader and some community built up around it. Define some common framework rules. Write a couple frameworks, if I could just instantiate a socket class (with SSL as a yes/no flag) and create a high performance and high quality C++ server network server in a small chunk of code, in a standard like way, that'd be cool. Imagine that it had some template based policy stuff that allowed me to plugin validators and crap like that and we created a nice reusable network component and started to make some of the security holes in that stuff go away... Simple and clean, reusable. WOuld you write your own server everytime now or would you use this one?
Code with comments on every line (short of certain function in assembly) is unacceptable.
There is something to be said for consistency. I like the idea of "self-documenting" code or code that is so easy to read that it doesn't need documents but the fact is that no code is that to everyone, you have to assume a lesser engineer will at some point need to understand what you're doing. Just get used to that idea. I've seen commentless code with sentance like variable names and function names getNewHisteresisValueFromNetworkThrottleGovner(..) screw that, that's even less appealing.
While I generally think the idea of mandatory doxygen or javadoc comments is kind of overkill and if the code is done well then it's usually fairly obvious what the code does and worse, when you do some serious refactoring all that documentation is just extra luggage to move around I think that there is another effect that requiring them can produce. It shows when someone cares or doesn't care and knowing that might be more useful than documentation.
At one job I had, in an extremely high performance software engineering shop (world class,) they had a ton of rigid coding standards and guidelines. At the time it really seemed like a lot of extra hoops to jump through and I was younger and wanted it "my way" after a while though I had some converstaions with some people about it and they all thought that what was more important that consistent code was that if an engineer didn't care enough to follow those rules then they knew he wasn't going to work out. Mandatory code reviews, not becaues the code always needs it but it transfers knowledge, and then you oculd see them end in like 5 minutes because it wasn't formatted correctly or something wasn't documented, you go back and fix it and reschedule the review; if it takes too many reschedules then there is going to be a problem. And I kind of agree with that. You don't really have discipline unless you demonstrate it but the demonstration usually isn't really needed but it's a circular thing; you don't have the discipline to document every variable and function unless you do it but that probably doesn't really need to be done.
At other jobs, I've seen people want to use javadoc and doxygen only to find it's nearly useless because 15% of the code is documented correctly. If you've ever dived in to a large project, poking around in doxygen is nice if it exists, while it may not be perfect it can get you a nice lay of the land. I think if you have any desire what-so-ever to use a tool like that then I think it is completely reasonable to require all classes, methods, etc. to have at least minimal documentation. Even getters and setters can be documented and it doesn't really hurt anything (turn on folding in your editor if it's too much for you) and if you have people that refuse or cannot get themselves to do that much then you know some other problems your project is going to have.
Over the last 5-8 years, Bill has pretty clearly been stepping back and reducing his role. It's a very hard problem, we saw what happened to Apple when Steve wasn't around. The hardest thing as a parent is letting your kids fail at something, but that's often the only way they really learn. The emails seems somewhat realistic to me. Then as a user and developer that has a windows laptop at work and I have to use it from time to time, a lot of the stuff they've done simply doesn't make sense, I can't imagine that it was Bill's vision.
What's clear to me is 2 things, MS has built up a huge empire that they really cannot manage effectively and it's looking more and more to me like Ballmer isn't the guy to do it. He's just too close to things, too many battles fought, won and lost to be objective and he's simply not a technologist.
My prediction is one of two things will happen, they'll stay their course and continue to lose and erode their brand and reputation (you'd be shocked how quickly the tide can turn in this world, I'd say when folks like my mom are considering macbooks instead of thinkpads and inspirons that it's a good sign it's already happening) or in the next maybe 3-5 years they'll bring in an outsider to run the show and he'll start to split it up in to successful smaller companies (3: media and entertainment, office and sql, and platforms and tools and get rid of MSN and MSNBC and all the bit parts)
You can't count them out, but it's really hard to see how they're doing things well right now. Sure they make tons of money but all the non-Macs bought come with Vista. What's truly amazing to me isn't Linux which I'm near and dear to but how common Mac Books have actually become and how they are becoming a serious option to not just home users but business users too.
That's a good guess. I think some of the linked list code for early LISP compilers may still be the same as well.
It means quite a bit to me, although I'll grant it's difficult to put an objective number on. I can agree with that. There is something to comfort. It'd be nice to measure the productivity and correctness though, otherwise it's just kind of a talking point that sounds good. what it really means is you know python better than you know java
Well, as I said I've been writing Java for more than 10 years and Python less than 2. I used to be in the static typing camp, figuring that mass chaos would ensue if you didn't religiously inform the compiler of the type of every variable. In practice, I've found there are many benefits and few costs. I apologize if what I said was at all offensive, as I read it again I probably should have waited on the coffee to kick in. I was meaning "comfort." The differences between the Python code and Java code sample are really pretty small, tooling will fix most of it, in Idea or Eclipse it will auto populate most of those key strokes for you
The problem isn't the keystrokes when first typing it. The problem is the mental shift between levels of abstraction, which happens both when you initially write it and when you subsequently read it. It lumps together code that describes the essential purpose of the algorithm with code that only exists because the language isn't sufficiently expressive. Like declaring the output variable? I really don't see much difference in this case. I'm not discounting it, I guess I sort of ignore that part and just see code iterating through a list and creating a new list with the matching criteria. I've been using both python and java for a long time and I almost can't see a difference between the two examples, my brain kind of keys off of a couple parts and they both read just about the same. Where it seems to matter if you ask me is in C and C++ where there are pages and pages of definitions included and boiler plate included just to use libraries, compare a C GTK+ pop-up dialog to a Java swing popup dialog and there is a verbosity argument.
Right, we're just drawing the line in different places. Personally I don't like loops in general; I find most of the time they're a low-level distraction from what I really want to do, and a frequent source of silly bugs (off by 1 in the indices, using the wrong local variable inside the loop, etc). I'm even slightly annoyed by the "for e in employees" implicit loop in the Python list comprehension. I'd prefer something like a "select" method like the C# code above. (Although that would require improving Python's lambda syntax, which Guido doesn't want to do. But I digress). Maybe there is something in this. I understand the different types of defects in static vs. dynamic systems and the costs associated with fixing them; in particular you might have trouble just making the program compile to see it fail where as seeing it fail and then seeing that you're treating a "student" object like a "teacher" object (or something of that nature) is usually a fairly simple fix. It seems like a difference in terms of explicitness, there are engineers that like things very well defined and spelled out and those that like it vague, just as a matter of taste.
I think there is often a radical difference in cost when it comes to reading and maintaining the code though, those simple mistakes can be costly. Ada has proven itself over and over, if you care about correctness and reliability as well as performance, it should be in the conversation and there are wonderful free tools available, next time you're writing a C or C++ program from scratch, you should consider Ada, there are whole classes of problem that large C and C++ apps tend to develop that aren't there in Ada. A more notable issue might be that developers still approach software as a disposable commodity, they simply aren't used to maintaining code or producing it for the next guy to maintain.
The differences between the Python code and Java code sample are really pretty small, tooling will fix most of it, in Idea or Eclipse it will auto populate most of those key strokes for you and aside from keystrokes or lines what is your metric for this? At then end of it all, what really matters is which is easier to read at a glance and personally I can't find a difference. One is one line and one is 3 or 4 lines, I find myself doing the same mental parsing regardless of the line count. Does the code "verbosity" really matter here? Where it seems to matter if you ask me is in C and C++ where there are pages and pages of definitions included and boiler plate included just to use libraries, compare a C GTK+ pop-up dialog to a Java swing popup dialog and there is a verbosity argument.
There is also the logical hole that line counts affect readability and maintainability of program to begin with, there is a definite argument that a really compact and concise piece of code is at times even more difficult to maintain than a more verbose piece of code, just about any assembly language program is an example. With your code, it starts to look a little bit more crummy in python as soon as you start to add other criteria.
I'm not sure the right way to say this without sounding offensive, I use and love emacs, but some newer blood in the leadership might be the right thing. There are all sorts of things it can do better, faster, differently.
Does this seem like a really obvious extension to switches? Why not power down ports and then power them on via 802.1x requests. Kind of hits two birds with one stone.
By comparison, MS tries to sort of control that. Zune they see as music, not data and they don't see their business as access to data, they want to provide mechanisms to do that and control every part of the process, access to data is secondary and sort of a side effect. Google supports mozilla because it's a primary conduit to your data and opens the playing field, their business is "access to data" not browsers and certainly not controlling it. Same with android, they want to make sure that phones have good and open mechanisms to take part in accessing data so they have invested and provided mechanisms for people to build that. MS still wants to control all of those things. Likewise, google uses open development tools for the same reasons, their business is access and data not "windows apps." Or "windows server apps" or even "linux server apps" Linux happens to get the job done and nobody can control what they do with it to get the job done.
MS's biggest threat is openness and people really understanding what it means to control their own data and have access to it. The paradigm is shifting, just look at the open document stuff, what will MS do when a lot of customers just expect to see their documents on their razr phones rather than buying a bulky POS windows mobile device? Apple and Google are playing in that world.
Dealing with crisis, performance under pressure, maintaining bearing, providing vision, delegation and multiple task management and just plain execution are what start to separate the great leaders from the average. The whole idea is really silly actually, maybe tomorrow's gamers might be training for leadership but right now, the most sophisticated games there are really don't push you that much, not anything like just rudimentary project planning or logistics in a business.
I've done my fair share of gaming and for what it's worth, I can't ever recall ever feeling real stress. Work at a startup and deal with a tight schedule and a couple support issues and it puts the best online games to shame and that's nothing compared to actually leading, not like a CEO or what the military expects. This idea might feel good or might sound neat and justify our gaming addictions but it's silly. You play games to escape from the stresses of life and those are usually substantially less than the stresses of actual leadership.
I read the GCC mailing list. I haven't heard or seen any grumbling. Nothing I'd call significant. The most grumbling I've read is on how to deal with the branching and labeling/versioning which always seems to be a GCC issue; it's a major release number with no new features, when major release number imply new features... Read this. There are closed branches of GCC, ones that vendors may add custom support for their hardware to, stuff like that, those people will have to change things. There was some discussion about how you license patches, purely an academic discussion on licensing though. Like I said, I haven't seen any grumbling and it simply doesn't affect end-users.
I also read LKML and I don't think that that is terribly significant, Linus brings up some points that seem to go un-addressed elsewhere. There is also some disagreement about how something like Linux goes through the process of being recopyrighted, you see there are people that are dead that have contributed large amounts of code. With Linux in particular, nobody was requested to re-assign their copyright to anyone like they are with GCC and a lot GNU projects. Really the only serious disagreement I've seen anywhere is from companies that exploit free software and are worried that they might have to share their substandard source code or rewrite the free components that make up the heart of their applications. Some of the hacks from the magazines are trying to stir the pot a little but that's it. It's unfortunate, some of the folks that really benefit the most from free software, folks that have products that exist because free software makes it possible for them to afford to make software, are now trying to attack and undermine the very software they depend upon.
If you're serious, ask a lawyer or two about it. Most likely, if the BSD vs. Linux thing is so seamless then you're not doing any real kernel mods, you're just running code on top of a POSIX like OS. So you're free to license it as you wish, your use of 3rd party libraries is the only thing to be concerned with. If you're going to change the kernel, there are some other, very important, factors to consider also.
Be OS had hype
lot's of talk but little beef
haiku is the same
Don't get me wrong but that really misses the point. Take, for example, Voltron. I can plug that into Britannica and Wikipedia. Britannica doesn't know who or what Voltron is. Wikipedia has a fairly detailed explanation. Accurate? Well written? I'd be shocked if that article fell in to the 2000 or so "well written" articles. I doubt it's verifiable in any credible way. Also, I don't see Britannica ever having an article that talks about Voltron. It's not a scholarly article because it's not a scholarly subject. That doesn't change the fact that when I couldn't remember the names of the pilots of the lions and for whatever reason I wanted to remember them, wikipedia provided an answer and a whole lot more where most other sources wouldn't provide anything. That's the beauty of it.
I don't know that you should read a candidates wikipedia article and decide off of that alone if you will vote for them. I don't know any single sources that you should use for that. I also don't know that I'd read about global warming on wikipedia and use it as an exclusive guide to your own beliefs on it; again, there is no good single source on such an important subject. However if you do want to look up who's driving for each F1 team next season or Voltron, or what looks like well over a million other articles, wikipedia is probably ok. The alternative is either nothing or you scour the web for some hobbiest that cares enough about Voltron or whatever to put up a webpage of his own and provide a detailed document on it.
And I think you're mistaken if you believe that marketshare directly reflects the security of a platform. The number of users has little to do with the number of exploitable bugs in it or architectural flaws. More existing bugs might be found in more popular platforms but that doesn't prove that more exist that just aren't found in other platforms. Windows is less secure because it simply wasn't a design factor when most of it was built, that and MS went out of their way to do things differently than how existing systems like UNIX did.
Then to make matters worse, rather than dealing with truth and facts, they through the smugness of Apple's users out there, like that has anything to do with anything. I suppose that somehow makes the platform less secure, huh?
The reality of the situation is that neither market share, nor the attitudes of the user base of a platform contribute to its security.
I really don't see how you can paint apple in to a bad place with this, secureworks created a lot of hype while disclosing nothing to anyone, Apple took the initiative and at their own expense researched the issue and fixed potential problems they found, none of which has a known exploit. None of this validates what secureworks did, it is possible it's the bug they supposedly found but it's also possible they faked the whole thing.
And here, the OpenJDK project.
Thanks Sun. You're earning a lot more cred in my book.
The MPAA isn't run by the government. It's a volunteer thing. You don't have to rate a movie. Should a movie recieve certain ratings I think there are laws in some places about letting minors in without a parent but that's about the extent of it. The feds don't rate the movies. It happens to be a cartel that is pretty powerful and you'll never get your non-rated movie shown in their theaters but that's a different issue. Basically, the movie industry saw what was coming and took care of their shit, like it or not, most movies get some kind of rating. the system isn't perfect and there will always be debates about movies getting soft-Rs and hard PG-13s and NC-17s for raunchy jokes but at least they are making an effort and theaters and rental places are supposed to help enforce the age issues.
Bills and things have come up multiple times in multiple areas. It's very clear that some percentage of the populus cares enough about it that various governments are starting to take things in to consideration. Sony, MS, and Nintendo should own up to this before they are told how to do it. Rate games, provide v-chip like mechanisms in the hardware to let parents define what kinds of things are allowed, done. Some of the other side effects are very logical, minors won't be allowed to buy some games anymore. That's not really a problem since they aren't the target audience anyways. You want your kid to play GTA4, then go buy the "rated R game" and give it to him/her. What's the big deal?
The worst thing would be letting the US government decide how this shit should work. Sony has already done the work, you can tell a PS2 not to play certain rated DVD movies without a code.
Really this has a lot more to say about the overall responsibility of the game publishers. Look at the Hot Coffee thing, someone, somewhere did work, real work to make it and put it in the game. It wasn't an accident. It was supposed to be a joke or gag for testers or something and it backfired. Their audience is bigger and they need to take some responisbility that comes with the hundreds of millions of dollars (billions?) that the publishing houses are making.
It's nice. Ruby is nice too, I like it. I guess there are 3 things that stand out to me, Rails is still a toy compared to j2ee, I've been doing "opensource" professionally for nearly 10 years and good enough usually isn't good enough. There seems to be a lot of consultant types pushing the rails way and it's because they've never finished anything.
Second, I'm skeptical of religion in technology. Ruby and rails has a ton of religion going on. Enough that it's not just advocacy, it's crossing over in to that place where there are a lot of believers that it's a silver bullet. It is in a consulting type way but nobody has ever maintained a rails app.
Third, and this might be a couple of issues. Engineering died in the last decade (or maybe it's just in a coma) and things like agile (which is really just a formal declaration that engineering is hard so we're not going to do it) have really taken hold. I read and worked through the Agile Web with Rails book and in the "getting serious" section they spend a nice little couple of paragraphs explaining how if you hit the db every page and share nothing then you scale because you can put dbs in clusters and they are fast; it's really kind of laughable if you've ever worked on that problem there is a difference between running on a cluster and requiring a cluster to run. Never mind the fact that j2ee exists to really kind of provide tools to solving that problem. That's how it scales, but when you start to kick people about it they just say you don't really need to scale hat much anyways, 37signals uses it how's that for scaling! There is this culture of non-engineering surrounding rails, there is almost contempt for it. You bring it up and they talk about how they turned ajax on in a couple lines of code; try that in j2ee. Now it's great if you're banging out a quick app and then you take your money and walk away but it's not real. Along with that, different is good kind of comes up a lot, they like to use lighttpd over apache, because it's easier to configure and then there is this lore that it's 50x faster; now I've beat on apache a lot, it's not easy to configure but the 50x part, I simply don't believe that in any meaningful way, it's bullshit. There are a lot of details that just get glossed over, it's easy to talk, and software engineering is all about the details. I'm not debunking it all there are definitley uses but the problems it's claiming to solve haven't been solved and I don't think the community fully understands them in the first place. It's easy to say that the guys who wrote the pragmatic books run their web site on it and they get a lot of hits so it scales and just move on. The whole ruby on rails community, from my experience isn't in favor of engineering, they are in favor of feeling, things feel good and so they must be and they move on. Feelings are nice but at the end of the day someone is paying an engineer to make it work. And if you really want to get all touchy feely, you can bang out apps seriously fast in Seaside, Zope, Django, Turbogears, and even with some of the IDEs and tools in J2EE with EJB3 and such; I'd like to see a meaningful discussion, not about feelings, about all of that. Clean code isn't engineering, doing things quick isn't engineering, it's all of that plus making it work, supporting it, making it do what you say it will do.
Am I the only one that is just utterly amazed that they can actually come up with quantifiable numbers that they can compare between the two? Isn't that what they built Deep Thought for in H2G2? People write PhD thesis' on that crap and don't even start to answer it, they just raise more questions.
One file is nice but that's a tiny part of it.
talking about them being dead and that was one of the better moves
I've made in the stock market... I imagine all the Sun people are
really concerned too; they're as good as dead. I suspect redbull is
killing coke too, they are probably dead.
I like C++, I like the idea and the intent. After spending like 10
years going through standards processes, I actually like the end
product and the STL and what have you, it's substantially more clean
that it was in 1991. I think they got a good 80% of the way there.
There is still some jankiness though.
I think the thing with C++ that is larger is that they are still old
world. There is no quick movement and there still isn't any "21st
century" development style in the standards group. Java has warts but
one of the great things it has going for it is Sun produced a lot of
standards and then the jakarta group did the same and there tends to
be a lot of similarity between "high quality" java products and
components. There is a ton of java stuff to reuse and the code tends
to be be laid out in a similar way, built in a similar way, javadoc is
used, xdocklet is used, etc.. C++ doesn't have any of these standards
working for it and there aren't any major projects (maybe KDE and QT)
that are really sort of laying out the guidelines and building
reusable components. In short, nobody is really showing everyone else
"how to do it." I think that alone has accellerated java at a
remarkable rate.
Beacuse of all of that, I don't know of a lot of good high quality
C++ reuse. There are some knickknacks that might be reused. Then
there is kind of this whole-world style framework, like QT which
includes tons and tons of stuff. Simple little libraries don't seem
to be popular because there are so many different ways you can use
them, different conventions, etc.. Every time you start a C++
project, you're starting over from scratch. The other thing java has
helping it is the class library. You cna buy Roguewave or something
but there isn't a good opensource alternative. Boost is kind of
filling the gap but it's still a little project and I think the scope
has stayed fairly small for a lot of reasons, many of which are
political.
Part of this is the C legacy and the C++ attitude, it let's you do
things "your way." And the languages tries not to do "too much" yet
it's supposed to compete with higher level languages that are totally
tricked out with features and libraries. I think if you were
starting a new large scale application project and Java wasn't an
option and mono/.net wasn't an option and you were looking at C++,
GNAT would also have to be considered (as radical a thought as that
is) because I think there might be as much or more high quality
reusable componets that you could harvest for it.
It just needs a really strong leader and some community built up
around it. Define some common framework rules. Write a couple
frameworks, if I could just instantiate a socket class (with SSL as a
yes/no flag) and create a high performance and high quality C++ server
network server in a small chunk of code, in a standard like way,
that'd be cool. Imagine that it had some template based policy stuff
that allowed me to plugin validators and crap like that and we created
a nice reusable network component and started to make some of the
security holes in that stuff go away... Simple and clean, reusable.
WOuld you write your own server everytime now or would you use this
one?
Think ++(++TemplateMetaProgramming)
As far as statically compiled languages, I'll give you that.
Code with comments on every line (short of certain function in assembly) is unacceptable.
There is something to be said for consistency. I like the idea of "self-documenting" code or code that is so easy to read that it doesn't need documents but the fact is that no code is that to everyone, you have to assume a lesser engineer will at some point need to understand what you're doing. Just get used to that idea. I've seen commentless code with sentance like variable names and function names getNewHisteresisValueFromNetworkThrottleGovner(..
While I generally think the idea of mandatory doxygen or javadoc comments is kind of overkill and if the code is done well then it's usually fairly obvious what the code does and worse, when you do some serious refactoring all that documentation is just extra luggage to move around I think that there is another effect that requiring them can produce. It shows when someone cares or doesn't care and knowing that might be more useful than documentation.
At one job I had, in an extremely high performance software engineering shop (world class,) they had a ton of rigid coding standards and guidelines. At the time it really seemed like a lot of extra hoops to jump through and I was younger and wanted it "my way" after a while though I had some converstaions with some people about it and they all thought that what was more important that consistent code was that if an engineer didn't care enough to follow those rules then they knew he wasn't going to work out. Mandatory code reviews, not becaues the code always needs it but it transfers knowledge, and then you oculd see them end in like 5 minutes because it wasn't formatted correctly or something wasn't documented, you go back and fix it and reschedule the review; if it takes too many reschedules then there is going to be a problem. And I kind of agree with that. You don't really have discipline unless you demonstrate it but the demonstration usually isn't really needed but it's a circular thing; you don't have the discipline to document every variable and function unless you do it but that probably doesn't really need to be done.
At other jobs, I've seen people want to use javadoc and doxygen only to find it's nearly useless because 15% of the code is documented correctly. If you've ever dived in to a large project, poking around in doxygen is nice if it exists, while it may not be perfect it can get you a nice lay of the land. I think if you have any desire what-so-ever to use a tool like that then I think it is completely reasonable to require all classes, methods, etc. to have at least minimal documentation. Even getters and setters can be documented and it doesn't really hurt anything (turn on folding in your editor if it's too much for you) and if you have people that refuse or cannot get themselves to do that much then you know some other problems your project is going to have.
The Outlook plugins for PGP and some of the other mail readers out there won't work with it but enigmail to enigmail it works just fine.