OpenBSD has a number of features to do the "transparent" routing which you desire - basically, you can plug in two interfaces and route from one to the other without changing the packets at all. The OpenBSD box basically looks just like a hub or a dumb switch to its peers, eg, it doesn't even have an IP address assigned to either interface, it doesn't decrement ttl, it doesn't do TCP optimizations, etc. As far as I know, this is not possible with Linux and it sounds like this is exactly what you want. See this page for more information.
If you're looking for a matlab clone, I would recommend GNU octave over scilab. But this doesn't make a difference, as I don't see how matlab could be useful to high school students. Even for university students, it's more of a "work horse" tool for when you have vector/matrix data which you need to process somehow - not too much of an educational tool.
When people say "Linux is ready for the desktop" I stop listening. They've been saying that for years and I'm still keeping Linux as far away from my aging mother as possible. However, when you say "Linux is ready for schools," I'll agree. Honestly, I don't see why high school students would need more than the most basic word processing needs (unless you're taking a vocational class to get an office job or something, in which case MS Office is required - but that's an exception, not the norm).
The way I see it, schools need the following kinds of software:
Basic word processing software, in case a student needs to type up a paper. Abiword or Staroffice should work fine.
Web browser for "research." Mozilla and Konqueror are more than adequate.
Specific "educational" software - that is, programs that teach typing, multimedia foreign language stuff, and perhaps some sort of math/graphics program to use instead of a graphing calculator (matlab and mathematica are far too complex to put into a high school calculus course - you'll spend days just figuring out how to use the damned things).
Point is, this third class of programs is OS-agnostic and these are the type of programs which "itch" - eg, you won't find me spending my free time writing tax software, but writing a learn-to-type program might be lots of fun.
As for MS Access, I'd say keep that as far away from students as possible. When the non-geek types see Access, they figure it's just like Excel with some more programming stuff thrown in. Access stunts the understanding of relational databases and basic set theory. Same thing for Powerpoint - we don't need a generation who can only communicate in bullet points.
I support the extreme view of free software for the same reason that a large portion of my charity giving goes
to PeTA. Same deal.
PeTA has done more to alienate me from the animal rights movement than they could have possibly imagined. I'm very left-wing in all of my politics (some people accuse me of being a socialist - and that doesn't bother me). I would in principle agree with animal rights, but when the movement's proponents act in such immature manners and appeal to only emotion rather than attempting to convince in a logical manner, they lose all my respect.
Even though I don't particularly like the mass fur/agriculture/animal product industry and I'm very wary of showing even the slightest support for any corporate interest, I'll vote against anyone who's a member of PeTA and I'll oppose most legislation that PeTA proposes, not out of rational judgment of the legislation, but just to show that I in no way can support PeTA. That's right - if I'm undecided about some law and I find out PeTA is pushing this law, I won't judge the law based on its merits, but I'll vote against it because that's how much PeTA pisses me off.
Be wary of extremists - they can hurt your movement.
... they don't force you take a first year
english course.
...they don't force you to take a first-year English course.
You forgot the preposition on the infinitive; probably a typo.
In English, all noun and adjective forms of the word English are always capitalized.
The reputation is well deserved.
The reputation is well-deserved.
When you form a single, inseparable adjective out of more than one word, you must hyphenate the words; eg, well-deserved reputation, first-year course, thirty-year-old professor, etc.
You always here
complaining about coders not knowing how to comment code. Not being able to stick to schedules. Not being
able to write good documentation. Not being able to attain correct specifications from the customer. Etc, etc,
etc.
You always hear complaints about coders not knowing how to comment code, not sticking to schedules, lacking communication skills, not attaining correct specifications from customers, etc.
"Hear" and "here" are completely different words.
Avoid the passive voice.
Avoid sentence fragments.
Etc, etc, etc is a cliché; it was funny in The King and I but shouldn't be over-used.
Normally, I don't go off correcting other people's grammar (it's fast way to piss off people - watch my karma drop to 47 for a demonstration), but when you preach the importance of good English skills while at the same time displaying poor grammar, you are, as they say, "asking for it."
If you are a non-native speaker, your English is excellent (much better than my foreign languages); I would recommend picking up The Chicago Manual of Style which speaks about some of the finer points of formal, idiomatic English. However, if you are a native speaker, please don't preach about the importance of good English as it only discourages those who had to learn it as a second language.
I disagree. Your first example is good, concise code, while your second is far more difficult to read. If you want to express something, why not use English?
if (isNotNull && isNotEmpty) { // not defined for this class
If I ever saw your code, I would change it on the spot to this second way.
After looking through the rest of the function and seeing that those boolean variables are only used once, I would change it to your first example. Come back in a month and look at the two examples - see which one takes longer to read and figure it (even it it's only one half second, those one-half seconds add up quickly).
Never introduce boolean variables which are only used in one top-level statement, unless it's to make your code fit in 80 columns.
Really, you're giving very bad advice, and I'm only responding so I won't have to deal with other people taking your example.
In fact, I can't believe you came up with this idea from a book - I'm guessing you came up with this on your own. I ask you to please point out the book which gives this advice, so I can avoid it. Someone else already noted Code Complete which explains that using "Not" in a variable name is bad practice (as opposed to using "!"). I would also like to point out The Practice of Programming which says the same thing (don't use "Not") and also gives some advice on avoiding cutesy, pointless one-shot booleans instead of just inserting a simple English comment.
This is nasty because the programmer is trying to be cute with the macro. However, if you see this:
for (;;) {
And it pisses you off, that means you haven't seen enough of other people's code yet. This is perfectly idiomatic and it reads as "for ever." Don't try to invent new idioms, or apply Pascal and Java idioms to C and C++. If someone prefers "for (;;)" that's purely a stylistic decision, and it's a valid stylistic decision since a lot of C and C++ programmers do that.
Real code shouldn't look like pseudocode: it should be idiomatic and idiomatic C++ looks nothing like pseudocode. Consider, for instance, looping over an STL collection using an iterator: that looks nothing like pseudocode (where you would just say "for each x in y" or something similar), but it should be perfectly recognizable to any C programmer (eg, you can recognize it as a for-each with a glance, without stopping and thinking - important cognitive distinction).
Summary:
C:
for (;;) {
or
while (1) {
In C++, you can also use:
while (true) {
But you should never use "while (true)" in C because a given project might use boolean types defined by six different APIs (all incompatible - so just use an int instead).
All three of the above are in common use in C++ and getting pissed whenever you see one of them indicates a lack of the "interpersonal skills" managers are always talking about.
// calculates the square root of X using Newton's // method and subsequently uses this to invoke... // throws: SomeStupidException void Foo::bar(double x) { ... }
This is very bad. The comment above Foo::bar belongs in foo.h, not foo.cc. I should never have to read your.cc/.cpp/.cp files in order to use them. The comments in foo.cc should only explain clever tricks, workarounds, etc. There are two purposes for comments: (1) defining interfaces to reuse some code later and (2) describing unusual or unexpected ways of doing things. (1) belongs only in header files. (2) belongs mostly in.cc files, but can also go in headers if there's something particularly nasty afoot. This makes it easy to look at a particular project and get a good idea of how things interact, without worrying about details.
I work more with C than with C++, but the exact same rule applies (which is not always true - there is no such language as "C/C++" and what is idiomatic for one is completely awkward in the other). Modern idiomatic C dictates that you separate your code into "modules" with a.h and a.c file for each "module.".c files should only be found alone if they don't export any functions that are used in another.c file (eg, they only "use" modules rather than implement anything). The distinction should be made explicit by declaring module-local functions as 'static'
Another thing I find quite useful is using the "MVC" paradigm (Model, View, Controller). A concrete example: any web-based database application, like slashdot, for instance. The "Model" part is the actual database schemas. The "Interface" part generates HTML. The "Controller" part is the only part that actually constructs any SQL statements. Your controller has good APIs if you can completely change your database schemas without changing any code in the "Interface" part. Generally, well-designed systems like this require comments to define the "Controller" APIs, and don't have too many comments elsewhere.
Someone else has already mentioned The Practice of Programming and I'd like to chime in that this is an excellent book.
You can still do tilde escapes in ssh or at least openssh.
Also works with ssh.com's ssh:
ssh: SSH Secure Shell 3.1.0 (non-commercial version) on sparc-sun-solaris2.8 Supported escape sequences: ~. - terminate connection ~^Z - suspend ssh ~# - list forwarded connections ~- - disable escape character uncancellably ~? - this message ~~ - send the escape character by typing it twice ~V - dump version information to stderr ~s - dump statistics and connection information to stderr ~r - initiate rekey immediately with old algorithms (ie. changes encryption and integrity keys) ~l - go to line mode (keystrokes are gathered to an internal buffer, and will be output all at once when you enter a newline) (Note that escapes are only recognized immediately after newline.)
I suspend sessions all the time. Lots of fun when you bounce around hosts, eg, ssh from A to B, from B to C, from C to D, etc. You have to remember to hit ~ the correct number of times to suspend to the right machine.
Call this telephone number. This number is maintained by the three credit reporting agencies and it allows you to "opt-out" of certain marketing games; basically, this means the three credit reporting agencies will no longer be allowed to give your credit report to marketers, but only to people with whom you actually have business.
Ford is a legitimate business; if you don't "opt-out," they can get a credit report on you. I opted out and I've never done business with Ford, so this story doesn't affect me.
Another nice thing about using this number to "opt-out": I no longer receive any junk mail. No more pre-approved credit cards, no more free offers, no more anything. I now look forward to checking my mail every day, as it only contains only bills and personal correspondence. I also say "put me on your do-not-call list" to telemarketers and I don't watch TV, so live in an almost completely ad-free world. It's a very nice world and I invite you in.
My supicion is that if it came out into the
open, the nazism would face a backlash from people who now don't worry about it because it's all
underground.
Excellent point.
An example of this very idea: Jean-Marie Le Pen would have been a forgotten nobody had he lost to Jospin. However, Le Pen won, and look at the affect this had: immense protests in the streets, by both left-wingers and right-wingers. People actually took the guy seriously, which meant that they spread word of his ideas. Once these ideas were recognized as overtly fascist, he was recognized for the demagogue that he was and he lost in the most decisive vote in French history.
You will not find in Nietzsche any doctrine of racial superiority..
This is completely wrong. Read The Genealogy of Morals again. Note where Nietzsche introduces the Jewish race and what purpose Jews serve throughout this essay. Jews are the "slave race" whereas Romans are the "master race." I don't care what point he's trying to make by using this as an example; there is no way that the conclusion can be considered non-racist in any way.
Geneology of Morals, Essay 2, section 7:
pain did not hurt as much as it does now; at least that is the conclusiona doctor may arrive at who has treated Negroes (taken as representatives of prehistoric man--)
Essay 1, section 8:
Did Israel not attain the ultimate goal of its sublime vengefulness precisely through the bypath of this "Redeemer" [Jesus]. Was it not the secret black art of truly rand politics of revenge... that Israel must itself deny the real instrument of its revenge before all the world... so that "all the world," namely all opponnents of Israel, could unhestatingly swallow just this bait?
These aren't just "soundbytes" taken out of context; read the entire texts and you'll see they're quite in context.
I'll note that I don't know any German and read Nietzsche in translation. I'll agree that there may be some danger to this, and I try to read the original text whenever I know the language (which would be for French, Italian and English).
When we discussed Nietzsche in class, the professor was trying to downplay this anti-semitism. I didn't push too hard on it, as it wasn't central to the issue at hand, but the only response I received was that Nietzsche hated Christians as well. However, that does not matter: anti-semites are not necessarily Christians. You can hate Christians, Jews, Muslims and Hindus, but that still means you hate Jews.
Basically, this is how I see it: Nietzsche had some important new ideas, so he should be studied. However, he was also anti-semitic and racist. That doesn't matter: the apologists attempt to show that Nietzsche was not anti-semitic in order to convince others to study his ideas. A lot of people (especially Americans) will completely discard someone's writing if they find that person racist. Not me; I'm willing to consider Nietzsche's words and ideas in and of themselves.
Nietzsche was racist. Get over it. The people who can't get past this fact and stop reading and listening when they see a few racist words are not worth considering.
I've read Mein Kampf. I went to a prestigious private university in the US where this was required reading in our Western Civilizations course.
(In the US, all the top universities force all their students to go through certain "core" classes, which means that engineers have to take humanities courses and poets have to take calculus.) While your culture may remember why Mein Kampf is banned in Germany, ours doesn't. I didn't understand hatred until I read Hitler; I didn't understand racial superiority until I read Nietzsche. To be honest, I still don't quite understand it, but I can now recognize how it starts.
When unemployed programmers post to slashdot to complain about how all the jobs are being taken by Indians with H-1B visas, I recognize the danger. Although I'm extremely pissed at the job market right now, I know I have to control these feelings, which are absolutely no different from those of the French who voted for Le Pen, hoping to ameliorate the "immigration situation."
We are all taught tolerance, but in some cases, intolerance is more moral. Without the free dilution of ideas, how am I supposed to know what to tolerate and what not to tolerate? I may have joined in with those slashdotters complaining about "Indians taking our jobs" had I not read Le Pen recently - remember, I was already pissed. I was, however, able to see how they were putting forth the exact same arguments as Le Pen, and I realized the direction in which they were headed.
You've pointed out that Germans are less likely to stand up for unimpeded speech out of idealism, but rather deal with the issue out of sheer pragmatism. How does one learn hatred? I say it can only come about after immense propaganda and repetition. You do not suddenly go from toleration to hatred by listening to one speech or reading one book; it takes years of "brainwashing," for lack of a better term. When an open-minded people learn to recognize hidden hatred agendas and the same fascist arguments, rather than continue listening, they turn their heads in disgust.
The fascists always use the same arguments and the same methods: they won't tell you about their agenda of hatred outright, at least not right away. First, they instill outrage. They'll start off by demonstrating the "collapse" of a nation, economically and morally. They'll appeal to unemployed and the under-employed. The second step is an appeal to history: they'll explain how great the nation was in the past, and how it's now falling apart. The third and final step is to lay the blame on a minority.
Some examples of these methods: the American white supremacists begin with an anti-affirmitive action agenda. They attempt to show how the qualified are losing jobs to the less-qualified simply out of race. The second step of the American white supremacist is to identify himself with American history: here, you'll find lots of flag-waving. A few years ago, I encountered an advertisement for a KKK rally. What I found particularly of note was that they stated only certain flags would be allowed at the rally, including the flag of the Vatican (Holy See) and the American flag. Their third step involves crime statistics about inner-city black youth. By this point, the agenda is clear.
When slashdot ran that story about the H-1B visas a week ago, I recognized step one. One person in particular was already at step three. I saw the progression and I closed my browser.
Now, from where did I recognize this progression? Did I originally see this in American white supremacist propaganda? Did I see this in Le Pen's anti-immigration ideas?
I originally saw this in Mein Kampf, in the part where Hitler explains his blue-collar days in Vienna. Did the anti-Indian slashdotters read Mein Kampf? I'm willing to wager that they didn't. It didn't take openly fascist literature to plant the start of hatred, but it did take fascist literature for me to recognize it.
Read these posts carefully, and then read about Hitler's description of his working days in Vienna, and tell me what you find. It's quite disturbing.
You linked to some of your previous posts which make some interesting points. I'll reciprocrate: this regarding freedom of speech and this regarding the limits of democracy. You'll note from the context that not only are certain people willing to forcefully silence extremists, but they are also willing to forcefully silence those who would disagree with the extremists and yet stand up for the extremists' right/privilege to speak.
assume that I wan't to be a
programmer or an engineer.
Good writing is critical. Go to college, and not a technical two-year
college, but a traditional four-year university program. Don't be
afraid to go to a college that has a "common core" requirement, or
something similar. Reading Plato and Weber will not help you be a
better systems administrator, but writing about Plato and Weber and
having access to a real professor who can actually give you helpful
information about how to improve your writing is an invaluable
experience.
When employers talk about "interpersonal skills" or a "people person," they mean exactly two things:
You can communicate clearly and efficiently.
You're not an arrogant asshole.
If you have a full command of the English language, PHBs eat that up. I've found that there are three things that management can't get enough of:
Transaction-based systems. When you write your department's
payroll/vacation time database, don't just keep track of the final sums
- instead, make each paycheck a transaction; perhaps keep a running sum
of the totals for efficiency.
Logging for accountability. Have your print server keep track of
how many pages were sent to each printer by IP address. Then, when
your printing budget runs out halfway through the year, you can say
"Over 40% of pages printed came from HR!"
Keep them informed. Log every minute change you make, and talk to
your boss even if he isn't tech-saavy. Your boss might not know how to
use SQL, so figure out interesting statistics that you can glean from
your database and put it together in a quarterly report. Your boss
might not know perl, so throw together scripts to parse your web server
logs and put that into a quarterly report; and, don't be insulted when
your boss wants to buy a $40 program that parses your logs and puts
together reports, which your boss likes better than analog or the other
free log analyzers. This is not a sign that your management doesn't
believe you possess the skills necessary to throw together a perl
script; this is a sign that your management understands you have better
things to do with your time, and $40 is a pittance compared to the time
it will save.
Point (3) is where the writing comes in. It is absolutely critical,
and a simple spellcheck/grammar check/automated thesaurus will not
improve your communication.
In addition to communication skills, you'll need the right attitude to
be a successful sysadmin. Basically, the way to achieve this attitude
is to remember that you're not the reason the company is there: your
role is a facilitator. You don't drive the business - you
ensure the business runs smoothly. If your boss asks you to do some
routine technical support, don't respond that that sort of thing is
"below" you. If the CEO's secretary doesn't understand some setting in
her email program, explain it to her, briefly and sans holier-than-thou
attitude.
However, if you have ideas on how to improve efficiency, share them
immediately. In fact, I would recommend that you occasionally visit
other parts of your company to see if they need any help. I've noted
this strange phenomenon: some departments may not have a real technical
person working for them. They'll have the general technical support
staff which is limited to ensuring PCs run smoothly. This department
will then continue receiving new tasks to do routinely, and, since they
don't have a technical person with them, won't figure out that certain
jobs can be automated. I'm talking about things like printing out
reports from the unix server to type the data into excel; cutting and
pasting data from excel into an editor to reformat it for some database
app; scanning through hundreds of text documents by eye, in combination
with word's search features because they don't know how to use grep
from the command line. Every large company has lots of trivial things
like this that can be automated, and you should search for them,
because non-technical people won't realize these tasks can be
automated.
At some point, they surely were
planning to cash in.
Here's the real problem with Napster IMHO. No business model - no income. This is why there's no love lost from me now that napster's finishing its death throes.
How exactly are you going to make a profit with something like Napster? Please don't tell me through ads. It's only now that people are figuring out ads don't provide enough revenue to run a business. Look at Kazaa (nevermind the capitalization thing - that is so stupid). Kazaa had banner ads in its client. Didn't make them enough money, so they resorted to bundling their product with spyware. This will also inevitably fail.
If Naptster had gone to a subscription-type service (in its heyday, when it actually had music on it), it would have failed. The only reason Napster was successful, IMHO, was that, by default, it would share any files you downloaded. Thus, people who don't dig through options dialogs before using a program ended up sharing all their files, unwittingly. The Tragedy of the Commons is the principle that one should apply here - if you give people the choice between sharing their files (and their bandwidth) and just leeching off others, they'll leech, and they won't even feel guilty about it.
Now, if you would actually pay for a service like Napster, you would have to evaluate why you're paying for the service and what you're getting for your money. Word would get out that sharing doesn't help you in any way, and in fact can hurt you as it takes away bandwidth.
If Napster had gone to a subscription service where you would pay less if you were sharing more files, people would begin crapflooding it. Taking stuff from/dev/random, appending an ID3 tag and sticking.mp3 at the end. I can do this with dd and perl, but, for the windows users, all sorts of little utilities would pop up on tucows.com that allowed them to do this.
If they had gone to a subscription service where you get unlimited bandwidth for paying (and everyone who doesn't pay has a download rate limit), people would end up hacking clients to get rid of the limit if it were client-side, and sharing Napster accounts (perhaps even on Napster) if the limit were server-side. I can think of a bunch of technical things you could do to combat this, but the point is that people would try to find a way around it. And especially if you're paying for Napster's bandwidth you would evaluate whether or not you want to allow downloads.
Subscription models were possible with Napster as it kept data on its servers; this is not really possible with Kazaa or the other modern p2p networks. However, this is a double-edged sword - the RIAA proved that Napster was responsible for its data since it was server-side, and with a subscription model, Napster would not just be gratuitously providing data, but would be actively selling copyrighted materials. I don't know if there's really a big legal difference here, as the RIAA can force whatever court outcome it wants.
Also, keeping the data server-side meant that Napster had to pay huge bandwidth bills. With Kazaa, they pay much smaller bandwidth bills as they only send authentication and search queries from their servers, not the actual mp3/mpg/whatever data. Bandwidth is very expensive.
I'm glad these p2p network companies are dying. However, I don't like why they're dying. They shouldn't die because the RIAA has enough cash to force any legal outcome; they should die because they have no business model. I'd like to see the free market, not the monopolistic RIAA, determine the outcome.
19% had "received an unwanted sexual solicitation" (imprecisely defined)
Very imprecisely defined indeed. You make the excellent point that this "unwanted sexual solicitation" may be from classmates and peers.
However, I believe these kids were talking about something else. What were they thinking about when they answered this question, you ask? Well, ask yourself (as an adult) where you receive the most "unwanted sexual solicitation."
I'm guessing this sexual solicitation comes not from 60-year-old balding perverts in trenchcoats or from more-or-less innocent classmates. It comes from advertisers. Unscrupulous advertisers. The ones that spam you with herbal viagra offers, penis enlargement schemes and links to hot teen websites with cascading javascript popups, both through email and in instant messaging/chat rooms. I haven't used instant messaging since the heydays of ICQ, so they may have fixed this by now - but, considering the morals of these sub-humans, I wouldn't be surprised if they figure out ways around anti-advertisement measures (or, more likely, they pay a hungry programmer to figure it out for them).
If there's any good that can come about from these parents' misdirected rage, it's that perhaps they'll convince congress to put restrictive sanctions on advertisers, severly limiting advertisers' possibilities.
Thanks - this looks pretty cool. When I do Linux (rarely, I usually use FreeBSD instead), I always go with slackware. This looks really nice - they have an answer to ports and the install program looks right up my alley:)
Cool. Sounds like the best solution. Not that it would be too difficult when I see 'zsh: no such file or directory:/usr/bin/perl', but this is more elegant (holding together old systems using symlinks like duct tape leads to sheer madness).
furthermore, given the fact that you are a unix system programmer, i find it very strange that it takes you 3
days to set up dvd playback on your linux box, whereas it took me 2hours max. using google i found &
compiled mplayer. libdvdcss, libdvdread
Problem is, I type 'Linux DVD' into google, I get to the livid web site (which is down right now). From there, I understand that 'oms' is the player to use, but apparently, that's not actively developed anymore.
When you search google for 'Linux DVD,' you don't get any web pages that point to xine or mplayer, at least at first. The only way I heard about these projects was through slashdot. Now, someone just mentioned vlc, so there's another choice.
So, it seems I have four options: oms, xine, mplayer and vlc. I could go and install all of them to make a comparison, but finding the right css plugin for each takes time. OTOH, I could go through mailing list archives to see which one is actively developed. If you go by the Linux DVD howto, it recommends oms and doesn't mention the other options, so it actually leads you in the wrong direction. That document must be rewritten or trashed.
I actually tried both oms and xine, and xine didn't do sound sync - it wasn't just slightly annoying on my slower system, but it meant all I heard was a bunch of pops and silences, perhaps punctuated with seconds of the film's sound.
DVDs aren't that important to me. I have a lot of machines available to me, and the only one that has a DVD instead of a regular CD-ROM or a CDR drive is my laptop - it came with DVD, no choice. I don't want to put together a machine with an Athlon XP 2000+, a gig of DDR, an expensive 32 meg video card, etc. just to play a DVD, since playing DVDs is entertainment I can do without. The laptop never had windows on it, but I'm assuming that I would be able to watch DVDs with it if I installed Windows (otherwise, it wouldn't have come packaged with a DVD drive). Actually, the only reason I put Linux on it instead of FreeBSD was because I was hoping at some point to use it for DVD playback.
Anyway, I can empathize - with the possibility of the MPAA hunting down Linux DVD developers, I wouldn't write DVD software, especially since I live in the US.
IMHO, the "visceral dislike" comes from several factors, including outdated ideas about what X is and how
well it works (the performance claims I see around here sometimes crack me up), insufficient appreciation of
the difficulty of what X does, and NIH syndrome.
Disclaimer: I'm an X11 programmer. I love X. Allows me to install matlab on only one machine but use it from anywhere (instead of buying 30 licenses for the 30 people that would occasionally use it), wrote my own window manager since everyone else's window manager got at least something wrong, and the X11 APIs are extremely clean and elegant - especially if you compare it to say, win32 SDK.
Here's why I think the kids don't like X nowadays:
Athena toolkit. Occasionally they'll find a scrollbar that they can't figure out how to use (pre-version 21 emacs) or buttons used for popping up menus (like xfontsel or gv), and it's pretty damned ugly.
I don't know how to solve this problem: XFree86 programs like xfontsel, bitmap or xvidtune shouldn't depend on GTK or QT, but at the same time, we should limit exposure to Athena. At least use Xaw3d instead.
Fonts still suck. XFree86 4.2 doesn't come with any truetype fonts, you have to recompile QT and set an environment variable to even get konqueror to look decent, old apps like netscape won't ever use truetype fonts and even getting netscape to display legible text involves venturing through Dante's ninth level.
This problem can probably be solved by the Linux distributers - include decent truetype fonts, set up QT correctly, etc. I imagine they're probably doing this at this point, but I don't keep up with them.
Configuration still sucks. Only once - once - did I find that XF86Setup correctly set up a graphics card, and I've worked with a lot of machines. Same deal with "X -configure" on XF86 4.x. I have to fix XF86Config on every machine, and a number of times, I rewrote the thing from scratch as the default template is extremely long and verbose (eg, it has commented-out examples of how to set up multi-monitor systems, something I've never seen in all my years of computing). In addition, the little XF86Config generators still won't set up vital options such as ZAxisMapping, so you end up editing it by hand anyway. They still expect you to know your monitor's sync frequencies, which is absolutely unreasonable.
Solution to this problem? The config generators must be fixed. This is really a very, very big problem. I shoudn't ever have to choose my graphics card from a drop-down list - the config generator program should figure out what graphics card I have by snarfing its PCI id. "X -configure" does this, but it's none too friendly and still doesn't make for a usable XF86Config - it should be integrated with something like XF86Setup from the 3.x days, which allowed you to also set the various other options. No keyword should be added to XF86Config until the config generators are updated to set up the new option.
I've never managed to watch a DVD using Linux/XFree86. I'm a unix systems programmer, so I'm not some noob who's afraid to read docs - however, the last time I checked, oms still doesn't do sound sync, so it's completely useless. In XFree86 4.1, the ATI drivers were completely broken and wouldn't correctly do DGA, etc on every ATI card I've seen. It's much better now with XFree86 4.2, but it's extremely dangerous to say that watching DVDs in Linux is feasible at this point. This will only encourage the neophyte to actually try it - they'll have to upgrade and recompile their kernel, upgrade their XFree86, mess with some crap in/proc to enable DMA on their DVD drive, get a CVS checkout of oms as the published tarballs are outdated, search for the correct css plugin, as there are at least three different ones, and then, maybe, perhaps, they can try to see if it will even work. I didn't write down the crap I went through while trying this, so I'm missing a whole bunch of steps here - suffice it to say, this will take a few days. If you try to run quake3 or any other 3D game under Linux, you'll run into the same things.
Solution to this problem? Cut back on the advocacy. Let's be honest and admit that very few people will be able to watch DVDs or play newer games in Linux at this point.
Now all my old scripts will break. It wasn't until about a year ago that I started using "#!/usr/bin/env perl" instead of "#!/usr/bin/perl". Are they expecting me to symlink, or what?
firstname_lastname, which was pretty annoying in many instances (such as
email forms that did not allow _,...)
This is highly annoying.
We have a very cool sendmail setup - it interfaces with our directory database, so, while my username is "flastnam" (first initial, first seven of last name), I get mail to f-lastname@, first-lastname@, first.lastname@, lastname@, etc. Ambguities are solved by bouncing the email, with a friendly message explaining exactly how our system works.
We have another neat feature with our sendmail setup - you can append a plus sign and any arbitrary string to the username part of your email address. So, Sybase thinks I'm lastname+sybase@domain.com, Amazon thinks I'm lastname+amazon@domain.com, etc. I now get zero spam and even I've caught one company selling my email address (and that email address was promptly procmailed away, for good).
The annoying part? Stupid, idiotic web programmers who've never heard of rfc822. They don't think the plus sign is a valid character for an email address. In actuality, an email address can contain almost anything except '@', a '%' or a '!'. Yes, email addresses can even contain spaces if you quote them: "FirstName LastName"@domain.com is a perfectly valid email address. For some reason, these web programmers write their regular expressions to only include certain characters, rather than to exclude the illegal characters. To these web programmers, I say: read rfc793, especially section 2.10. Your "security" principals are unsound: you shouldn't be passing any user input to anything that might interpret it as a shell command (can happen in perl if you're not careful), and SQL statement (happens in a lot of php code that I see that doesn't use addcslashes() or friends), or be putting your user input anywhere near an unchecked buffer (poorly-written C programs).
But enough of the rant. The non-rant portion of this message is that you might want to investigate separating your email address namespace and your username namespace. We do this, and it's quite nice.
OpenBSD has a number of features to do the "transparent" routing which you desire - basically, you can plug in two interfaces and route from one to the other without changing the packets at all. The OpenBSD box basically looks just like a hub or a dumb switch to its peers, eg, it doesn't even have an IP address assigned to either interface, it doesn't decrement ttl, it doesn't do TCP optimizations, etc. As far as I know, this is not possible with Linux and it sounds like this is exactly what you want. See this page for more information.
When people say "Linux is ready for the desktop" I stop listening. They've been saying that for years and I'm still keeping Linux as far away from my aging mother as possible. However, when you say "Linux is ready for schools," I'll agree. Honestly, I don't see why high school students would need more than the most basic word processing needs (unless you're taking a vocational class to get an office job or something, in which case MS Office is required - but that's an exception, not the norm).
The way I see it, schools need the following kinds of software:
Point is, this third class of programs is OS-agnostic and these are the type of programs which "itch" - eg, you won't find me spending my free time writing tax software, but writing a learn-to-type program might be lots of fun.
As for MS Access, I'd say keep that as far away from students as possible. When the non-geek types see Access, they figure it's just like Excel with some more programming stuff thrown in. Access stunts the understanding of relational databases and basic set theory. Same thing for Powerpoint - we don't need a generation who can only communicate in bullet points.
PeTA has done more to alienate me from the animal rights movement than they could have possibly imagined. I'm very left-wing in all of my politics (some people accuse me of being a socialist - and that doesn't bother me). I would in principle agree with animal rights, but when the movement's proponents act in such immature manners and appeal to only emotion rather than attempting to convince in a logical manner, they lose all my respect.
Even though I don't particularly like the mass fur/agriculture/animal product industry and I'm very wary of showing even the slightest support for any corporate interest, I'll vote against anyone who's a member of PeTA and I'll oppose most legislation that PeTA proposes, not out of rational judgment of the legislation, but just to show that I in no way can support PeTA. That's right - if I'm undecided about some law and I find out PeTA is pushing this law, I won't judge the law based on its merits, but I'll vote against it because that's how much PeTA pisses me off.
Be wary of extremists - they can hurt your movement.
You forgot the preposition on the infinitive; probably a typo.
In English, all noun and adjective forms of the word English are always capitalized.
The reputation is well deserved.
The reputation is well-deserved.
When you form a single, inseparable adjective out of more than one word, you must hyphenate the words; eg, well-deserved reputation, first-year course, thirty-year-old professor, etc.
You always here complaining about coders not knowing how to comment code. Not being able to stick to schedules. Not being able to write good documentation. Not being able to attain correct specifications from the customer. Etc, etc, etc.
You always hear complaints about coders not knowing how to comment code, not sticking to schedules, lacking communication skills, not attaining correct specifications from customers, etc.
"Hear" and "here" are completely different words.
Avoid the passive voice.
Avoid sentence fragments.
Etc, etc, etc is a cliché; it was funny in The King and I but shouldn't be over-used.
Normally, I don't go off correcting other people's grammar (it's fast way to piss off people - watch my karma drop to 47 for a demonstration), but when you preach the importance of good English skills while at the same time displaying poor grammar, you are, as they say, "asking for it."
If you are a non-native speaker, your English is excellent (much better than my foreign languages); I would recommend picking up The Chicago Manual of Style which speaks about some of the finer points of formal, idiomatic English. However, if you are a native speaker, please don't preach about the importance of good English as it only discourages those who had to learn it as a second language.
Why would you ever do this:
instead of this:
If I ever saw your code, I would change it on the spot to this second way.
After looking through the rest of the function and seeing that those boolean variables are only used once, I would change it to your first example. Come back in a month and look at the two examples - see which one takes longer to read and figure it (even it it's only one half second, those one-half seconds add up quickly).
Never introduce boolean variables which are only used in one top-level statement, unless it's to make your code fit in 80 columns.
Really, you're giving very bad advice, and I'm only responding so I won't have to deal with other people taking your example.
In fact, I can't believe you came up with this idea from a book - I'm guessing you came up with this on your own. I ask you to please point out the book which gives this advice, so I can avoid it. Someone else already noted Code Complete which explains that using "Not" in a variable name is bad practice (as opposed to using "!"). I would also like to point out The Practice of Programming which says the same thing (don't use "Not") and also gives some advice on avoiding cutesy, pointless one-shot booleans instead of just inserting a simple English comment.
Of course, I meant "C++ programmer" here. This is to stave off the trolls.
This is nasty because the programmer is trying to be cute with the macro. However, if you see this:
And it pisses you off, that means you haven't seen enough of other people's code yet. This is perfectly idiomatic and it reads as "for ever." Don't try to invent new idioms, or apply Pascal and Java idioms to C and C++. If someone prefers "for (;;)" that's purely a stylistic decision, and it's a valid stylistic decision since a lot of C and C++ programmers do that.
Real code shouldn't look like pseudocode: it should be idiomatic and idiomatic C++ looks nothing like pseudocode. Consider, for instance, looping over an STL collection using an iterator: that looks nothing like pseudocode (where you would just say "for each x in y" or something similar), but it should be perfectly recognizable to any C programmer (eg, you can recognize it as a for-each with a glance, without stopping and thinking - important cognitive distinction).
Summary:
orIn C++, you can also use:But you should never use "while (true)" in C because a given project might use boolean types defined by six different APIs (all incompatible - so just use an int instead).C:
All three of the above are in common use in C++ and getting pissed whenever you see one of them indicates a lack of the "interpersonal skills" managers are always talking about.
First of all, keep your comments confined mostly to your header files. That is,
This is very bad. The comment above Foo::bar belongs in foo.h, not foo.cc. I should never have to read your .cc/.cpp/.cp files in order to use them. The comments in foo.cc should only explain clever tricks, workarounds, etc. There are two purposes for comments: (1) defining interfaces to reuse some code later and (2) describing unusual or unexpected ways of doing things. (1) belongs only in header files. (2) belongs mostly in .cc files, but can also go in headers if there's something particularly nasty afoot. This makes it easy to look at a particular project and get a good idea of how things interact, without worrying about details.
I work more with C than with C++, but the exact same rule applies (which is not always true - there is no such language as "C/C++" and what is idiomatic for one is completely awkward in the other). Modern idiomatic C dictates that you separate your code into "modules" with a .h and a .c file for each "module." .c files should only be found alone if they don't export any functions that are used in another .c file (eg, they only "use" modules rather than implement anything). The distinction should be made explicit by declaring module-local functions as 'static'
Another thing I find quite useful is using the "MVC" paradigm (Model, View, Controller). A concrete example: any web-based database application, like slashdot, for instance. The "Model" part is the actual database schemas. The "Interface" part generates HTML. The "Controller" part is the only part that actually constructs any SQL statements. Your controller has good APIs if you can completely change your database schemas without changing any code in the "Interface" part. Generally, well-designed systems like this require comments to define the "Controller" APIs, and don't have too many comments elsewhere.
Someone else has already mentioned The Practice of Programming and I'd like to chime in that this is an excellent book.
The name of the command is actually "nc" - like any proper unix tool it has a terse, easy-to-chord-type name ("n" and "c" are on different fingers :)
Also works with ssh.com's ssh:
I suspend sessions all the time. Lots of fun when you bounce around hosts, eg, ssh from A to B, from B to C, from C to D, etc. You have to remember to hit ~ the correct number of times to suspend to the right machine.
Good point. Click here to see that a whole bunch of websites list this number, so I'm not making it up.
Call this telephone number. This number is maintained by the three credit reporting agencies and it allows you to "opt-out" of certain marketing games; basically, this means the three credit reporting agencies will no longer be allowed to give your credit report to marketers, but only to people with whom you actually have business.
Ford is a legitimate business; if you don't "opt-out," they can get a credit report on you. I opted out and I've never done business with Ford, so this story doesn't affect me.
Another nice thing about using this number to "opt-out": I no longer receive any junk mail. No more pre-approved credit cards, no more free offers, no more anything. I now look forward to checking my mail every day, as it only contains only bills and personal correspondence. I also say "put me on your do-not-call list" to telemarketers and I don't watch TV, so live in an almost completely ad-free world. It's a very nice world and I invite you in.
Excellent point.
An example of this very idea: Jean-Marie Le Pen would have been a forgotten nobody had he lost to Jospin. However, Le Pen won, and look at the affect this had: immense protests in the streets, by both left-wingers and right-wingers. People actually took the guy seriously, which meant that they spread word of his ideas. Once these ideas were recognized as overtly fascist, he was recognized for the demagogue that he was and he lost in the most decisive vote in French history.
This is completely wrong. Read The Genealogy of Morals again. Note where Nietzsche introduces the Jewish race and what purpose Jews serve throughout this essay. Jews are the "slave race" whereas Romans are the "master race." I don't care what point he's trying to make by using this as an example; there is no way that the conclusion can be considered non-racist in any way.
Geneology of Morals, Essay 2, section 7: pain did not hurt as much as it does now; at least that is the conclusiona doctor may arrive at who has treated Negroes (taken as representatives of prehistoric man--)
Essay 1, section 8: Did Israel not attain the ultimate goal of its sublime vengefulness precisely through the bypath of this "Redeemer" [Jesus]. Was it not the secret black art of truly rand politics of revenge ... that Israel must itself deny the real instrument of its revenge before all the world ... so that "all the world," namely all opponnents of Israel, could unhestatingly swallow just this bait?
These aren't just "soundbytes" taken out of context; read the entire texts and you'll see they're quite in context.
I'll note that I don't know any German and read Nietzsche in translation. I'll agree that there may be some danger to this, and I try to read the original text whenever I know the language (which would be for French, Italian and English).
When we discussed Nietzsche in class, the professor was trying to downplay this anti-semitism. I didn't push too hard on it, as it wasn't central to the issue at hand, but the only response I received was that Nietzsche hated Christians as well. However, that does not matter: anti-semites are not necessarily Christians. You can hate Christians, Jews, Muslims and Hindus, but that still means you hate Jews.
Basically, this is how I see it: Nietzsche had some important new ideas, so he should be studied. However, he was also anti-semitic and racist. That doesn't matter: the apologists attempt to show that Nietzsche was not anti-semitic in order to convince others to study his ideas. A lot of people (especially Americans) will completely discard someone's writing if they find that person racist. Not me; I'm willing to consider Nietzsche's words and ideas in and of themselves.
Nietzsche was racist. Get over it. The people who can't get past this fact and stop reading and listening when they see a few racist words are not worth considering.
I've read Mein Kampf. I went to a prestigious private university in the US where this was required reading in our Western Civilizations course. (In the US, all the top universities force all their students to go through certain "core" classes, which means that engineers have to take humanities courses and poets have to take calculus.) While your culture may remember why Mein Kampf is banned in Germany, ours doesn't. I didn't understand hatred until I read Hitler; I didn't understand racial superiority until I read Nietzsche. To be honest, I still don't quite understand it, but I can now recognize how it starts.
When unemployed programmers post to slashdot to complain about how all the jobs are being taken by Indians with H-1B visas, I recognize the danger. Although I'm extremely pissed at the job market right now, I know I have to control these feelings, which are absolutely no different from those of the French who voted for Le Pen, hoping to ameliorate the "immigration situation."
We are all taught tolerance, but in some cases, intolerance is more moral. Without the free dilution of ideas, how am I supposed to know what to tolerate and what not to tolerate? I may have joined in with those slashdotters complaining about "Indians taking our jobs" had I not read Le Pen recently - remember, I was already pissed. I was, however, able to see how they were putting forth the exact same arguments as Le Pen, and I realized the direction in which they were headed.
You've pointed out that Germans are less likely to stand up for unimpeded speech out of idealism, but rather deal with the issue out of sheer pragmatism. How does one learn hatred? I say it can only come about after immense propaganda and repetition. You do not suddenly go from toleration to hatred by listening to one speech or reading one book; it takes years of "brainwashing," for lack of a better term. When an open-minded people learn to recognize hidden hatred agendas and the same fascist arguments, rather than continue listening, they turn their heads in disgust.
The fascists always use the same arguments and the same methods: they won't tell you about their agenda of hatred outright, at least not right away. First, they instill outrage. They'll start off by demonstrating the "collapse" of a nation, economically and morally. They'll appeal to unemployed and the under-employed. The second step is an appeal to history: they'll explain how great the nation was in the past, and how it's now falling apart. The third and final step is to lay the blame on a minority.
Some examples of these methods: the American white supremacists begin with an anti-affirmitive action agenda. They attempt to show how the qualified are losing jobs to the less-qualified simply out of race. The second step of the American white supremacist is to identify himself with American history: here, you'll find lots of flag-waving. A few years ago, I encountered an advertisement for a KKK rally. What I found particularly of note was that they stated only certain flags would be allowed at the rally, including the flag of the Vatican (Holy See) and the American flag. Their third step involves crime statistics about inner-city black youth. By this point, the agenda is clear.
When slashdot ran that story about the H-1B visas a week ago, I recognized step one. One person in particular was already at step three. I saw the progression and I closed my browser.
Now, from where did I recognize this progression? Did I originally see this in American white supremacist propaganda? Did I see this in Le Pen's anti-immigration ideas?
I originally saw this in Mein Kampf, in the part where Hitler explains his blue-collar days in Vienna. Did the anti-Indian slashdotters read Mein Kampf? I'm willing to wager that they didn't. It didn't take openly fascist literature to plant the start of hatred, but it did take fascist literature for me to recognize it. Read these posts carefully, and then read about Hitler's description of his working days in Vienna, and tell me what you find. It's quite disturbing.
You linked to some of your previous posts which make some interesting points. I'll reciprocrate: this regarding freedom of speech and this regarding the limits of democracy. You'll note from the context that not only are certain people willing to forcefully silence extremists, but they are also willing to forcefully silence those who would disagree with the extremists and yet stand up for the extremists' right/privilege to speak.
Good writing is critical. Go to college, and not a technical two-year college, but a traditional four-year university program. Don't be afraid to go to a college that has a "common core" requirement, or something similar. Reading Plato and Weber will not help you be a better systems administrator, but writing about Plato and Weber and having access to a real professor who can actually give you helpful information about how to improve your writing is an invaluable experience.
When employers talk about "interpersonal skills" or a "people person," they mean exactly two things:
If you have a full command of the English language, PHBs eat that up. I've found that there are three things that management can't get enough of:
Point (3) is where the writing comes in. It is absolutely critical, and a simple spellcheck/grammar check/automated thesaurus will not improve your communication.
In addition to communication skills, you'll need the right attitude to be a successful sysadmin. Basically, the way to achieve this attitude is to remember that you're not the reason the company is there: your role is a facilitator. You don't drive the business - you ensure the business runs smoothly. If your boss asks you to do some routine technical support, don't respond that that sort of thing is "below" you. If the CEO's secretary doesn't understand some setting in her email program, explain it to her, briefly and sans holier-than-thou attitude.
However, if you have ideas on how to improve efficiency, share them immediately. In fact, I would recommend that you occasionally visit other parts of your company to see if they need any help. I've noted this strange phenomenon: some departments may not have a real technical person working for them. They'll have the general technical support staff which is limited to ensuring PCs run smoothly. This department will then continue receiving new tasks to do routinely, and, since they don't have a technical person with them, won't figure out that certain jobs can be automated. I'm talking about things like printing out reports from the unix server to type the data into excel; cutting and pasting data from excel into an editor to reformat it for some database app; scanning through hundreds of text documents by eye, in combination with word's search features because they don't know how to use grep from the command line. Every large company has lots of trivial things like this that can be automated, and you should search for them, because non-technical people won't realize these tasks can be automated.
Here's the real problem with Napster IMHO. No business model - no income. This is why there's no love lost from me now that napster's finishing its death throes.
How exactly are you going to make a profit with something like Napster? Please don't tell me through ads. It's only now that people are figuring out ads don't provide enough revenue to run a business. Look at Kazaa (nevermind the capitalization thing - that is so stupid). Kazaa had banner ads in its client. Didn't make them enough money, so they resorted to bundling their product with spyware. This will also inevitably fail.
If Naptster had gone to a subscription-type service (in its heyday, when it actually had music on it), it would have failed. The only reason Napster was successful, IMHO, was that, by default, it would share any files you downloaded. Thus, people who don't dig through options dialogs before using a program ended up sharing all their files, unwittingly. The Tragedy of the Commons is the principle that one should apply here - if you give people the choice between sharing their files (and their bandwidth) and just leeching off others, they'll leech, and they won't even feel guilty about it.
Now, if you would actually pay for a service like Napster, you would have to evaluate why you're paying for the service and what you're getting for your money. Word would get out that sharing doesn't help you in any way, and in fact can hurt you as it takes away bandwidth.
If Napster had gone to a subscription service where you would pay less if you were sharing more files, people would begin crapflooding it. Taking stuff from /dev/random, appending an ID3 tag and sticking .mp3 at the end. I can do this with dd and perl, but, for the windows users, all sorts of little utilities would pop up on tucows.com that allowed them to do this.
If they had gone to a subscription service where you get unlimited bandwidth for paying (and everyone who doesn't pay has a download rate limit), people would end up hacking clients to get rid of the limit if it were client-side, and sharing Napster accounts (perhaps even on Napster) if the limit were server-side. I can think of a bunch of technical things you could do to combat this, but the point is that people would try to find a way around it. And especially if you're paying for Napster's bandwidth you would evaluate whether or not you want to allow downloads.
Subscription models were possible with Napster as it kept data on its servers; this is not really possible with Kazaa or the other modern p2p networks. However, this is a double-edged sword - the RIAA proved that Napster was responsible for its data since it was server-side, and with a subscription model, Napster would not just be gratuitously providing data, but would be actively selling copyrighted materials. I don't know if there's really a big legal difference here, as the RIAA can force whatever court outcome it wants.
Also, keeping the data server-side meant that Napster had to pay huge bandwidth bills. With Kazaa, they pay much smaller bandwidth bills as they only send authentication and search queries from their servers, not the actual mp3/mpg/whatever data. Bandwidth is very expensive.
I'm glad these p2p network companies are dying. However, I don't like why they're dying. They shouldn't die because the RIAA has enough cash to force any legal outcome; they should die because they have no business model. I'd like to see the free market, not the monopolistic RIAA, determine the outcome.
Very imprecisely defined indeed. You make the excellent point that this "unwanted sexual solicitation" may be from classmates and peers.
However, I believe these kids were talking about something else. What were they thinking about when they answered this question, you ask? Well, ask yourself (as an adult) where you receive the most "unwanted sexual solicitation."
I'm guessing this sexual solicitation comes not from 60-year-old balding perverts in trenchcoats or from more-or-less innocent classmates. It comes from advertisers. Unscrupulous advertisers. The ones that spam you with herbal viagra offers, penis enlargement schemes and links to hot teen websites with cascading javascript popups, both through email and in instant messaging/chat rooms. I haven't used instant messaging since the heydays of ICQ, so they may have fixed this by now - but, considering the morals of these sub-humans, I wouldn't be surprised if they figure out ways around anti-advertisement measures (or, more likely, they pay a hungry programmer to figure it out for them).
If there's any good that can come about from these parents' misdirected rage, it's that perhaps they'll convince congress to put restrictive sanctions on advertisers, severly limiting advertisers' possibilities.
Thanks - this looks pretty cool. When I do Linux (rarely, I usually use FreeBSD instead), I always go with slackware. This looks really nice - they have an answer to ports and the install program looks right up my alley :)
Cool. Sounds like the best solution. Not that it would be too difficult when I see 'zsh: no such file or directory: /usr/bin/perl', but this is more elegant (holding together old systems using symlinks like duct tape leads to sheer madness).
Problem is, I type 'Linux DVD' into google, I get to the livid web site (which is down right now). From there, I understand that 'oms' is the player to use, but apparently, that's not actively developed anymore.
When you search google for 'Linux DVD,' you don't get any web pages that point to xine or mplayer, at least at first. The only way I heard about these projects was through slashdot. Now, someone just mentioned vlc, so there's another choice.
So, it seems I have four options: oms, xine, mplayer and vlc. I could go and install all of them to make a comparison, but finding the right css plugin for each takes time. OTOH, I could go through mailing list archives to see which one is actively developed. If you go by the Linux DVD howto, it recommends oms and doesn't mention the other options, so it actually leads you in the wrong direction. That document must be rewritten or trashed.
I actually tried both oms and xine, and xine didn't do sound sync - it wasn't just slightly annoying on my slower system, but it meant all I heard was a bunch of pops and silences, perhaps punctuated with seconds of the film's sound.
DVDs aren't that important to me. I have a lot of machines available to me, and the only one that has a DVD instead of a regular CD-ROM or a CDR drive is my laptop - it came with DVD, no choice. I don't want to put together a machine with an Athlon XP 2000+, a gig of DDR, an expensive 32 meg video card, etc. just to play a DVD, since playing DVDs is entertainment I can do without. The laptop never had windows on it, but I'm assuming that I would be able to watch DVDs with it if I installed Windows (otherwise, it wouldn't have come packaged with a DVD drive). Actually, the only reason I put Linux on it instead of FreeBSD was because I was hoping at some point to use it for DVD playback.
Anyway, I can empathize - with the possibility of the MPAA hunting down Linux DVD developers, I wouldn't write DVD software, especially since I live in the US.
Disclaimer: I'm an X11 programmer. I love X. Allows me to install matlab on only one machine but use it from anywhere (instead of buying 30 licenses for the 30 people that would occasionally use it), wrote my own window manager since everyone else's window manager got at least something wrong, and the X11 APIs are extremely clean and elegant - especially if you compare it to say, win32 SDK.
Here's why I think the kids don't like X nowadays:
I don't know how to solve this problem: XFree86 programs like xfontsel, bitmap or xvidtune shouldn't depend on GTK or QT, but at the same time, we should limit exposure to Athena. At least use Xaw3d instead.
This problem can probably be solved by the Linux distributers - include decent truetype fonts, set up QT correctly, etc. I imagine they're probably doing this at this point, but I don't keep up with them.
Solution to this problem? The config generators must be fixed. This is really a very, very big problem. I shoudn't ever have to choose my graphics card from a drop-down list - the config generator program should figure out what graphics card I have by snarfing its PCI id. "X -configure" does this, but it's none too friendly and still doesn't make for a usable XF86Config - it should be integrated with something like XF86Setup from the 3.x days, which allowed you to also set the various other options. No keyword should be added to XF86Config until the config generators are updated to set up the new option.
I've never managed to watch a DVD using Linux/XFree86. I'm a unix systems programmer, so I'm not some noob who's afraid to read docs - however, the last time I checked, oms still doesn't do sound sync, so it's completely useless. In XFree86 4.1, the ATI drivers were completely broken and wouldn't correctly do DGA, etc on every ATI card I've seen. It's much better now with XFree86 4.2, but it's extremely dangerous to say that watching DVDs in Linux is feasible at this point. This will only encourage the neophyte to actually try it - they'll have to upgrade and recompile their kernel, upgrade their XFree86, mess with some crap in /proc to enable DMA on their DVD drive, get a CVS checkout of oms as the published tarballs are outdated, search for the correct css plugin, as there are at least three different ones, and then, maybe, perhaps, they can try to see if it will even work. I didn't write down the crap I went through while trying this, so I'm missing a whole bunch of steps here - suffice it to say, this will take a few days. If you try to run quake3 or any other 3D game under Linux, you'll run into the same things.
Solution to this problem? Cut back on the advocacy. Let's be honest and admit that very few people will be able to watch DVDs or play newer games in Linux at this point.
Dude - wrong article.
Now all my old scripts will break. It wasn't until about a year ago that I started using "#!/usr/bin/env perl" instead of "#!/usr/bin/perl". Are they expecting me to symlink, or what?
This is highly annoying.
We have a very cool sendmail setup - it interfaces with our directory database, so, while my username is "flastnam" (first initial, first seven of last name), I get mail to f-lastname@, first-lastname@, first.lastname@, lastname@, etc. Ambguities are solved by bouncing the email, with a friendly message explaining exactly how our system works.
We have another neat feature with our sendmail setup - you can append a plus sign and any arbitrary string to the username part of your email address. So, Sybase thinks I'm lastname+sybase@domain.com, Amazon thinks I'm lastname+amazon@domain.com, etc. I now get zero spam and even I've caught one company selling my email address (and that email address was promptly procmailed away, for good).
The annoying part? Stupid, idiotic web programmers who've never heard of rfc822. They don't think the plus sign is a valid character for an email address. In actuality, an email address can contain almost anything except '@', a '%' or a '!'. Yes, email addresses can even contain spaces if you quote them: "FirstName LastName"@domain.com is a perfectly valid email address. For some reason, these web programmers write their regular expressions to only include certain characters, rather than to exclude the illegal characters. To these web programmers, I say: read rfc793, especially section 2.10. Your "security" principals are unsound: you shouldn't be passing any user input to anything that might interpret it as a shell command (can happen in perl if you're not careful), and SQL statement (happens in a lot of php code that I see that doesn't use addcslashes() or friends), or be putting your user input anywhere near an unchecked buffer (poorly-written C programs).
But enough of the rant. The non-rant portion of this message is that you might want to investigate separating your email address namespace and your username namespace. We do this, and it's quite nice.