I don't think you have any moral or ethical obligation toward
piracy at all, beyond what the organization itself does. You are
neither the copyright holder or a law-enforcement agency. It's not
your job to keep attendees on the straight-and-narrow.
That being said, you will need to think about this from a
liability standpoint. I suggest you consult a lawyer and get him or
her to advise you on what sort of policy to set up with an eye on
protecting your organization from liability. Since you're a charity,
it may be possible to get one to work pro bono.
No, REXX is shit. It sucks, it bites, it blows syphilitic goats
through coffee stir-sticks. I'd compare it to the aborted offspring
of third-generation addiction research monkeys if the Crackmonkey
Defense League wouldn't picket me for it.
Why, I hear you ask, am I so violently opposed to this allegedly
powerful "scripting" "language"? It's because I once had to use it.
I wrote a test harness with it. You know, one of those things
that scripting languages are supposed to be good for? You'd think
REXX would make such a task easy, wouldn't you? You'd be wrong.
How do I hate REXX? Let me count the ways:
REXX doesn't have procedures.
You know? Procedures, aka functions aka subroutines? Those handy
little things that let you subdivide your complex tasks into lots of
simple ones? Ain't gottem'.
What it has is a kind of GOSUB-with-arguments that it
pretends are real procedures and look enough like them that they
fooled me until it was too late.
REXX's pretend procedures are just labels.
See, when you find a procedure definition in a reasonable scripting
language, it's a no-op, right? It's either an expression that creates
the procedure then and there or it's a thing that the interpreter finds
in the source code before it starts running the program. Either way,
when running through the code, the interpreter just sort of does
nothing immediate when it finds a procedure definition.
So all we scripting hacks need to remember to do is to define our
procedures before we use them, right?
Well, in REXX, they're labels. As soon as the thread of execution
reaches a fake procedure, it wanders right in, up until it hits the
RETURN statement, at which point it's an error if you're lucky or a
return from some unexpected function if you're not.
And kazam! Good programming habits go unpunished.
And let's not think about the sort of spaghetti code this, uh,
feature can lead to. No, really, let's not.
Local Variables Aren't.
Since the pretend procedures are just labels, there has to be some
way to monkey around with the scope to get something like local
variables, right? There is. And it's vile.
There's a command (whose name I've mercifully forgotten) which
creates a new global scope. You call it in your
pretend-procedure and ta-da, everything's local now. Hooray, unless
you want to actually access a real global variable. But they thought
of that--the command lets you list the variables from the previous
scope that you want to access and they get stuck into the new scope.
So far, so good, right?
The problem is that these scopes nest. So if
fake-procedure FOO needs to write to global variable BLAT and declares
it in its scope-creation thingy, this works fine if you call FOO from
the mainline.
But what if function BAR calls FOO? Well then, the BLAT that FOO
writes to will belong to BAR's scope unless BAR also declares
BLAT to belong to the previous scope. And if QUUX calls BAR, the same
thing happens.
So if you want to modify a global variable from a function you
have to make sure that every function that can conceivably be part
of its call chain cooperates. And if you mess up and don't find
all of those cases, there's no warning or error message.
Y'know, there are other problems with REXX but they're not as
bad. At least, I could have worked around them if I'd had a decent
procedure system. A lot of language brokenness is tolerable if you
only ever need to solve it once. REXX doesn't give me even that
capability.
To be balanced, I should say some nice things about it:
It's much less horrible than OS/2 batch files. I'll even go so
far as to say that if all you've got on hand is REXX and your program
isn't going to be more than 60 lines or so, you're all set.
When people complain to me about some of the irritations in
Python or PHP or Perl, I just tell them about REXX and they go away.
Hack the phishing server, fire up a torrent tracker and post a link to some US chart music or movie downloads.
Hmmm. Has anyone written a combined tracker/torrent link site program? You know, something that's both a tracker and a website for uploading torrent links? That way, you can piss off^W^Wkill two birds with one stone.
I have one of these. I used to use it to write in the subway.
(That was a while back. These days, I'd have to drive for an hour to
get to a subway and I've invested in a (used) Thinkpad running Linux.)
Pros:
It's cheap. You don't have to worry too much about it getting stolen.
It has a really nice keyboard. Modern laptops pale in comparison.
They're very, very light.
They're pretty durable, due in part to their lightness and
because they have no moving parts.
They have a standard RS-232 serial port and a zmodem (IIRC)
transfer program. I was able to move my work to my PC without too
much trouble.
The built-in word processor uses plain ASCII text, so no decoding
is necessary.
Powered on ordinary AA batteries.
Ludicrous battery life. I managed to get a couple of weeks' use
out of each set.
No WiFi, games or anything else to distract you from writing.
There may still be a user community for them. There are
certain niche uses that the Model 100 filled that nobody else has
managed to get to.
Cons:
Limited storage. There's (IIRC) 32K of (battery-backed) RAM. I
found I could fill that pretty quickly, although not in a day. As
long as you offload your work to a real computer regularly, you should
be fine.
The word processor seems to have some O(n) algorithms in it. I
found that as my documents got longer, certain types of movement
(e.g. page down) would get progressively slower. But this wasn't bad
enough to make it unusable.
The display is pretty small. You get maybe six lines of text on
it, which may or may not be a showstopper. I found I could deal with
it but that was irritating.
Also, the display is flat, flush with the unit. This makes it
more durable but is a pain to keep staring at.
Built-in BASIC. Ewwwwwww!
The system software was one of the last projects that Bill Gates
worked on personally. So you'll need to wipe it down with holy water
every couple of years to get rid of the evil buildup.
Anyway, the Tandy 100 et. al. are pretty much what you want.
Also, it has two advantages over pencil and paper:
You can type in your text.
You can transfer your work to a computer without having to retype it.
Right now, copyright law regulates the act of making copies. The
copyright holder is allowed to prevent anyone from making
copies of their work, even if those copies never see the
light of day.
If I copy a CD I purchased onto my hard drive, then erase the file
without ever listening to it, I've committed copyright infringement.
It's considered legal (in Canada) as an exemption to copyright
law.
This is why SODRAC (a Canadian copyright body) pushed to get an
levy on ISPs. After all, routers make copies of the copyrighted
content they push around.
So far, the courts have acknowledged that this sort of
thing--copies that nobody ever sees--are fair use but I think this
highlights a fundamental incompatibility between traditional copyright
law and the digital age.
I say, copyright law should explicitly allow all copying
unless it grants unauthorized access to the work to another
person. I should be allowed to make however many copies of my
purchased content as I want. If I want to fill my hard drive with
MP3s of Oops! I Did It Again, I should be allowed to as long
as I've paid for the right to listen to it (by buying one copy
somewhere) and I've taken reasonable precautions to keep more than
one person from listening to any of my copies at a time.
Kevin Smith may be the one of the few directors who can cast Affleck well. Honestly, I've really liked the majority roles
he's played in Smith's movies.
It's not Affleck's acting ability that's the problem. It's just that the man can't pick a good film role to save his life. He does Kevin Smith movies as a favour to Smith and those are good roles because Smith makes good movies. Daredevil was crap despite Affleck's work.
Also, I can't believe I'm discussing Ben Affleck on Slashdot.
How could a blog site - or whatever kind of site for that matter
- host and run keylogging software?
It has nothing to do with blogs themselves. Websense is just
trying to cash in on the sudden popularity of blogs. The problem is
with any free web hosting service.
When crackers subvert systems using browser exploits, they have to
host those exploits on a web page. Since web hosting is inherently
traceable--the hosting company has to have your payment details--this
is tricky to do without getting caught. However, free hosting sites
like Geocities et. al. make it easy to host web pages anonymously.
Your typical cracker signs up with one of those hosting companies
using a bogus name and address, then puts up a page full of exploits
and tries to trick people into visiting that page. If the hosting
company notices and takes it down, the cracker just does it again.
Presumably, the various free blogging sites out there can be abused
in a similar way and it sounds a whole lot better for Websense to talk
about a new thing than a problem that's existed for a decade or
so. Of course, the public blogging sites ought to be that much easier
to lock down just because they're structured web services. A generic
web hosting site needs to let its users install their own ActiveX
controls and Javascript but a blog doesn't.
In conclusion, it is my opinion that Websense are being
grandstanding media whores.
We are planning on accepting advertising, but the plan for that is simple - your ad dollars won't buy you a good review if your product
doesn't stand up to it's claims, period.
Unfortunately, we can only have your word for that. For all we know, you're giving good reviews in exchange for big advertising sales.
You might consider selling ads for a different class of product than you're reviewing--e.g. consumer electronics, candy, etc.--but even then, the way everything's consolidated would keep you from being above suspicion.
(Note: I'm not accusing you of anything. I'm just saying that it's very difficult to demonstrate your honesty.)
One of the problems with Linux is that there is too much choice.
You make a valid point. However, the people who use Linux right now want the choice.
A lot of the confusion, I think, stems from people thinking of Linux as the operating system. Actually, the Linux distribution is the operating system. The Linux kernel is really just a component of it[1]. So each distribution is really a different operating system but the whole family of them can (usually, we hope) run all of the same programs.
It's like, if Linux is ketchup, then RedHat is Heintz. And it doesn't explode if you pour it on fries made by a different vendor.
As it happens, there are Linux distributions that don't offer you all that choice. It just depends on which one you pick, how newbie-friendly it's trying to be and how well it manages to achieve that goal.
[1] I realize that it's more complicated than that--I'm trying to describe it in terms of what end-users see.
well, a bunch of people have suggested that 302s should only be
honored by crawlers if the domain is the same.
The problem with that is that there are legitimate cases where
302s need to go across domains. For example, I own a domain name and
use a commercial DNS provider to forward requests to my current ISP's
webspace. If I change ISPs, that will change so I want Google to
treat my domain name as the canonical name of my website.
Alternately, someone using temporary hosting to handle a sudden
surge of bandwidth might use 302s in the short term but would want
Google to continue to associate the pages with the forwarding domain.
Of course, if you amend the suggestion to "honour 302s if the
domain is the same or if the destination site has metatags naming
the originator as part of the site", you end up with my original
suggestion.
why do you say that? how is the web broken because of the way
google crawls it?
It's not about Google. (Or, it is but only because Google is the
big name in searching. When someone else replaces them as the search
leader, it'll become about them instead.)
Google's search algorithm isn't so much an invention as a
discovery. Long before Google existed, the world-wide web contained
within it a way to reliably index most of its contents--the network of
links. Google's founders simply discovered it and figured out
how to mine that data. It's the Internet equivalent of a natural
resource.
(Which is not to say that Google isn't brilliant or a huge
achievement.)
And as usual, as soon as someone with a financial interest comes
along, they start despoiling it. Email existed and was perfectly
usable for over fifteen years before the spammers got into it and only
then did people realize that maybe, there should have been a better
authentication system built into it. Ditto for USENET and, more
recently, blog
comments.
Well, now it's the web's turn. The days where search engines
"just worked" are over. We, who operate websites, have to start
pitching in to protect the structure. It's already started with the
"nofollow" attribute and it'll have to continue or the web will become
unsearchable.
Unfortunately, there's no way for software to distinguish between legitimate redirects and 302 hijackings.
If, for example, I use redirects to distribute traffic between multiple servers on multiple hosts, the GoogleBot's behaviour of treating the redirecting host as the website's canonical host is correct. I want users to use the referring host so that I can change physical hosts with impunity.
But if some scumbag is doing a 302 hijack, it looks like exactly the same thing as far as the bot is concerned. There's no way that a spider can tell whether the referrals are legitimate or not. And the only thing that can be done about it is to let webmasters explicitly tell the bot what they're trying to do. That, at least, gives website operators the means to combat this sort of abuse.
It's not Google that's broken--it's the web. It's just that the two-legged weasels are only now starting to pry open the cracks.
That was an excellent, well-written explanation of the problem, the best I've seen in this whole fracas.
...but I wonder if it would be possible to construe an unauthorized 302 redirect to a site as some sort of tort or trespass.
Even if that were the case, there are always going to be jurisdictional issues. Besides, it's pretty easy to fix with technology.
All Google (and the other search engines) need to do is have their bots honour some special meta tag (e.g. "redirects-from") which lists the URLs from which you've legitimately redirected. When a spider follows a redirect that isn't listed in the target page's redirects-from tag, it simply doesn't index the page.
Then, all the victim of a hijacking needs to do is put in the meta tag and their problem's solved.
Contracts that you haven't signed can be negotiated.
My advice to you is to figure out exactly what you're willing to let them have, then call them up, say you have some problems with the IP agreement and tell that what you're willing to let them have. See if they're willing to change the agreement. It's possible that it was written by a lawyer with a paranoid attitude and that the management hasn't actually looked at it from your point of view.
If they don't budge, then yeah, you'll probably want to work elsewhere.
BTW, if you post to Slashdot on company time (during a big compile, for example), be sure to get that sort of thing exempted. Also, you may want to add a waiver for all fine arts so that your writing, composing, acting and filmmaking aren't affected. Tech companies usually don't care about that sort of stuff and won't have a problem waiving claims to it.
kay, so... they took the trademarked name and one would assume copyrighted game design [...]
Games are not copyrightable. The artwork is, yes, as is the text of the rules and the design of the pieces, and the name is trademark but the game itself has no IP protection.
You know there's a lot of reasons I'm not crazy about Hasbro but I really just can't see anything unreasonable about this.
I can see Hasbro requesting that he stop using their trademark and stop distributing copies of their artwork (as the letter alleges they were doing) but they're demanding he dismantle the site. That may just be lawyering, but my paranoid little brain interprets this as an attempt to shut down a potential competitor.
It's an intriguing idea, but this guy clearly thinks software is
magical. Specifically, he misinterprets the Church-Turing thesis to
mean that aliens will have no trouble running our software. That's
wrong.
Church and Turing say that it's possible to write an
emulator for any computer to run on any other computer (modulo stuff
like performance and storage). That doesn't mean that there's
anything universal about how we represent our programs.
He also proposes the rather silly idea that the negotiation AI
basically use DRM to keep the aliens from finding its secrets. If the
program contains encrypted data that it can decrypt, the aliens can
decrypt it too, simply by watching how the program decrypts the data.
That being said, I have to add that it's an interesting idea. CPU
opcodes have nice, well-defined behaviour and it may be easier to
communicate their meanings than something more abstract. Also, a
working computer program would certainly be better at some
kinds of communication such as, e.g., the chess program he mentioned.
On the other hand, suppose you've sent them a program that
negotiates an information trade. How would they know that the
program is negotiating a trade and not, say, just a more boring
SimCity clone?
We may be able to communicate by software but I don't know if that
can extend to sentient-being communication.
I notice that a lot of the discussion going on here is about
whether or not computers help students learn. That's not really the
point of the debate. Even the referenced article says (in passing)
that having computers at home is a distraction. That puts it in
exactly the same league as TV, radio or friends--it's just a matter of
play time versus homework time.
It's obvious that computers can be used to help students
learn if used properly. That's also true of TV and pencils.
Even the harshest critics of computers in education concede that one.
The real questions is whether the advantages of putting
computers in schools justify their cost. A previous study (funded by
a bunch of hardware and software companies--no bias there) said that
yes, it was. The study TFA talks about counters that by saying,
basically, that the study fails to take into account the fact that
schools with computers can usually also afford more books, teachers
and special programs and it's those things that are making the
students better.
This whole computerization push is really good for politicians
because it makes them look like they're doing something and it's
really good for the hardware and software vendors because they can
pocket a big chunk of the education budget. What it's bad for is the
education system, because it diverts money that could be spent on
useful things, and that's bad for all of us.
So in conclusion: computers are good for education but only if
they're free.
I'm not an optimizing compiler developer but I do work one
desk over from one and I have grovelled through said compiler's
output looking for bugs, so:
In answer to your question, hand-optimizing your C code is
worthless[1]. Modern compilers, even the ones without overly advanced
optimizers, are able to generate more or less the same code for any of
the sorts of differences you mention. Don't bother hand-optimizing.
In fact, hand-optimizing can sometimes make your code slower.
Optimizers are written on the assumption that the coder is trying to
write clear, readable code without excessive cleverness and if you
do hand-optimize your C code, you may out-clever the optimizer.
The "correct" way to write efficient C code is:
Write the program in C, making sure your code is correct and
maintainable. Usually, it will end up being fast enough.
If it's not fast enough, profile to find bottlenecks in the code.
Try to eliminate the bottlenecks by using more efficient
algorithms.
If the algorithms are optimal and it's still too slow, try
playing with optimization options. If the compiler offers unsafe
optimizations, you may want to try those on your problem code (after
first making sure your code doesn't violate any of the constraints
imposed by them, of course).
If it still isn't fast enough, get the compiler to generate
assembly code for you and hand-optimize that.
As for embedded systems, the constraint there is usually on code
size instead of speed so embedded developers will often be very
selective on which routines they machine-optimize. And because
programmer time is cheaper than computer time in the embedded world,
they'll typically hand-optimize the compiler output a lot more
(assuming that they use C at all, which isn't a given).
In general, C code is fast enough already, the compiler does an
okay job for free and if you do need faster code, let the
compiler take you as far is it will go first.
[1] Er, okay, that's only true 99.9% of the time. You'll sometimes
have cases where a particular C construct doesn't translate very
easily to your architecture. For example, the post-increment and
post-decrement operators tend to be troublesome when used in
more complex expressions unless the architecture has a pre- or
post-increment opcode.
However, that sort of thing happens rarely and never in a portable
way. The time to start worrying about it is when you've reached stage
5 and are grovelling through your compiler output trying to figure out
how to improve on it.
Well, given that I don't have access to the actual text of the speech and at least one of the women who went ballistic did, I think I'll reserve judgement at this point.
I'm all for proper peer-reviewed research on the subject but from the article, it doesn't sound like that was what was being cited. But then, I haven't read the text of the speech so I could be wrong.
Microsoft makes it pretty clear that arbitrary code can be ran from a web page in the security dialog.
Unfortunately, lots of people don't realize that this is a bad thing. Witness the popularity of self-extracting archives, self-displaying pictures and those viruses which send out copies of themselves in encrypted zips. The average user hasn't (yet) learned that all the l337 cr4xx0r d00dz need to do to 0wnz0rz j00 is to get you to run a program of their choosing.
Once that simple truth (without the l33t-sp33k) sinks in, computing will be a lot safer. Unfortunately, most of the press so far has focused on the perps who do the deed and not the fact that the victim was doing the digital equivalent of parking in a dark alley with the doors unlocked and stacks of money lying on the dashboard.
Forgive me if I'm wrong, but isn't this already addressed by
object-oriented programming?
Not precisely. The big advantage (AIUI) of AOP is not the idea of
putting the different aspects of the program into black boxes--that's
already been done. The Big Thing is how the black boxes are connected
together, something that is orthogonal to the nature of the black box.
Without AOP, you'd have to explicitly connect the black boxes (be
they objects, modules or functions) from inside. AOP lets you connect
them at the public interfaces.
For example, in a straight non-aspect OOP version of my
hypothetical web-app framework, you'd need to explicitly call
"DoSecurity" and "DoLogging" from inside each "GotoPage*". Thus, you
need to connect the black boxes from inside another of the
black boxes. This means that in order to get them all to work, you
need inside knowledge of at least one of the black boxes.
In the AOP version, the calls to DoSecurity and DoLogging are
hooked to calls to the public interface, so you can do it
without needing to see inside any of them.
(Disclaimer: I'm not an AOP expert so if any genuine AOP
authorities want to step in and correct me, now is a good time.)
The reductionist answer is that it lets you attach hooks
(i.e. function calls) to various program actions (other function
calls, variable accesses, etc.) in a methodical sort of way. The
big-picture reason for this is that you can then (in theory) separate
out parts of the program that would normally have to be smooshed
together into the one module.
For example, say we have a web application framework in which you
go from one page to another by calling one of several functions whose
names begin with "GotoPage". Now, on this web app, you need to:
Log the transitions from each page to the next.
Do security checks to make sure the user is actually allowed to
go there.
In the usual way of doing things, you'd have to put calls to the
security and logging subsystems in each GotoPage* function. In AOP,
you'd instead write them as separate modules and then hook them to the
GotoPage* functions. That way, the different aspects of the
problem--page transitions, security and logging--are handled by
different modules. This means that:
Each aspect can be written and maintained independently and
without (a lot of) concern over the other aspects. Thus, the
web-app team can focus on just the web functionality and leave the
problem of security to the security team without either of
them needing to do a lot of coordination.
The code is more readable because each section focuses on doing
just one thing.
If you need to add some other aspects (e.g. distributed objects),
you can just add it by writing the module and hooking it in, all
without modifying any of the original code.
It seems like a neat idea, although I'm not sold on it yet. One
problem that I can see is that the source code doesn't necessarily do
what it says it's doing anymore. Buggy aspects can introduce errors
into correct code. I'm not sure how/if that's been solved.
(Disclaimer: I haven't actually done any AOP. I've just
read about it.)
I'm starting to think that you're trolling here, but anyway...
Or you could sign a contract to give up the rights to your work and your next several works, and a publishing house would ship it to all kinds of stores.
This is incorrect. Authors always retain copyright (with the exception of sharecropped work like, say, video game novelizations) if they're dealing with a reputable publisher. They sell publication rights and usually only for a temporary time period. And that's pretty much it. Movie rights are separate and the author keeps those.
You see some authors, like Stephen King, developed a large following and then, were able to make money on their fourth or fifth novel...
This is also incorrect. In On Writing, Stephen King describes pretty much exactly what happened with his first published novel, Carrie. He sold the hardcover (IIRC) rights and got a couple of thousand bucks advanced. (I.e. he sold it for royalties but the publisher kicked in some money up front--this is standard practice.) The contract also gave the publisher 25% of the paperback rights if a publisher decided to pick those up.
As it happened, someone did buy them for an advance of around $300,000, which netted him something like five years' salary in one go.
Now they pretty much make you sign away the rights to anything you want to write for
the next 10 years if you want a shot at a mainstream audience.
I think you're confusing the book publication industry with the music industry.
The reason movies adaptations are usually so horrible--well, one of them anyway--is that basically, the film rights are negotiated long before everything else. So when I sell the movie rights to my best-selling novel (look for it in book stores sometime after hell freezes over), nothing else has been done--no hiring decisions have been made, no casting, no script. I have to trust whoever's in charge of the project to do a good job and I also need to trust the studio to keep him or her around until the project is done.
Both of these are high-risk ventures. The best thing to do as an author, usually, is to just take the money and run.
The vast majority of Windows apps are available only on Windows.
You might be able to get some of them working under Linux if you
invest in Crossover Office, WineX, etc., but that's a lot more work,
not to mention somewhat iffy. So one way (some would say the only
way) Windows is superior to Linux is in its ability to run Windows
apps.
Losing your favourite apps is a big barrier to switching to Linux.
But if people get used to using platform-independant applications,
than the switch is a lot less painful.
For example, suppose Bob, a Windows user, uses his computer to run
MS-Office, Outlook Express and Internet Explorer. Then for him to
switch to Linux would require not only learning a new desktop but a
new web browser, word processor and email client. For him, it's worth
putting up with the worms and spyware (and paying for the associated
removal software) just to avoid the hassle of making the switch.
If, on the other hand, he uses Open-Office, Thunderbird and
Firefox, switching to Linux may well be worth it because he's familiar
with those programs already and they are available under Linux.
Windows versions of Linux apps (FOSS or commercial) make OS
compatibility less important and so reduce the cost of switching.
(As an aside, the original article gets a couple of things wrong.
Firstly, Mr. Seigo says that few Windows users have decent development
tools. If that's true, it's only because they don't want them. MS
bends over backwards to provide development tools. They sell them
(instead of giving them away) only because that allows competitors to
exist and a wide variety of development tools means more
developers. And that doesn't take into account all the FOSS tools
that have been ported from *nix. Gcc does just fine compiling Windows
code.
(Related to that, he also suggests that Microsoft could freeze out
Firefox developers. This is highly unlikely because they can't do
that without freezing out all third party developers. If they
do that, they may as well just delete the Windows source code and fire
all their programmers. The entire software industry will move to
another platform, almost certainly Linux, and that's the end of the
Windows hegemony.
(Microsoft has no choice but to tolerate FOSS applications on
their platform because they need third-party developers. That's
Windows' biggest selling point. Any dirty tricks to knock Firefox (or
whatever) off of windows will work for maybe a week until someone
compiles up a new version, but any commercial program that it breaks
in the process will be out of commission for a lot longer. And each
time Windows breaks an app, they remove one more reason to stick with
it for someone.)
In addition to Octave (which I've played with a little but can't
really comment on), I experimented a bit with a number of symbolic
math programs. My problem was that I had a really freakin' big
machine-generated equation that I was hoping could be reduced to
something sane. As it happened, the answer was no, but I tried out a
bunch of programs.
(Disclaimer: it's been a while and I didn't put too much effort
into investigations so I Could Be Wrong About Stuff.)
JACAL
managed to actually do the reduction (instead of flailing away for a
while before dying or my killing it) but that's not all that useful
for students. My main complaint was that it didn't seem useful if you
didn't know Scheme, or at least how to cope with a Scheme interpreter.
So if you typed the wrong thing, it dropped into the Scheme debugger.
Also, no graphics.
Mathomatic
choked on the Giant Equation and died. On the other hand, it built
painlessly and seems reasonably simple. Once again, it's
text-only. I wasn't very impressed with it, but on the other hand, I
gave up on it as soon as I realized it couldn't handle my equation.
YACAS seemed
better organized. It has a C-ish interpreted language that seems to
implement a lot of the system and it looks pretty well-documented.
When I tried it on my equation, it ran for about 24 hours without
returning a result so I killed it. Once again, it's textual but it'll
talk to a plotting program called Superficie to, uh, plot stuff.
You may want to try these out and see if they'll do what you want.
I don't think you have any moral or ethical obligation toward piracy at all, beyond what the organization itself does. You are neither the copyright holder or a law-enforcement agency. It's not your job to keep attendees on the straight-and-narrow.
That being said, you will need to think about this from a liability standpoint. I suggest you consult a lawyer and get him or her to advise you on what sort of policy to set up with an eye on protecting your organization from liability. Since you're a charity, it may be possible to get one to work pro bono.
No, REXX is shit. It sucks, it bites, it blows syphilitic goats through coffee stir-sticks. I'd compare it to the aborted offspring of third-generation addiction research monkeys if the Crackmonkey Defense League wouldn't picket me for it.
Why, I hear you ask, am I so violently opposed to this allegedly powerful "scripting" "language"? It's because I once had to use it.
I wrote a test harness with it. You know, one of those things that scripting languages are supposed to be good for? You'd think REXX would make such a task easy, wouldn't you? You'd be wrong.
How do I hate REXX? Let me count the ways:
You know? Procedures, aka functions aka subroutines? Those handy little things that let you subdivide your complex tasks into lots of simple ones? Ain't gottem'.
What it has is a kind of GOSUB-with-arguments that it pretends are real procedures and look enough like them that they fooled me until it was too late.
See, when you find a procedure definition in a reasonable scripting language, it's a no-op, right? It's either an expression that creates the procedure then and there or it's a thing that the interpreter finds in the source code before it starts running the program. Either way, when running through the code, the interpreter just sort of does nothing immediate when it finds a procedure definition.
So all we scripting hacks need to remember to do is to define our procedures before we use them, right?
Well, in REXX, they're labels. As soon as the thread of execution reaches a fake procedure, it wanders right in, up until it hits the RETURN statement, at which point it's an error if you're lucky or a return from some unexpected function if you're not.
And kazam! Good programming habits go unpunished.
And let's not think about the sort of spaghetti code this, uh, feature can lead to. No, really, let's not.
Since the pretend procedures are just labels, there has to be some way to monkey around with the scope to get something like local variables, right? There is. And it's vile.
There's a command (whose name I've mercifully forgotten) which creates a new global scope. You call it in your pretend-procedure and ta-da, everything's local now. Hooray, unless you want to actually access a real global variable. But they thought of that--the command lets you list the variables from the previous scope that you want to access and they get stuck into the new scope.
So far, so good, right?
The problem is that these scopes nest. So if fake-procedure FOO needs to write to global variable BLAT and declares it in its scope-creation thingy, this works fine if you call FOO from the mainline.
But what if function BAR calls FOO? Well then, the BLAT that FOO writes to will belong to BAR's scope unless BAR also declares BLAT to belong to the previous scope. And if QUUX calls BAR, the same thing happens.
So if you want to modify a global variable from a function you have to make sure that every function that can conceivably be part of its call chain cooperates. And if you mess up and don't find all of those cases, there's no warning or error message.
Y'know, there are other problems with REXX but they're not as bad. At least, I could have worked around them if I'd had a decent procedure system. A lot of language brokenness is tolerable if you only ever need to solve it once. REXX doesn't give me even that capability.
To be balanced, I should say some nice things about it:
There we go. That's nice, isn't it?
Hack the phishing server, fire up a torrent tracker and post a link to some US chart music or movie downloads.
Hmmm. Has anyone written a combined tracker/torrent link site program? You know, something that's both a tracker and a website for uploading torrent links? That way, you can piss off^W^Wkill two birds with one stone.
TRS-80 Model 100
I have one of these. I used to use it to write in the subway. (That was a while back. These days, I'd have to drive for an hour to get to a subway and I've invested in a (used) Thinkpad running Linux.)
Pros:
Cons:
Anyway, the Tandy 100 et. al. are pretty much what you want.
Also, it has two advantages over pencil and paper:
Right now, copyright law regulates the act of making copies. The copyright holder is allowed to prevent anyone from making copies of their work, even if those copies never see the light of day.
If I copy a CD I purchased onto my hard drive, then erase the file without ever listening to it, I've committed copyright infringement. It's considered legal (in Canada) as an exemption to copyright law.
This is why SODRAC (a Canadian copyright body) pushed to get an levy on ISPs. After all, routers make copies of the copyrighted content they push around.
So far, the courts have acknowledged that this sort of thing--copies that nobody ever sees--are fair use but I think this highlights a fundamental incompatibility between traditional copyright law and the digital age.
I say, copyright law should explicitly allow all copying unless it grants unauthorized access to the work to another person. I should be allowed to make however many copies of my purchased content as I want. If I want to fill my hard drive with MP3s of Oops! I Did It Again, I should be allowed to as long as I've paid for the right to listen to it (by buying one copy somewhere) and I've taken reasonable precautions to keep more than one person from listening to any of my copies at a time.
I don't think that sounds unreasonable, do you?
Kevin Smith may be the one of the few directors who can cast Affleck well. Honestly, I've really liked the majority roles he's played in Smith's movies.
It's not Affleck's acting ability that's the problem. It's just that the man can't pick a good film role to save his life. He does Kevin Smith movies as a favour to Smith and those are good roles because Smith makes good movies. Daredevil was crap despite Affleck's work.
Also, I can't believe I'm discussing Ben Affleck on Slashdot.
How could a blog site - or whatever kind of site for that matter - host and run keylogging software?
It has nothing to do with blogs themselves. Websense is just trying to cash in on the sudden popularity of blogs. The problem is with any free web hosting service.
When crackers subvert systems using browser exploits, they have to host those exploits on a web page. Since web hosting is inherently traceable--the hosting company has to have your payment details--this is tricky to do without getting caught. However, free hosting sites like Geocities et. al. make it easy to host web pages anonymously.
Your typical cracker signs up with one of those hosting companies using a bogus name and address, then puts up a page full of exploits and tries to trick people into visiting that page. If the hosting company notices and takes it down, the cracker just does it again.
Presumably, the various free blogging sites out there can be abused in a similar way and it sounds a whole lot better for Websense to talk about a new thing than a problem that's existed for a decade or so. Of course, the public blogging sites ought to be that much easier to lock down just because they're structured web services. A generic web hosting site needs to let its users install their own ActiveX controls and Javascript but a blog doesn't.
In conclusion, it is my opinion that Websense are being grandstanding media whores.
We are planning on accepting advertising, but the plan for that is simple - your ad dollars won't buy you a good review if your product doesn't stand up to it's claims, period.
Unfortunately, we can only have your word for that. For all we know, you're giving good reviews in exchange for big advertising sales.
You might consider selling ads for a different class of product than you're reviewing--e.g. consumer electronics, candy, etc.--but even then, the way everything's consolidated would keep you from being above suspicion.
(Note: I'm not accusing you of anything. I'm just saying that it's very difficult to demonstrate your honesty.)
One of the problems with Linux is that there is too much choice.
You make a valid point. However, the people who use Linux right now want the choice.
A lot of the confusion, I think, stems from people thinking of Linux as the operating system. Actually, the Linux distribution is the operating system. The Linux kernel is really just a component of it[1]. So each distribution is really a different operating system but the whole family of them can (usually, we hope) run all of the same programs.
It's like, if Linux is ketchup, then RedHat is Heintz. And it doesn't explode if you pour it on fries made by a different vendor.
As it happens, there are Linux distributions that don't offer you all that choice. It just depends on which one you pick, how newbie-friendly it's trying to be and how well it manages to achieve that goal.
[1] I realize that it's more complicated than that--I'm trying to describe it in terms of what end-users see.
well, a bunch of people have suggested that 302s should only be honored by crawlers if the domain is the same.
The problem with that is that there are legitimate cases where 302s need to go across domains. For example, I own a domain name and use a commercial DNS provider to forward requests to my current ISP's webspace. If I change ISPs, that will change so I want Google to treat my domain name as the canonical name of my website.
Alternately, someone using temporary hosting to handle a sudden surge of bandwidth might use 302s in the short term but would want Google to continue to associate the pages with the forwarding domain.
Of course, if you amend the suggestion to "honour 302s if the domain is the same or if the destination site has metatags naming the originator as part of the site", you end up with my original suggestion.
why do you say that? how is the web broken because of the way google crawls it?
It's not about Google. (Or, it is but only because Google is the big name in searching. When someone else replaces them as the search leader, it'll become about them instead.)
Google's search algorithm isn't so much an invention as a discovery. Long before Google existed, the world-wide web contained within it a way to reliably index most of its contents--the network of links. Google's founders simply discovered it and figured out how to mine that data. It's the Internet equivalent of a natural resource.
(Which is not to say that Google isn't brilliant or a huge achievement.)
And as usual, as soon as someone with a financial interest comes along, they start despoiling it. Email existed and was perfectly usable for over fifteen years before the spammers got into it and only then did people realize that maybe, there should have been a better authentication system built into it. Ditto for USENET and, more recently, blog comments.
Well, now it's the web's turn. The days where search engines "just worked" are over. We, who operate websites, have to start pitching in to protect the structure. It's already started with the "nofollow" attribute and it'll have to continue or the web will become unsearchable.
google needs to fix this, not The Web.
Unfortunately, there's no way for software to distinguish between legitimate redirects and 302 hijackings.
If, for example, I use redirects to distribute traffic between multiple servers on multiple hosts, the GoogleBot's behaviour of treating the redirecting host as the website's canonical host is correct. I want users to use the referring host so that I can change physical hosts with impunity.
But if some scumbag is doing a 302 hijack, it looks like exactly the same thing as far as the bot is concerned. There's no way that a spider can tell whether the referrals are legitimate or not. And the only thing that can be done about it is to let webmasters explicitly tell the bot what they're trying to do. That, at least, gives website operators the means to combat this sort of abuse.
It's not Google that's broken--it's the web. It's just that the two-legged weasels are only now starting to pry open the cracks.
That was an excellent, well-written explanation of the problem, the best I've seen in this whole fracas.
Even if that were the case, there are always going to be jurisdictional issues. Besides, it's pretty easy to fix with technology.
All Google (and the other search engines) need to do is have their bots honour some special meta tag (e.g. "redirects-from") which lists the URLs from which you've legitimately redirected. When a spider follows a redirect that isn't listed in the target page's redirects-from tag, it simply doesn't index the page.
Then, all the victim of a hijacking needs to do is put in the meta tag and their problem's solved.
Contracts that you haven't signed can be negotiated.
My advice to you is to figure out exactly what you're willing to let them have, then call them up, say you have some problems with the IP agreement and tell that what you're willing to let them have. See if they're willing to change the agreement. It's possible that it was written by a lawyer with a paranoid attitude and that the management hasn't actually looked at it from your point of view.
If they don't budge, then yeah, you'll probably want to work elsewhere.
BTW, if you post to Slashdot on company time (during a big compile, for example), be sure to get that sort of thing exempted. Also, you may want to add a waiver for all fine arts so that your writing, composing, acting and filmmaking aren't affected. Tech companies usually don't care about that sort of stuff and won't have a problem waiving claims to it.
kay, so... they took the trademarked name and one would assume copyrighted game design [...]
Games are not copyrightable. The artwork is, yes, as is the text of the rules and the design of the pieces, and the name is trademark but the game itself has no IP protection.
You know there's a lot of reasons I'm not crazy about Hasbro but I really just can't see anything unreasonable about this.
I can see Hasbro requesting that he stop using their trademark and stop distributing copies of their artwork (as the letter alleges they were doing) but they're demanding he dismantle the site. That may just be lawyering, but my paranoid little brain interprets this as an attempt to shut down a potential competitor.
That, or generic corporate bullying.
It's an intriguing idea, but this guy clearly thinks software is magical. Specifically, he misinterprets the Church-Turing thesis to mean that aliens will have no trouble running our software. That's wrong.
Church and Turing say that it's possible to write an emulator for any computer to run on any other computer (modulo stuff like performance and storage). That doesn't mean that there's anything universal about how we represent our programs.
He also proposes the rather silly idea that the negotiation AI basically use DRM to keep the aliens from finding its secrets. If the program contains encrypted data that it can decrypt, the aliens can decrypt it too, simply by watching how the program decrypts the data.
That being said, I have to add that it's an interesting idea. CPU opcodes have nice, well-defined behaviour and it may be easier to communicate their meanings than something more abstract. Also, a working computer program would certainly be better at some kinds of communication such as, e.g., the chess program he mentioned.
On the other hand, suppose you've sent them a program that negotiates an information trade. How would they know that the program is negotiating a trade and not, say, just a more boring SimCity clone?
We may be able to communicate by software but I don't know if that can extend to sentient-being communication.
I notice that a lot of the discussion going on here is about whether or not computers help students learn. That's not really the point of the debate. Even the referenced article says (in passing) that having computers at home is a distraction. That puts it in exactly the same league as TV, radio or friends--it's just a matter of play time versus homework time.
It's obvious that computers can be used to help students learn if used properly. That's also true of TV and pencils. Even the harshest critics of computers in education concede that one.
The real questions is whether the advantages of putting computers in schools justify their cost. A previous study (funded by a bunch of hardware and software companies--no bias there) said that yes, it was. The study TFA talks about counters that by saying, basically, that the study fails to take into account the fact that schools with computers can usually also afford more books, teachers and special programs and it's those things that are making the students better.
This whole computerization push is really good for politicians because it makes them look like they're doing something and it's really good for the hardware and software vendors because they can pocket a big chunk of the education budget. What it's bad for is the education system, because it diverts money that could be spent on useful things, and that's bad for all of us.
So in conclusion: computers are good for education but only if they're free.
I'm not an optimizing compiler developer but I do work one desk over from one and I have grovelled through said compiler's output looking for bugs, so:
In answer to your question, hand-optimizing your C code is worthless[1]. Modern compilers, even the ones without overly advanced optimizers, are able to generate more or less the same code for any of the sorts of differences you mention. Don't bother hand-optimizing.
In fact, hand-optimizing can sometimes make your code slower. Optimizers are written on the assumption that the coder is trying to write clear, readable code without excessive cleverness and if you do hand-optimize your C code, you may out-clever the optimizer.
The "correct" way to write efficient C code is:
As for embedded systems, the constraint there is usually on code size instead of speed so embedded developers will often be very selective on which routines they machine-optimize. And because programmer time is cheaper than computer time in the embedded world, they'll typically hand-optimize the compiler output a lot more (assuming that they use C at all, which isn't a given).
In general, C code is fast enough already, the compiler does an okay job for free and if you do need faster code, let the compiler take you as far is it will go first.
[1] Er, okay, that's only true 99.9% of the time. You'll sometimes have cases where a particular C construct doesn't translate very easily to your architecture. For example, the post-increment and post-decrement operators tend to be troublesome when used in more complex expressions unless the architecture has a pre- or post-increment opcode.
However, that sort of thing happens rarely and never in a portable way. The time to start worrying about it is when you've reached stage 5 and are grovelling through your compiler output trying to figure out how to improve on it.
I haven't heard that particular flavour of FUD since, like, 2001. What a blast from the past, mang!
Does anybody else see the irony here?
Well, given that I don't have access to the actual text of the speech and at least one of the women who went ballistic did, I think I'll reserve judgement at this point.
I'm all for proper peer-reviewed research on the subject but from the article, it doesn't sound like that was what was being cited. But then, I haven't read the text of the speech so I could be wrong.
Microsoft makes it pretty clear that arbitrary code can be ran from a web page in the security dialog.
Unfortunately, lots of people don't realize that this is a bad thing. Witness the popularity of self-extracting archives, self-displaying pictures and those viruses which send out copies of themselves in encrypted zips. The average user hasn't (yet) learned that all the l337 cr4xx0r d00dz need to do to 0wnz0rz j00 is to get you to run a program of their choosing.
Once that simple truth (without the l33t-sp33k) sinks in, computing will be a lot safer. Unfortunately, most of the press so far has focused on the perps who do the deed and not the fact that the victim was doing the digital equivalent of parking in a dark alley with the doors unlocked and stacks of money lying on the dashboard.
Forgive me if I'm wrong, but isn't this already addressed by object-oriented programming?
Not precisely. The big advantage (AIUI) of AOP is not the idea of putting the different aspects of the program into black boxes--that's already been done. The Big Thing is how the black boxes are connected together, something that is orthogonal to the nature of the black box.
Without AOP, you'd have to explicitly connect the black boxes (be they objects, modules or functions) from inside. AOP lets you connect them at the public interfaces.
For example, in a straight non-aspect OOP version of my hypothetical web-app framework, you'd need to explicitly call "DoSecurity" and "DoLogging" from inside each "GotoPage*". Thus, you need to connect the black boxes from inside another of the black boxes. This means that in order to get them all to work, you need inside knowledge of at least one of the black boxes.
In the AOP version, the calls to DoSecurity and DoLogging are hooked to calls to the public interface, so you can do it without needing to see inside any of them.
(Disclaimer: I'm not an AOP expert so if any genuine AOP authorities want to step in and correct me, now is a good time.)
The reductionist answer is that it lets you attach hooks (i.e. function calls) to various program actions (other function calls, variable accesses, etc.) in a methodical sort of way. The big-picture reason for this is that you can then (in theory) separate out parts of the program that would normally have to be smooshed together into the one module.
For example, say we have a web application framework in which you go from one page to another by calling one of several functions whose names begin with "GotoPage". Now, on this web app, you need to:
In the usual way of doing things, you'd have to put calls to the security and logging subsystems in each GotoPage* function. In AOP, you'd instead write them as separate modules and then hook them to the GotoPage* functions. That way, the different aspects of the problem--page transitions, security and logging--are handled by different modules. This means that:
It seems like a neat idea, although I'm not sold on it yet. One problem that I can see is that the source code doesn't necessarily do what it says it's doing anymore. Buggy aspects can introduce errors into correct code. I'm not sure how/if that's been solved.
(Disclaimer: I haven't actually done any AOP. I've just read about it.)
I'm starting to think that you're trolling here, but anyway...
Or you could sign a contract to give up the rights to your work and your next several works, and a publishing house would ship it to all kinds of stores.
This is incorrect. Authors always retain copyright (with the exception of sharecropped work like, say, video game novelizations) if they're dealing with a reputable publisher. They sell publication rights and usually only for a temporary time period. And that's pretty much it. Movie rights are separate and the author keeps those.
You see some authors, like Stephen King, developed a large following and then, were able to make money on their fourth or fifth novel...
This is also incorrect. In On Writing, Stephen King describes pretty much exactly what happened with his first published novel, Carrie. He sold the hardcover (IIRC) rights and got a couple of thousand bucks advanced. (I.e. he sold it for royalties but the publisher kicked in some money up front--this is standard practice.) The contract also gave the publisher 25% of the paperback rights if a publisher decided to pick those up.
As it happened, someone did buy them for an advance of around $300,000, which netted him something like five years' salary in one go.
Now they pretty much make you sign away the rights to anything you want to write for the next 10 years if you want a shot at a mainstream audience.
I think you're confusing the book publication industry with the music industry.
The reason movies adaptations are usually so horrible--well, one of them anyway--is that basically, the film rights are negotiated long before everything else. So when I sell the movie rights to my best-selling novel (look for it in book stores sometime after hell freezes over), nothing else has been done--no hiring decisions have been made, no casting, no script. I have to trust whoever's in charge of the project to do a good job and I also need to trust the studio to keep him or her around until the project is done.
Both of these are high-risk ventures. The best thing to do as an author, usually, is to just take the money and run.
The vast majority of Windows apps are available only on Windows. You might be able to get some of them working under Linux if you invest in Crossover Office, WineX, etc., but that's a lot more work, not to mention somewhat iffy. So one way (some would say the only way) Windows is superior to Linux is in its ability to run Windows apps.
Losing your favourite apps is a big barrier to switching to Linux. But if people get used to using platform-independant applications, than the switch is a lot less painful.
For example, suppose Bob, a Windows user, uses his computer to run MS-Office, Outlook Express and Internet Explorer. Then for him to switch to Linux would require not only learning a new desktop but a new web browser, word processor and email client. For him, it's worth putting up with the worms and spyware (and paying for the associated removal software) just to avoid the hassle of making the switch.
If, on the other hand, he uses Open-Office, Thunderbird and Firefox, switching to Linux may well be worth it because he's familiar with those programs already and they are available under Linux.
Windows versions of Linux apps (FOSS or commercial) make OS compatibility less important and so reduce the cost of switching.
(As an aside, the original article gets a couple of things wrong. Firstly, Mr. Seigo says that few Windows users have decent development tools. If that's true, it's only because they don't want them. MS bends over backwards to provide development tools. They sell them (instead of giving them away) only because that allows competitors to exist and a wide variety of development tools means more developers. And that doesn't take into account all the FOSS tools that have been ported from *nix. Gcc does just fine compiling Windows code.
(Related to that, he also suggests that Microsoft could freeze out Firefox developers. This is highly unlikely because they can't do that without freezing out all third party developers. If they do that, they may as well just delete the Windows source code and fire all their programmers. The entire software industry will move to another platform, almost certainly Linux, and that's the end of the Windows hegemony.
(Microsoft has no choice but to tolerate FOSS applications on their platform because they need third-party developers. That's Windows' biggest selling point. Any dirty tricks to knock Firefox (or whatever) off of windows will work for maybe a week until someone compiles up a new version, but any commercial program that it breaks in the process will be out of commission for a lot longer. And each time Windows breaks an app, they remove one more reason to stick with it for someone.)
In addition to Octave (which I've played with a little but can't really comment on), I experimented a bit with a number of symbolic math programs. My problem was that I had a really freakin' big machine-generated equation that I was hoping could be reduced to something sane. As it happened, the answer was no, but I tried out a bunch of programs.
(Disclaimer: it's been a while and I didn't put too much effort into investigations so I Could Be Wrong About Stuff.)
JACAL managed to actually do the reduction (instead of flailing away for a while before dying or my killing it) but that's not all that useful for students. My main complaint was that it didn't seem useful if you didn't know Scheme, or at least how to cope with a Scheme interpreter. So if you typed the wrong thing, it dropped into the Scheme debugger. Also, no graphics.
Mathomatic choked on the Giant Equation and died. On the other hand, it built painlessly and seems reasonably simple. Once again, it's text-only. I wasn't very impressed with it, but on the other hand, I gave up on it as soon as I realized it couldn't handle my equation.
YACAS seemed better organized. It has a C-ish interpreted language that seems to implement a lot of the system and it looks pretty well-documented. When I tried it on my equation, it ran for about 24 hours without returning a result so I killed it. Once again, it's textual but it'll talk to a plotting program called Superficie to, uh, plot stuff.
You may want to try these out and see if they'll do what you want.