Is anybody actually caring about IE at this point?
Why would anyone care about the experience of 90% (or whatever) of the site's users?
According to my Apache logs (you do read your logs, dont you?), 90% of my 'IE' users are interested in some page called/scripts/..%5c%5c.. that my Linux boxes don't have. The remaining 10% of the 'IE' users are just interested in my music and artwork (mostly mp3s and jpg's.) But 90% of my total users seem to be search bots like googlebot.
Electro-shock keyboard perhaps? "Lets just change this DONT-BLAME-SENDMAIL option here...." *Zzzzz!!!* "@#*(%&@*!!!!"
I don't know what's worse: the fact that it could take a feature like that to stop CWS, or that I first mistook your punchline cusswords as sendmail.cf options. Oy, time to go outside and away from the computer, again.
CWS: Computing While Stupid. Be a friend; don't let a friend compute stupidly. This message brought to you by your local LART council.
The problem with hard fast rules like that is they're frequently not right.
While I'm sure you've seen McCabe Metrics and the evil that is KLOC, hard and fast rules like
If a function has grown beyond a hundred lines of (real) code, it is almost certainly too large. If it has more than 4 levels of nesting it is too large.
are actually well-tested and well-known observations about the complexity of software code when read and written. Remember that unlike a computer, which knowns only its current state, a human can only track so many multiple states at once.
Take a state machine for example. A simple one with 6 or 7 states will go over 100 lines, and will go over 4 nestings.
Ah, the switch based state machine. You remind me of my college days learning formal automata for AI and compilers. If I saw a huge switch statement in the middle of parser code, I can be sure of how little training and experience the coder had when he/she wrote that. There are alternatives and they are so much more elegant.
Swtich-based state matchers were a poor design then, and are a poor design now. By using maps, state tables, or even hashes your state machine can be 50-100 lines with thousands of states and easily readable code. Of course, the documentation of state transitions becomes very important. This information will be forced from the switch/case statement labels and into secondary documentation, such as *gasp* pictures of your state transition network. So, your state names will not be readily visible in the code (unless you are very good at reading sparse matrices and compressed linked-lists.) The compact and simple table-based code will be easier to maintain than a monstrous switch.
Take the state machine example. If it needs to wait on a semaphore before each iteration, the wait should be its own function- waiting on a semaphore is a logical operation. The logic for each state should NOT be separate functions, they are part of the state machine and make no sense without the whole of the machine for context.
From formal automata theory we know this to be incorrect. It sounds right, but leads to statements such as the intermingling of different functions as proposed here. Each state is independent of all other states. Each state does have incoming transitions and outgoing transitions. These transitions are completely isolated from the internal facts of those state from which they originate or terminate.
Mealy machines perform actions only on transition. Moore machines perform actions only while in a state. Hybrids exist that do some of one and some of another. Even simple automata such as those show can have no well-defined state- or transition-based actions. None of these require implementations in code that break the 100-line and 4-depth rule. All of them can be implemented with a table and a transition function containing *gasp* no switch statements.
There are a slew of Computer Science courses that delve deeper into a topic such as state machines and code readability. (I'm certain they must be terribly boring and useless to be overlooked by so many professional coders.) But, state transition is just as well known as other logic operations like array index math and -dare I say- waiting on a semaphore. These courses cover a lot of techniques, but all that have implementations that benefit from the 100-line and 4-depth rule above.
For a minute there, I thought this article was going to be about how millions of teenage girls are displaying frightening symptoms: siting inside all day instead of socializing, playing computer games all day, turning away from reality. I guess the Sims has the power to turn girls into guys. But that's not what this is about...
Since this is presented as a tool on which to base political policy, I am quite alarmed.
While you are making a joke, this actually brings into question several of the assumptions underlying this model. The social networks employed by this model are very simple compared with real life. Even though they are rigged to have similar power-law statistics, the model used may not be able to reach useful results. Critical details in the social networking of super carriers and patient zero are handled poorly, IMHO and that's only based on the article, basic college stats and high school level intro to sociology.
For instance, for any STD model will have to take into account the many over layed and distinct networks of sexual interactions. Sexually active high school students such as in your teenage girl joke have a very different social network pattern from adults. Another pattern is common among college students. Trying to use the model from the article would lead to incorrect results for their population and would deviate significantly from reality.
Re:Yet Another Metaphor About Carpenters
on
The Code Is The Design
·
· Score: 3, Insightful
It's always seemed to me that design and coding are more than a bit like buiding[sic] a house and using carpentry tools.
I find it funny that you and many other people use Carpentry as a metaphoric model for coding. However, after working as a carpenter for over half a year I have to say that it is appropriate.
The world's best carpenter won't build much of a house unless someone's done the design
Houses are built as a variation on a template for their entire neighborhood. In richer areas, more variation occurs, but then more money is poured into the project. In older areas, the variation in house styles is mainly due to renovation by the various tenets over the years.
Unfortunately, most code written is mostly re-inventing of the wheel at the design and implementation level. Closed source techniques necessitated this for a long time (the highly-copyrighted Numerical Recipes books, anyone?) Open source should change the re-inventing of the wheel, but I still see a lot of people re-inventing the wheel 6 or 7 times out of 10 projects. The 8th and 9th will probably shoehorn in a custom library of crufty utility code they wrote years ago for college homework.
But, you can't live in a design, so both skills are needed.
Never owned a house, have we? People who can't afford to spend a long time in a motel/hotel/vacation-resort will live in half finished (but up to code) houses and use kitchens that are being actively remodeled. Similarly, you can go grab open source projects from sourcefroge.net to do little more that compile and jump right in. If I recall correctly, I had to code a Ethernet driver module for the 1.7 kernel series. No driver existed for my card. My RedHat Linux 5.6 would loose network functionality after the install. I this any different from living in a multi-story house while the bathrooms on the other floors are being built?
In the end, people who stand around and argue that good carpenters don't need designs, or vice versa, miss their completion date and lose the customer.
A lot causes schedule slippage in both coding and carpentry. Both in carpentry and in programming projects regularly go over schedule. Customers are told that sickness and surprises will cause the schedules to slip on any construction. With programming projects it is hard to tell people that extra, unexpected work is needed. Showing customers the termite damage in a wall is easy, showing the hacks in a networking library is not.
The correct people and only the correct people talk to customers. These people typically are the people or work with the people who do the design. With coders/software-designers being stereotyped as uncouth and kept away from the customer, the design may not reflect reality. When the customer is not aware of what they are asking (i.e. requirements creep) it is easy to tell them that additional carpentry and materials are not free. Management and the Customer seem to think that additional software features are not free. Your customer facing people must know when to say 'No' and when to say 'it will cost THIS much,' not pander to the idea that coder-time is free because the results aren't physical.
With trim and paint to cover errors, you can get away with 'rules of thumb' in carpentry[1]. Some voids are needed to allow for expansion and contraction of joints. Management never seems to understand the need for well-defined APIs or plug-in architectures (let alone security or data integrity.) Plus, the computer is a little less tolerant of taking the software equivalent of power tools to the virtual memory manager.
Come to think of it, carpentry is a very bad model for programming[2].
------ 1. Literally a thumb used as a ruler. With the massive non-squareness of some people's idea of a *square wall* you have to hate the flexibility of wood over long periodic thermal cycling. Here's a hit: like with bad code, a slightly off wall creeps further out of square with t
S-U-C-K-S...in terms of copyrights and how they've been extended ad nauseum because the Disney cronies have a lot to lose in their mouse IP.
There is only one solution to the copyright problem in the USA: buy out Disney and public domain the mouse. If you get enough money together to tear out the heart of the evil, the evil will die.
(Unless the Senator clone of ex-Senator Sony Bono also runs into a tree while enjoying his massive copyright-supported fortune by snow skiing and gets another Bono copyright amendment passed by guilt, remorse and stupidity.)
The greatest contorl over per barell pricing is from the supply made available from oil producing states greatly controlled by OPEC. As world consumption increases and known stock piles decrease and cease over the next 30 to 50 years the price per barrell will continualy rise. And will certainly exceed 80$ a barell probably within the next five to ten years.
Everyone at the pump in the USA is just waiting to see what China does. If China uses closed loop technology such as this to handle their wastes, they will significantly reduce their environmental impact (at least from the landfill/watershed point of view.) If they don't, and cars are at least as popular in that large and populous country as in the USA, industrialization of China will put a huge demand on gasoline and lubricant quality oils.
Heck, in the midwest USA, if prices get above $45/barrel crude, everyone and their dog starts pumping oil from any hole in the ground they can find or make. While OPEC may want to avoid that, a highly industrial and mobile China (and gasoline guzzling Chinese military) could care less.
This is cryptography, so it's always talking about possibilities.
With 160 bits of hash, the probability that two pieces of data will hash to the same value is incredibly low. Using a brute-force technique, you'd have to use all of the computers on the planet for thousands of years to find a collision. This is, for all intents and purposes, "impossible", and thus the hash is effectively collision-free.
With the new findings, a wealthy organization could actually find a collision with a reasonable amount of money and time.
So? All that these two groups have done is prove that MD5 and SHA-1 are hashes, nothing more. There is also a known and finite probability that I could generate examples of hash collisions on SHA-256, SHA-512 (and on up to SHA-n) on my first try by typing gibberish into a hex editor.
While doing so wouldn't win me the fame of he MD5 and SHA-1 researchers, it is just as usefull as both results. Eventually all hashes will have collisions. Still, there are security nuts screaming to abandon MD5 and SHA-1 for a few more bits. They tend to forget that without (1) easy collision generation and (2) gerenation from an arbitrary message that neither of these are 'broken' for security use. Furthermore, neither of these techniques are more usefull in making (2) true than my random typing technique.
--------- Come to think of it, there are already a million monkeys on a million typewriters, and Usenet is NOTHING like Shakespeare.
-- Houghton, Blair
I demonstrated a way of checking for Wine to Rob last night that we really cannot fix or workaround, and if I can think of it they certainly can too.
Basically if we start integrating workarounds into Wine, it'll lead to an arms race we cannot possibly win. Better to ensure our users don't need anything from that website.
This ActiveX/tool is nothing new.
I run a windows emulation tool, called Cedega, based on Wine. Cedega includes a lot of NDA covered hacks and proprietary tech to make Microsoft Windows based games work under a stock Linux install. Unfortunately, many programs from Microsoft Games such as Age of Mythology and Halo use nasty tricks to ensure they only run under 100% native Windows installations.
One favorite trick is forcing the MS memory loader to put the game's code in a specific location in memory[1]. Other VM systems often recognise this and refuse, thus blocking the game on non-Windows platforms. While this is but one trick used to lock gamers into M$ platforms, it is one that Wine would have to stoop pretty low to work around[2].
In fact, there is nothing stopping Microsoft from including this or similar code in a critical DLL or core API. If Wine couldn't port/replicate that code due to patent or other protection, Linux users could be stuck emulating old versions of Windows. And that would suck.
---------- 1. M$ used to run VM's in special modes to support video games from the DOS era. If they didn't support people's old games a lot of people wouldn't upgrade for anything.
For example, to make the original SimCity run under Windows they check for that application and let it free memory and use that freed memory later. This, of course was a bug in SimCity but, being a closed-source program, Microsoft couldn't fix SimCity and instead had to hack up their VM for Windows 3.1.
2. However, instead of plying the code with hacks and workarounds, it would be nice if Wine supported plug-ins that could be used to adapt the system to certain badly written programs. Then Wine could develop normally and the plug-in writers could race Redmond for the desktop by themselves.
What this is saying is that the benefit of comments has a maximum at around 3%. Having more comments than this tends to DECREASE the maintainability (and this is borne out by experience). However, having too many comments is better than having too few comments, so the function is skewed to the left side by the sqrt() function.
You see, every part of that expression makes total sense if you spend more than 2 nanoseconds thinking about it. Sheesh.
You math skills are excellent, but I question the critical reading that has been put into this article. Try thinking a little harder this time: by what criteria are you selecting your comments to make that 3%?
The problem with metrics (a science unto itself) is that they are frequently malformed, miscalculated and misunderstood. From reading the paper, I don't see where Samoladas, Stamelos, Angelis, or Oikonomou has done the basic engineering homework to clearly define any metrics. Certainly, such as you have, they throw numbers and equations around.
Unforuntely, without dimensions or expected values and lacking in definition and precision, the conclusion drawn from this and other indices they use is worthless. This paper has data, but the paper's conclusions require knowledge that hasn't and cannot be derived from the data since they are as you put it 'dimensionless numbers' and nothing more[1]. Dimensionless, meaningless numbers are okay as long as you realize that they are meaningless and don't try to conclude something from them. Metrics require a lot more substative though into where the are derived, the consuquences of various values, and implications of typical changes in value. I realize that none of that is 'math' but so should any reader of a paper purporting to make conclusions such as this one.
Reading this paper, at the most, I know that certain computable metrics (defined by their references) have values have been reported for certain OSS software projects. Furthermore, I know those projects have obtained values comperable to known values for traditional (closed source) examples in the literature. Unforuntely, I know that this tells me nothing.
The paper hand waves it's backing data with
Percentage of lines of comments with respect to the number of lines of code (PerCM) describes the self-descriptiveness of the code.
I can get 3% comment ratios by including a chunk of shakespear with every function. As long as I use shakespearian function and variable names, I'm certainly going to meet Samoladas, et al.'s criteria for descriptive.
The problem is that a LOT of comments, while describing the code, do not contribute anything.
/* Would you like fries with that? */
hme_write32(hp, tregs + TCVR_FRAME,
(FRAME_WRITE |(hp->ipaddr...
Certainly, the old Sun driver code hits near the 2-5% mark. However, unless you're looking for comedy in the Linux kernel code comments, this doesn't help the maintainability or understanding of this line of code.
There are a lot of good metrics defined in the references for this paper and a lot of good research on maintainability was quoted. From reading this paper, however, I can say that this is not a reference that should join them nor does it say anything useful.
------ 1. The metric Netwon defines force, the meters-per-second-squared defines acceleration and the kilogram defines mass. The equation F=MA relates these three quantities, but even in it's absence they have numerious properties they give to any assocated quanities. It is these properties and their implications that make Newtons and kilograms usefull. Quantities without dimension are rare in a real science, such as physics or biology and typically arise from equations that define them as well as any other
Let's automate more. We don't need grunt programmer's writing easily templatable code. We need smarter senior programmers writing templates.
...
Anything I see people doing repetitively, I look to automate. After all, isn't a computer nothing but an automaton doing the same thing over and over again?
OB Office Space:
That reminds me, I've got to change the covers on all the TPS reports. I hear middle managment has a new layout they want everybody to use.
If you can automate 90% of your boss's job, particularly the tracking and number crunching, you should look at eliminating him. Seriously, there are three kinds of people in a company: those that have money (investors,) those that bring in money (employees,) and the rest (overhead.) Improve your processes so that very little of the overhead is needed and you save a ton on salaries of spreadsheet managers.
Seriously, if your *middle* management is pared down to the minimum you will find that there are grunts doing a lot of work and a thin layer of people above them doing almost as much. By work, I mean things that bring in money or support bringing in money. Not overhead/busywork. Not 'mission' statement meetings.
However, the best way to eliminate costs is to have income that makes them tolerable. Otherwise there is no time/people/resources to do the things that keep a company alive (like training, strategy and long-term development.)
You've got a nicely steganographed "first post" there.
Yeah, well thanks to this article, I'm trying to find hidden information in the fortune cookie at the bottom of this very same article:
In/users3 did Kubla Kahn A stately pleasure dome decree, Where/bin, the sacred river ran Through Test Suites measureless to Man Down to a sunless C.
So far all I've got is that either puns on computing terms or directions to asassinate Bill Gates while he sunbathes by a middle-eastern riverbank during a total eclipse of the sun.
The fact is, that the two companies merged. With any successful merger the outcome is that overall costs are cut...
Yeah, I know what 'two companies merged' really means.
I interned at a company in college that was 'merged' with another company. This was at a telecom company in the mid 1990's. One day there was a Big Boss type giving a lossy PowerPoint presentation on Big changes in the industry (i.e. the Inernet.) The next day all the old company's signs came down off the building. The day after that? I got to move from an intern cubicle to a manager's office. Of the hundreds of engineers on my floor, only a few of the interns and managers were left. Everybody got fired.
I watched super-programmers with 35 years of coding under their belts walk out and forge start-ups that made them personally rich. Meanwhile, the remaining interns^H^H^Hemployees toiled away on building 'glue' code. Once learning to do world-class software engineering, we now migrated data from the original, unsupported and well-designed systems to the new company's 'manadatory upgrade' (and piss-poor) products.
Oracle+Peoplesoft will be just as bad. I can garuntee that as soon as what's left of Peoplesoft finishes the needed 'glue' code to migrate Peoplesoft data into Oracle 11i or whatever there will be a sudden increase in PeopleSoft 'alumni.'
Any merger that *doesn't* cut jobs, surely at least, partially a failure. You may not embrace capitalism wholeheartedly, but look around you, it's not too bad.
Megers, feh! There are only stupid takeovers and product assimilation in the business world. Someone is either buying your top talent (never happens) or your top product (to shut it down.) If you couldn't hire away the top talent before, they won't stay now. Product closures is just capitalism in reverse. There is less competition and far too often the inferior product is the only product left in the market. People that think mergers are like happy marriges of two companies have never personally seen the look of pure greed on a pre-merger CEO's face.
I'm not bitter though, it's just that the idea of mergers and the reality of mergers have nothing to do with each other.
I don't disagree with what Linus is saying, but what difference does it make if 10 people are informed rather than 10 million
Because if those 10 are slightly brighter than your usual ScriptKiddie and are the only ones in that IRC channel to know about it, your security is screwed.
Do you think Bilbo Baggens would have escaped with the One Ring so easily had he put his precious under Golum's nose? No, keeping it hidden in his pocket let him steal away with the riches.
Security by obscurity typically means that only the theves and hooligans of the online world know about that one important vulnerability in your bank's accounting software. Any thief worth his money should know some vulnerabilities that only him and (God, original-developer, some-codemonkey-we-fired-yesterday) knows.
With 10 million people, obscurity is a little harder to achieve, but fixes come quicker. And you might hear that you shouldn't use your bank's webpage until they fix this-or-some-other bug. Unless you like random, large charges to your account, that is.
Sorry for the FUD, but obscurity doesn't work. Someone will find (scan) you.
Simply: If I trick you into agreeing to a legal contract, is it any good in court?
Last time I checked (I know, IANAL) if either party is entering into a contract with fradulent intentions, such as to sucker someone out of a page view after forcing them to sign a contract in which you promise to show them that page, then most courts will invalidate the contract. Additionally, if one of the parties invests money, significant time or effort on the basis of such promises, you can be sued for 'detriment' in a lot of the United States of good ol' libelous America.
I wouldn't put it past a spammer, caught by a legal action based on such a click-wrap license, to use tools like detriment laws to force the spamming victim to pay up to the spammer. It's a sick idea, but then I feel that these spammers are already taking advantage of everyone already in a very sick way.
Interesting enough, there is a 'type' of sequel already: Tron 2.0 (caution: flash page.) As it is a video game[1], I consider it to be quite apropo[2]. Fun too, as long as you forget that the lightcycles are really just a 3D version of that old BASIC game snake.
For instance, when Clu is about to kiss Yori, a friend of mine pointed out, "He better check his permissions."
Oddly enough, there is a full-featured permissions system in the game. Game Spot - PC Review of Tron 2.0. You have to obtain a set of permission bits matching or greater than the permission mask on something to use it.
----------
"Computers are great for playing games. Why would anyone want to use them for anything else?" (Paraphrased from an unknown Mark)
And the game runs well on Linux with many versions of WineX/Cedega.
Engine blueprints are not like software and tt is not always in the best financial interest of a company to charge for traditional products.
You mentioned: This is like saying GM should open-source the blueprints for all their car engines. It's ridiculous. Valve put untold millions into HL2 development, and there's absolutely no incentive for them to just open the source, and there's a strong disincentive...
But then you turned around and said: To ignore the economic constraints of development is breathtakingly naive.
Form those of us who've actually developed software and taken classes on economics, these statement are very naive. For all projects, the return on investment varies throughout its lifecycle. This contraint is often overlooked by shortsighted money grubbing middle management in the pursuit of next-quarter's margins. As mentioned in the article, which you obviously did not read, game software that once garndered much money for each small (post-release) investment reaches a point at which few profits can be obtained with even large investment.
With your competitors producting higher quality engines (for which you are getting zero royalties) and using newer storylines, you product cannot compete. In this situation, it makes sense save yourself the cost of distribution while ensuring people see your logos and discover the quality of your work. Corner isle loss leaders at supermarkets are the same idea. In the case of software, you are getting free adversiting, marketing and publicity from an existing product by releasing the source code.
If you had read the article, you would understand that companies such as Valve are moving away from selling cars like Half-Life 2 to renting fleets of vehicles with systems like steam. For GM, keeping a blueprint seceret is not possible since the engine has to pass safety inspections. Very few peices of software have such mission critical natures. GM pays an engineer to make and sign off on their blueprints, but so do software companies that make 911 telecom software. Once built, it is very easy to reverse engineer a car engine. For the purposes of patents and publishing rights, the detailed methods of engine operation may be widely published with only a working prototype. Binaries of game software are easily encrypted and copy-protected. Usually such protection is kept until it interferes with enough of the customer base and generates enough bug reports to warrent removal.
According to modern studies 95% of all in-house software fits the criteria for F/OSS release policy. Those fortunate enough to adopt service models, like content distribution via Valve's Steam or support offerings like RedHat's Enterprise Linux, are getting continual revinue which scales very well. (I'd much rather pay the taxes on $0 million in sales now and $4 million in income over the next 5 years than $500k from sales now with nothing to show for the next 5 years.)
What amazes me is why would anyone trust this sort of application
If you are an avid Linux user, might I recommend:
man updatedb
man locate
There is a lot of power in indexing stuff so you can find it. For Google and other companies looking at your desktop, there may even be profit in doing so.
With over 30 Gb of stuff in my/home (minus the MP3s, DVIs, PNGs) I sometimes like finding that How To on configuring game X to run under wine version Y that I wrote or my personal templates for using Unix Domain Sockets in C.
However you may have somewhat of a point concerning these toolbars from commercial vendors. But, I know what my tools are doing since I read the sources (insert hacked compiler discussion here.) This is just one power that FOSS gives to me.
I hope that whatever profit is to be made will have to come at the cost of preserving as much of the users privacy as is possible. Fortunately, Google's motto is 'try not to do evil.' Unfortunately, if they don't release an OSS version of whatever toolbar they develop for Linux, I may not be able to trust it enough to use it for the reasons I mentioned above.
You've managed to put your finger on the biggest problem in the Western social and economic system, that corps have the same rights than humans but none of the responsibility.
Though I don't think hitting the corporations financially as punishment really works.
"Corporations create nothing; they're consensual hallucinations and exist at our pleasure. I don't know about you, but I'm not much pleased any more."
-- Michael Fraase, When Elephants Dance.
Note that this has nothing to do with capitalism, but everything to do with a messed up legal equivalence between real living people and fictious collections of paper.
In the US if a *real* person kills someone we put them in jail for life or kill them. If a company kills someone we take some of their money, pat them on the back and send them on their way. It is the pervese opossite of the idea of making the punishment fit the crime. However, since companies already get all the benefits and rights of *real* people, it is simple to put a company on the same level of responability as *real* people
When a company kills someone, force the company to disband. When a company breaks a law that would put someone in jail, suspend that company's operations for the same amount of time.
The problem is that you would complaign about individuals in that company not getting paid during the suspension or after disbanding the company. I counter that within such a harsh environment, the only companies left and the resulting corporate culture of responsibility would self-police. Since most companes in the US are very small (95% have under 50 people according to U.S. Bureau of Labor Statistics) this would mainly be helping force small business owners to wake up to the negative impact of their (far too often) stupid choice. This scales all the way up to a national mega-corporation. If his job and those of many people who know his home address were at stake for every stupidity he did, CEO's wouldn't be green-lighting projects like SPAM. As it is, golden parachuts, very lightweight white-collar crime punishments and corporate greed make SPAM and standover tactics an everyday part of US life.
Gimp didn't take me hours to learn - once you figure out the whole right-click thing, what's so difficult?
Right-handed, eh? I'm not. One small thing I give myself is to setup my personal workstation at home as left-handed. However, with F/OSS a left-handed person (a programmer in this case) can really see how much more difficult Good UI design and workflow is compared with other coding. In far too many F/OOS applications, some actions are awkward or take excessive amounts of unexpected toggling between left- and right-click behavior.
MS got this correct a long time ago by putting that policy where it belonged: in the mouse management system, verses in the application or window manager or current focused terminal. They also realized that the five or so extra windows of a non-MDF paint tool really clutters up the desktop space when any complex multi-image integation work is being done. This created an expectation for paint tools to look and behave this way.
Microsoft and Apple customers have long held paint programs to a higher standard. This relatively small tool show such a high standard for painting. Too bad the implementation language is bent on encouraging such a usefull app to be Microsoft-only.
While the Gimp may be an acceptable 'image manipulation' program (read: photo touch-up app) it is only about on par with Paint Shop Pro 3.0 (from the mid-1990s) in actual painting features. I can use ImageMagik convert scripts to replace the things that the Gimp does well, but I cannot use the Gimp to replace the quality of a paint program with functional pencil tool.
I've used a few graphics packages over the years (Photoshop 1.x-3.x, Paint Sho Pro 2.x-5.0, MS Paint, ImageMagik) to develop graphical elements for internal and external application and website content. Since early 0.x versions, I have never been able to use the Gimp well. I have taken mini-tutorials online and read several How-to's. Sure, I can do basic things like image conversion with the Gimp. But the more useful parts of other programs like Paint Shop Pro, like the drawing tool, are very under developed in the Gimp.
One could say that each painting application has a certain style, one more realistic while another more cartoonish. I agree with the Gimp's developers that it's style is simply one more suited for photo touch up, and unlike PaintDotNet, not for actual image creation.
That doesn't stop someone else from being able to easily create art with the Gimp. However, PaintDotNet, being focused on image creation - painting - and not image maniplulation should be able to do that well.
Today, we have two languages (XHTML and CSS) instead of one (HTML), and while it certainly does a lot to improve interoperability and platform independence, it is two languages to learn, not one. Throw in stuff like JavaScript, and you have even more.
It's too bad that CSS and XHTML are taught as two seperate languages. These two languages could be introduced as one 'language' with two different views of your conent and inline CSS were in use. The distinction for XHTML as logial markup and CSS for lyaout markup, much like in other document standards, could be emphasized much later in the learning process. Some of the learning overhead could be avoided.
However, to do something like the Firefox extension that matches this new search feature from Google, you'd still have to learn another language. Such a procedural language in which the text directly specifies something is very different from a markup that decorates embedded or external content. The typical slashdotter, I expect, would have little trouble bridging this conceptual gap. However, as with the difference between Geek searching and 'normal' people's searching, the average person is neither willing nor able to do so.
Fortunately, while I may have just defined the average person as someone unable to implement Google's search feature, they are still willing to pay someone to do it for them and their company.
the first thing i'd fabricate would be another fabricator.
So, how much do would these things weight? I figure, at $10,000 a pound for the first one, I'd ship one to the Moon. Add some solar cells, a radio remote control and a remote-controled from Earth mini-foundry to gind raw material out of regolith and you've got a sure fire way to make space access cheaper. Now you only need to send up people.
Heck, cook up a good enough biological fab, and you don't even need to send people: just dial the fab for a replacement set when you've gotten your metric to imperial conversions wrong on your Mars lander.
(Yes, I know NASA wrote a plan for something like this. However, step one for NASA was building fully-autonomous and human-level intellegent robots, which does not help your cost estimates. A remote-controlled fab would be [ahem] dirt cheap.)
Why would anyone care about the experience of 90% (or whatever) of the site's users?
According to my Apache logs (you do read your logs, dont you?), 90% of my 'IE' users are interested in some page called
Got any recomendations on improving that 90% now?
Electro-shock keyboard perhaps?
"Lets just change this DONT-BLAME-SENDMAIL option here...." *Zzzzz!!!* "@#*(%&@*!!!!"
I don't know what's worse: the fact that it could take a feature like that to stop CWS, or that I first mistook your punchline cusswords as sendmail.cf options. Oy, time to go outside and away from the computer, again.
CWS: Computing While Stupid. Be a friend; don't let a friend compute stupidly. This message brought to you by your local LART council.
While I'm sure you've seen McCabe Metrics and the evil that is KLOC, hard and fast rules like
are actually well-tested and well-known observations about the complexity of software code when read and written. Remember that unlike a computer, which knowns only its current state, a human can only track so many multiple states at once.
Take a state machine for example. A simple one with 6 or 7 states will go over 100 lines, and will go over 4 nestings.
Ah, the switch based state machine. You remind me of my college days learning formal automata for AI and compilers. If I saw a huge switch statement in the middle of parser code, I can be sure of how little training and experience the coder had when he/she wrote that. There are alternatives and they are so much more elegant.
Swtich-based state matchers were a poor design then, and are a poor design now. By using maps, state tables, or even hashes your state machine can be 50-100 lines with thousands of states and easily readable code. Of course, the documentation of state transitions becomes very important. This information will be forced from the switch/case statement labels and into secondary documentation, such as *gasp* pictures of your state transition network. So, your state names will not be readily visible in the code (unless you are very good at reading sparse matrices and compressed linked-lists.) The compact and simple table-based code will be easier to maintain than a monstrous switch.
Take the state machine example. If it needs to wait on a semaphore before each iteration, the wait should be its own function- waiting on a semaphore is a logical operation. The logic for each state should NOT be separate functions, they are part of the state machine and make no sense without the whole of the machine for context.
From formal automata theory we know this to be incorrect. It sounds right, but leads to statements such as the intermingling of different functions as proposed here. Each state is independent of all other states. Each state does have incoming transitions and outgoing transitions. These transitions are completely isolated from the internal facts of those state from which they originate or terminate.
Mealy machines perform actions only on transition. Moore machines perform actions only while in a state. Hybrids exist that do some of one and some of another. Even simple automata such as those show can have no well-defined state- or transition-based actions. None of these require implementations in code that break the 100-line and 4-depth rule. All of them can be implemented with a table and a transition function containing *gasp* no switch statements.
There are a slew of Computer Science courses that delve deeper into a topic such as state machines and code readability. (I'm certain they must be terribly boring and useless to be overlooked by so many professional coders.) But, state transition is just as well known as other logic operations like array index math and -dare I say- waiting on a semaphore. These courses cover a lot of techniques, but all that have implementations that benefit from the 100-line and 4-depth rule above.
For a minute there, I thought this article was going to be about how millions of teenage girls are displaying frightening symptoms: siting inside all day instead of socializing, playing computer games all day, turning away from reality. I guess the Sims has the power to turn girls into guys. But that's not what this is about...
Since this is presented as a tool on which to base political policy, I am quite alarmed.
While you are making a joke, this actually brings into question several of the assumptions underlying this model. The social networks employed by this model are very simple compared with real life. Even though they are rigged to have similar power-law statistics, the model used may not be able to reach useful results. Critical details in the social networking of super carriers and patient zero are handled poorly, IMHO and that's only based on the article, basic college stats and high school level intro to sociology.
For instance, for any STD model will have to take into account the many over layed and distinct networks of sexual interactions. Sexually active high school students such as in your teenage girl joke have a very different social network pattern from adults. Another pattern is common among college students. Trying to use the model from the article would lead to incorrect results for their population and would deviate significantly from reality.
It's always seemed to me that design and coding are more than a bit like buiding[sic] a house and using carpentry tools.
I find it funny that you and many other people use Carpentry as a metaphoric model for coding. However, after working as a carpenter for over half a year I have to say that it is appropriate.
The world's best carpenter won't build much of a house unless someone's done the design
Houses are built as a variation on a template for their entire neighborhood. In richer areas, more variation occurs, but then more money is poured into the project. In older areas, the variation in house styles is mainly due to renovation by the various tenets over the years.
Unfortunately, most code written is mostly re-inventing of the wheel at the design and implementation level. Closed source techniques necessitated this for a long time (the highly-copyrighted Numerical Recipes books, anyone?) Open source should change the re-inventing of the wheel, but I still see a lot of people re-inventing the wheel 6 or 7 times out of 10 projects. The 8th and 9th will probably shoehorn in a custom library of crufty utility code they wrote years ago for college homework.
But, you can't live in a design, so both skills are needed.
Never owned a house, have we? People who can't afford to spend a long time in a motel/hotel/vacation-resort will live in half finished (but up to code) houses and use kitchens that are being actively remodeled. Similarly, you can go grab open source projects from sourcefroge.net to do little more that compile and jump right in. If I recall correctly, I had to code a Ethernet driver module for the 1.7 kernel series. No driver existed for my card. My RedHat Linux 5.6 would loose network functionality after the install. I this any different from living in a multi-story house while the bathrooms on the other floors are being built?
In the end, people who stand around and argue that good carpenters don't need designs, or vice versa, miss their completion date and lose the customer.
A lot causes schedule slippage in both coding and carpentry. Both in carpentry and in programming projects regularly go over schedule. Customers are told that sickness and surprises will cause the schedules to slip on any construction. With programming projects it is hard to tell people that extra, unexpected work is needed. Showing customers the termite damage in a wall is easy, showing the hacks in a networking library is not.
The correct people and only the correct people talk to customers. These people typically are the people or work with the people who do the design. With coders/software-designers being stereotyped as uncouth and kept away from the customer, the design may not reflect reality. When the customer is not aware of what they are asking (i.e. requirements creep) it is easy to tell them that additional carpentry and materials are not free. Management and the Customer seem to think that additional software features are not free. Your customer facing people must know when to say 'No' and when to say 'it will cost THIS much,' not pander to the idea that coder-time is free because the results aren't physical.
With trim and paint to cover errors, you can get away with 'rules of thumb' in carpentry[1]. Some voids are needed to allow for expansion and contraction of joints. Management never seems to understand the need for well-defined APIs or plug-in architectures (let alone security or data integrity.) Plus, the computer is a little less tolerant of taking the software equivalent of power tools to the virtual memory manager.
Come to think of it, carpentry is a very bad model for programming[2].
------
1. Literally a thumb used as a ruler. With the massive non-squareness of some people's idea of a *square wall*
you have to hate the flexibility of wood over long periodic thermal cycling. Here's a hit: like with bad code, a slightly off wall creeps further out of square with t
S-U-C-K-S...in terms of copyrights and how they've been extended ad nauseum because the Disney cronies have a lot to lose in their mouse IP.
There is only one solution to the copyright problem in the USA: buy out Disney and public domain the mouse. If you get enough money together to tear out the heart of the evil, the evil will die.
With no more © on Mickey, there is no more need to propigate copyright on a 100 year-old badly drawn furry toon. So when 2023 comes around Disney won't have to pay the USA Coruption^H^HCongress to extend copyright beyond the maximum recorded human lifespan (not counting Biblical fictions.) Although, this could be considered rendering copyright eternal from a real, living citizen's point of view and thus consitutionally invalid.
(Unless the Senator clone of ex-Senator Sony Bono also runs into a tree while enjoying his massive copyright-supported fortune by snow skiing and gets another Bono copyright amendment passed by guilt, remorse and stupidity.)
The greatest contorl over per barell pricing is from the supply made available from oil producing states greatly controlled by OPEC. As world consumption increases and known stock piles decrease and cease over the next 30 to 50 years the price per barrell will continualy rise. And will certainly exceed 80$ a barell probably within the next five to ten years.
Everyone at the pump in the USA is just waiting to see what China does. If China uses closed loop technology such as this to handle their wastes, they will significantly reduce their environmental impact (at least from the landfill/watershed point of view.) If they don't, and cars are at least as popular in that large and populous country as in the USA, industrialization of China will put a huge demand on gasoline and lubricant quality oils.
Heck, in the midwest USA, if prices get above $45/barrel crude, everyone and their dog starts pumping oil from any hole in the ground they can find or make. While OPEC may want to avoid that, a highly industrial and mobile China (and gasoline guzzling Chinese military) could care less.
This is cryptography, so it's always talking about possibilities.
With 160 bits of hash, the probability that two pieces of data will hash to the same value is incredibly low. Using a brute-force technique, you'd have to use all of the computers on the planet for thousands of years to find a collision. This is, for all intents and purposes, "impossible", and thus the hash is effectively collision-free.
With the new findings, a wealthy organization could actually find a collision with a reasonable amount of money and time.
So? All that these two groups have done is prove that MD5 and SHA-1 are hashes, nothing more. There is also a known and finite probability that I could generate examples of hash collisions on SHA-256, SHA-512 (and on up to SHA-n) on my first try by typing gibberish into a hex editor.
While doing so wouldn't win me the fame of he MD5 and SHA-1 researchers, it is just as usefull as both results. Eventually all hashes will have collisions. Still, there are security nuts screaming to abandon MD5 and SHA-1 for a few more bits. They tend to forget that without (1) easy collision generation and (2) gerenation from an arbitrary message that neither of these are 'broken' for security use. Furthermore, neither of these techniques are more usefull in making (2) true than my random typing technique.
---------
Come to think of it, there are already a million monkeys on a million
typewriters, and Usenet is NOTHING like Shakespeare.
-- Houghton, Blair
I demonstrated a way of checking for
Wine to Rob last night that we really cannot fix or workaround, and if I
can think of it they certainly can too.
Basically if we start integrating workarounds into Wine, it'll lead to an
arms race we cannot possibly win. Better to ensure our users don't need
anything from that website.
This ActiveX/tool is nothing new.
I run a windows emulation tool, called Cedega, based on Wine. Cedega includes a lot of NDA covered hacks and proprietary tech to make Microsoft Windows based games work under a stock Linux install. Unfortunately, many programs from Microsoft Games such as Age of Mythology and Halo use nasty tricks to ensure they only run under 100% native Windows installations.
One favorite trick is forcing the MS memory loader to put the game's code in a specific location in memory[1]. Other VM systems often recognise this and refuse, thus blocking the game on non-Windows platforms. While this is but one trick used to lock gamers into M$ platforms, it is one that Wine would have to stoop pretty low to work around[2].
In fact, there is nothing stopping Microsoft from including this or similar code in a critical DLL or core API. If Wine couldn't port/replicate that code due to patent or other protection, Linux users could be stuck emulating old versions of Windows. And that would suck.
----------
1. M$ used to run VM's in special modes to support video games from the DOS era. If they didn't support people's old games a lot of people wouldn't upgrade for anything.
For example, to make the original SimCity run under Windows they check for that application and let it free memory and use that freed memory later. This, of course was a bug in SimCity but, being a closed-source program, Microsoft couldn't fix SimCity and instead had to hack up their VM for Windows 3.1.
2. However, instead of plying the code with hacks and workarounds, it would be nice if Wine supported plug-ins that could be used to adapt the system to certain badly written programs. Then Wine could develop normally and the plug-in writers could race Redmond for the desktop by themselves.
You see, every part of that expression makes total sense if you spend more than 2 nanoseconds thinking about it. Sheesh.
You math skills are excellent, but I question the critical reading that has been put into this article. Try thinking a little harder this time: by what criteria are you selecting your comments to make that 3%?
The problem with metrics (a science unto itself) is that they are frequently malformed, miscalculated and misunderstood. From reading the paper, I don't see where Samoladas, Stamelos, Angelis, or Oikonomou has done the basic engineering homework to clearly define any metrics. Certainly, such as you have, they throw numbers and equations around.
Unforuntely, without dimensions or expected values and lacking in definition and precision, the conclusion drawn from this and other indices they use is worthless. This paper has data, but the paper's conclusions require knowledge that hasn't and cannot be derived from the data since they are as you put it 'dimensionless numbers' and nothing more[1]. Dimensionless, meaningless numbers are okay as long as you realize that they are meaningless and don't try to conclude something from them. Metrics require a lot more substative though into where the are derived, the consuquences of various values, and implications of typical changes in value. I realize that none of that is 'math' but so should any reader of a paper purporting to make conclusions such as this one.
Reading this paper, at the most, I know that certain computable metrics (defined by their references) have values have been reported for certain OSS software projects. Furthermore, I know those projects have obtained values comperable to known values for traditional (closed source) examples in the literature. Unforuntely, I know that this tells me nothing.
The paper hand waves it's backing data with
Percentage of lines of comments with respect to the number of lines of code (PerCM) describes the self-descriptiveness of the code.
I can get 3% comment ratios by including a chunk of shakespear with every function. As long as I use shakespearian function and variable names, I'm certainly going to meet Samoladas, et al.'s criteria for descriptive.
The problem is that a LOT of comments, while describing the code, do not contribute anything.
For example:
Certainly, the old Sun driver code hits near the 2-5% mark. However, unless you're looking for comedy in the Linux kernel code comments, this doesn't help the maintainability or understanding of this line of code.
There are a lot of good metrics defined in the references for this paper and a lot of good research on maintainability was quoted. From reading this paper, however, I can say that this is not a reference that should join them nor does it say anything useful.
------
1. The metric Netwon defines force, the meters-per-second-squared defines acceleration and the kilogram defines mass. The equation F=MA relates these three quantities, but even in it's absence they have numerious properties they give to any assocated quanities. It is these properties and their implications that make Newtons and kilograms usefull. Quantities without dimension are rare in a real science, such as physics or biology and typically arise from equations that define them as well as any other
Let's automate more. We don't need grunt programmer's writing easily templatable code. We need smarter senior programmers writing templates.
...
Anything I see people doing repetitively, I look to automate. After all, isn't a computer nothing but an automaton doing the same thing over and over again?
OB Office Space:
That reminds me, I've got to change the covers on all the TPS reports. I hear middle managment has a new layout they want everybody to use.
If you can automate 90% of your boss's job, particularly the tracking and number crunching, you should look at eliminating him. Seriously, there are three kinds of people in a company: those that have money (investors,) those that bring in money (employees,) and the rest (overhead.) Improve your processes so that very little of the overhead is needed and you save a ton on salaries of spreadsheet managers.
Seriously, if your *middle* management is pared down to the minimum you will find that there are grunts doing a lot of work and a thin layer of people above them doing almost as much. By work, I mean things that bring in money or support bringing in money. Not overhead/busywork. Not 'mission' statement meetings.
However, the best way to eliminate costs is to have income that makes them tolerable. Otherwise there is no time/people/resources to do the things that keep a company alive (like training, strategy and long-term development.)
You've got a nicely steganographed "first post" there.
/users3 did Kubla Kahn A stately pleasure dome decree, Where /bin, the sacred river ran Through Test Suites measureless to Man Down to a sunless C.
Yeah, well thanks to this article, I'm trying to find hidden information in the fortune cookie at the bottom of this very same article:
In
So far all I've got is that either puns on computing terms or directions to asassinate Bill Gates while he sunbathes by a middle-eastern riverbank during a total eclipse of the sun.
If you and I were working on a document in SubEthaEdit you would see any changes I make as I make them, and I yours.
So, are you saying that basically it's multiplayer notepad?
create an activeX control that would format the harddrive and install linux...
Ah, the holy grail of shell-hungry Script Kiddies: the D3W1N1N4T0R!
<BSD>
As long as it runs the Depenguinator on first boot, no problem.
</BSD>
Okay, I know it's karma whoring/destroying but I cannot resist the obvious:
-- <Arcturus|BuF>, www.bash.org
The fact is, that the two companies merged. With any successful merger the outcome is that overall costs are cut...
Yeah, I know what 'two companies merged' really means.
I interned at a company in college that was 'merged' with another company. This was at a telecom company in the mid 1990's. One day there was a Big Boss type giving a lossy PowerPoint presentation on Big changes in the industry (i.e. the Inernet.) The next day all the old company's signs came down off the building. The day after that? I got to move from an intern cubicle to a manager's office. Of the hundreds of engineers on my floor, only a few of the interns and managers were left. Everybody got fired.
I watched super-programmers with 35 years of coding under their belts walk out and forge start-ups that made them personally rich. Meanwhile, the remaining interns^H^H^Hemployees toiled away on building 'glue' code. Once learning to do world-class software engineering, we now migrated data from the original, unsupported and well-designed systems to the new company's 'manadatory upgrade' (and piss-poor) products.
Oracle+Peoplesoft will be just as bad. I can garuntee that as soon as what's left of Peoplesoft finishes the needed 'glue' code to migrate Peoplesoft data into Oracle 11i or whatever there will be a sudden increase in PeopleSoft 'alumni.'
Any merger that *doesn't* cut jobs, surely at least, partially a failure. You may not embrace capitalism wholeheartedly, but look around you, it's not too bad.
Megers, feh! There are only stupid takeovers and product assimilation in the business world. Someone is either buying your top talent (never happens) or your top product (to shut it down.) If you couldn't hire away the top talent before, they won't stay now. Product closures is just capitalism in reverse. There is less competition and far too often the inferior product is the only product left in the market. People that think mergers are like happy marriges of two companies have never personally seen the look of pure greed on a pre-merger CEO's face.
I'm not bitter though, it's just that the idea of mergers and the reality of mergers have nothing to do with each other.
I don't disagree with what Linus is saying, but what difference does it make if 10 people are informed rather than 10 million
Because if those 10 are slightly brighter than your usual ScriptKiddie and are the only ones in that IRC channel to know about it, your security is screwed.
Do you think Bilbo Baggens would have escaped with the One Ring so easily had he put his precious under Golum's nose? No, keeping it hidden in his pocket let him steal away with the riches.
Security by obscurity typically means that only the theves and hooligans of the online world know about that one important vulnerability in your bank's accounting software. Any thief worth his money should know some vulnerabilities that only him and (God, original-developer, some-codemonkey-we-fired-yesterday) knows.
With 10 million people, obscurity is a little harder to achieve, but fixes come quicker. And you might hear that you shouldn't use your bank's webpage until they fix this-or-some-other bug. Unless you like random, large charges to your account, that is.
Sorry for the FUD, but obscurity doesn't work. Someone will find (scan) you.
Simply: If I trick you into agreeing to a legal contract, is it any good in court?
Last time I checked (I know, IANAL) if either party is entering into a contract with fradulent intentions, such as to sucker someone out of a page view after forcing them to sign a contract in which you promise to show them that page, then most courts will invalidate the contract. Additionally, if one of the parties invests money, significant time or effort on the basis of such promises, you can be sued for 'detriment' in a lot of the United States of good ol' libelous America.
I wouldn't put it past a spammer, caught by a legal action based on such a click-wrap license, to use tools like detriment laws to force the spamming victim to pay up to the spammer. It's a sick idea, but then I feel that these spammers are already taking advantage of everyone already in a very sick way.
Browser Beware, Indeed.
For instance, when Clu is about to kiss Yori, a friend of mine pointed out, "He better check his permissions."
Oddly enough, there is a full-featured permissions system in the game. Game Spot - PC Review of Tron 2.0. You have to obtain a set of permission bits matching or greater than the permission mask on something to use it.
----------
(Paraphrased from an unknown Mark)
Engine blueprints are not like software and tt is not always in the best financial interest of a company to charge for traditional products.
You mentioned:
This is like saying GM should open-source the blueprints for all their car engines. It's ridiculous. Valve put untold millions into HL2 development, and there's absolutely no incentive for them to just open the source, and there's a strong disincentive...
But then you turned around and said:
To ignore the economic constraints of development is breathtakingly naive.
Form those of us who've actually developed software and taken classes on economics, these statement are very naive. For all projects, the return on investment varies throughout its lifecycle. This contraint is often overlooked by shortsighted money grubbing middle management in the pursuit of next-quarter's margins. As mentioned in the article, which you obviously did not read, game software that once garndered much money for each small (post-release) investment reaches a point at which few profits can be obtained with even large investment.
With your competitors producting higher quality engines (for which you are getting zero royalties) and using newer storylines, you product cannot compete. In this situation, it makes sense save yourself the cost of distribution while ensuring people see your logos and discover the quality of your work. Corner isle loss leaders at supermarkets are the same idea. In the case of software, you are getting free adversiting, marketing and publicity from an existing product by releasing the source code.
If you had read the article, you would understand that companies such as Valve are moving away from selling cars like Half-Life 2 to renting fleets of vehicles with systems like steam. For GM, keeping a blueprint seceret is not possible since the engine has to pass safety inspections. Very few peices of software have such mission critical natures. GM pays an engineer to make and sign off on their blueprints, but so do software companies that make 911 telecom software. Once built, it is very easy to reverse engineer a car engine. For the purposes of patents and publishing rights, the detailed methods of engine operation may be widely published with only a working prototype. Binaries of game software are easily encrypted and copy-protected. Usually such protection is kept until it interferes with enough of the customer base and generates enough bug reports to warrent removal.
According to modern studies 95% of all in-house software fits the criteria for F/OSS release policy. Those fortunate enough to adopt service models, like content distribution via Valve's Steam or support offerings like RedHat's Enterprise Linux, are getting continual revinue which scales very well. (I'd much rather pay the taxes on $0 million in sales now and $4 million in income over the next 5 years than $500k from sales now with nothing to show for the next 5 years.)
If you are an avid Linux user, might I recommend: There is a lot of power in indexing stuff so you can find it. For Google and other companies looking at your desktop, there may even be profit in doing so.
With over 30 Gb of stuff in my
However you may have somewhat of a point concerning these toolbars from commercial vendors. But, I know what my tools are doing since I read the sources (insert hacked compiler discussion here.) This is just one power that FOSS gives to me.
I hope that whatever profit is to be made will have to come at the cost of preserving as much of the users privacy as is possible. Fortunately, Google's motto is 'try not to do evil.' Unfortunately, if they don't release an OSS version of whatever toolbar they develop for Linux, I may not be able to trust it enough to use it for the reasons I mentioned above.
Though I don't think hitting the corporations financially as punishment really works.
-- Michael Fraase, When Elephants Dance.
Note that this has nothing to do with capitalism, but everything to do with a messed up legal equivalence between real living people and fictious collections of paper.
In the US if a *real* person kills someone we put them in jail for life or kill them. If a company kills someone we take some of their money, pat them on the back and send them on their way. It is the pervese opossite of the idea of making the punishment fit the crime. However, since companies already get all the benefits and rights of *real* people, it is simple to put a company on the same level of responability as *real* people
When a company kills someone, force the company to disband. When a company breaks a law that would put someone in jail, suspend that company's operations for the same amount of time.
The problem is that you would complaign about individuals in that company not getting paid during the suspension or after disbanding the company. I counter that within such a harsh environment, the only companies left and the resulting corporate culture of responsibility would self-police. Since most companes in the US are very small (95% have under 50 people according to U.S. Bureau of Labor Statistics) this would mainly be helping force small business owners to wake up to the negative impact of their (far too often) stupid choice. This scales all the way up to a national mega-corporation. If his job and those of many people who know his home address were at stake for every stupidity he did, CEO's wouldn't be green-lighting projects like SPAM. As it is, golden parachuts, very lightweight white-collar crime punishments and corporate greed make SPAM and standover tactics an everyday part of US life.
Gimp didn't take me hours to learn - once you figure out the whole right-click thing, what's so difficult?
Right-handed, eh? I'm not. One small thing I give myself is to setup my personal workstation at home as left-handed. However, with F/OSS a left-handed person (a programmer in this case) can really see how much more difficult Good UI design and workflow is compared with other coding. In far too many F/OOS applications, some actions are awkward or take excessive amounts of unexpected toggling between left- and right-click behavior.
MS got this correct a long time ago by putting that policy where it belonged: in the mouse management system, verses in the application or window manager or current focused terminal. They also realized that the five or so extra windows of a non-MDF paint tool really clutters up the desktop space when any complex multi-image integation work is being done. This created an expectation for paint tools to look and behave this way.
Microsoft and Apple customers have long held paint programs to a higher standard. This relatively small tool show such a high standard for painting. Too bad the implementation language is bent on encouraging such a usefull app to be Microsoft-only.
While the Gimp may be an acceptable 'image manipulation' program (read: photo touch-up app) it is only about on par with Paint Shop Pro 3.0 (from the mid-1990s) in actual painting features. I can use ImageMagik convert scripts to replace the things that the Gimp does well, but I cannot use the Gimp to replace the quality of a paint program with functional pencil tool.
I've used a few graphics packages over the years (Photoshop 1.x-3.x, Paint Sho Pro 2.x-5.0, MS Paint, ImageMagik) to develop graphical elements for internal and external application and website content. Since early 0.x versions, I have never been able to use the Gimp well. I have taken mini-tutorials online and read several How-to's. Sure, I can do basic things like image conversion with the Gimp. But the more useful parts of other programs like Paint Shop Pro, like the drawing tool, are very under developed in the Gimp.
One could say that each painting application has a certain style, one more realistic while another more cartoonish. I agree with the Gimp's developers that it's style is simply one more suited for photo touch up, and unlike PaintDotNet, not for actual image creation.
That doesn't stop someone else from being able to easily create art with the Gimp. However, PaintDotNet, being focused on image creation - painting - and not image maniplulation should be able to do that well.
Today, we have two languages (XHTML and CSS) instead of one (HTML), and while it certainly does a lot to improve interoperability and platform independence, it is two languages to learn, not one. Throw in stuff like JavaScript, and you have even more.
It's too bad that CSS and XHTML are taught as two seperate languages. These two languages could be introduced as one 'language' with two different views of your conent and inline CSS were in use. The distinction for XHTML as logial markup and CSS for lyaout markup, much like in other document standards, could be emphasized much later in the learning process. Some of the learning overhead could be avoided.
However, to do something like the Firefox extension that matches this new search feature from Google, you'd still have to learn another language. Such a procedural language in which the text directly specifies something is very different from a markup that decorates embedded or external content. The typical slashdotter, I expect, would have little trouble bridging this conceptual gap. However, as with the difference between Geek searching and 'normal' people's searching, the average person is neither willing nor able to do so.
Fortunately, while I may have just defined the average person as someone unable to implement Google's search feature, they are still willing to pay someone to do it for them and their company.
the first thing i'd fabricate would be another fabricator.
So, how much do would these things weight? I figure, at $10,000 a pound for the first one, I'd ship one to the Moon. Add some solar cells, a radio remote control and a remote-controled from Earth mini-foundry to gind raw material out of regolith and you've got a sure fire way to make space access cheaper. Now you only need to send up people.
Heck, cook up a good enough biological fab, and you don't even need to send people: just dial the fab for a replacement set when you've gotten your metric to imperial conversions wrong on your Mars lander.
(Yes, I know NASA wrote a plan for something like this. However, step one for NASA was building fully-autonomous and human-level intellegent robots, which does not help your cost estimates. A remote-controlled fab would be [ahem] dirt cheap.)