What is left to study in Computer Science? What algorithms are still out there waiting to be uncovered?
Well, for starters, nobody has even figured out
whether or not P == NP yet. Sure, most people
strongly believe P != NP, but nobody really
knows for sure.
Kinda along those same lines, cryptography is
built on the idea that certain tasks can be
computationally infeasible to one group of
people (eavesdroppers) but feasible and practical
for the people who want to securely exchange
information. We have stumbled on some
algorithms that seem to fit this in practice,
but according to what I understand, there is
not really a cryptosystem out there for which
anyone can supply proof that the
computations that look hard actually
are hard. For example, if I recall
correctly, RSA's security rests on the idea
that it is computationally very tough to
factor a product of two very large prime numbers.
But we don't know that there isn't an
efficient algorithm for doing this. All we
know is that we aren't yet aware of one.
There are other active areas of research. For
instance, right now "managed code" systems
like Java and.Net are in their infancy.
Computers have only just recently become
fast enough that it is practical to consider
switching to just-in-time compilation, and
the thing is, there are optimizations that
can be done when compiling at runtime that
can't be done when compiling before runtime.
(For example, you can use real profiling
data to automatically
create code that is most efficient for
the actual workload.) So there are bound to be
a lot of techniques to be discovered in this
area.
And there are other potential areas of research
as well. We are already starting to see dual-core
processors because it's looking to be hard to
increase processor speed in conventional ways.
We could probably use some research on how to
do parallelism in other ways, possibly even
going beyond dual-core machines or even beyond
Von Neumann machines. If we ever feel compelled
to do that, let me tell you, there will be a
whole bunch of research needed in programming
languages all over again, because imperative
languages mirror the architecture we are using
now but won't be suitable for an architecture
that lends itself to automatically taking
advantage of parallelism.
Finally, keep in mind where physics thought it
was after Newton. It seemed that classical
mechanics explained just about everything
pretty well. Until Einstein came along and
blew it all out of the water. For all we
know, something like that could happen with
computer science. Although it might be 100
years...
Also, are there any users out there who would vouch for today's screen quality? I would be upgrading from the Palm m5xx which has a color screen, but that screen is of less than great quality and is quite anemic. I've seen other newer devices with screens that scream -- is Palm doing the same?
The visual quality of the screen should be way
better than your m505 or m515. Both the m505
and m515 have 160x160 displays, and the T|X
is supposed to be 320x480. Also, the contrast
and general readability will be much better.
As for screaming, I'm not sure what you mean by
that. If you mean making a whining noise, it is
the case that some Palm devices do have screens
that make a
whining noise.
How loud it is seems to vary from one individual
unit to another. It also varies from one model
to another. I've heard lots of reports that the
Zire 72 does have issues with screen noise.
I haven't, however, heard any reports about the
same problem with the Tungsten|T5, which is the
model that's most similar to the T|X.
Why Palm still developing handhelds based on PalmOS? I thought they entered an agreement with M$ to use Windows CE on Palms.
Yes, they did have an agreement to use Windows Mobile on
Palms. But obviously not on all Palms. It would seem
that their strategy (for now, at least)
is to continue releasing both
kinds of devices. They may have plans to ditch
Palm OS in the future, but they haven't announced
that, and really nobody outside Palm knows whether
they are going to do that. (And it might even be
the case that nobody inside Palm knows the
answer to that question yet.)
Is Palm planning to continue developing a next-gen OS alternative to Windows CE?
Palm spun off operating system development into
a separate company, PalmSource, some years back.
Palm hasn't been developing a next-generation
OS; instead, PalmSource has been working on that.
PalmSource will probably continue to do so, but
whether Palm will adopt the new version remains
to be seen.
But Iraq didn't fuck with us. Iraq had nothing to do with 9/11. The only way Iraq fucked with us was by considering trading oil in Euros.
Not exactly, or at least not in the George W.
Bush view of the world. Bush delivered what
amounts to a
famous ultimatum, when he said
that in the war on terror, you're "with or against us".
After that, Saddam specifically came out and said
publicly that he rejected the idea that there were
only those two options.
Bush saw this as defiance, which is of course
exactly what it was. Whether that justifies an
invasion is another question. But it does
constitute fucking with us, or at least
challenging our power.
My feeling is
that Bush felt we were better safe than sorry
with regards to Iraq. There was uncertainty
about whether Iraq still had weapons of mass
destruction left (here's some
background on that). To me, it seems
like Bush though there might be WMD, and
Saddam is an evil guy and thorn in our
side, so why not just go take him out?
Once again, I am not saying this does justify
war, but I am saying that Bush had other
reasons to invade Iraq that don't have
anything to do with oil. I think he saw
Iraq as Step 2 on the list of housecleaning
that he felt like ought to be done in the
post-9/11 environment.
Anti-American people are going to probably dismiss
me as a dumb American for saying this, but I really
do NOT get why people think that the war in
Iraq is war for oil.
Let me explain. Many years ago, Bush was in the
oil business. He then became Governor of Texas,
and then President of the United States. After
that, there was there were the September 11, 2001
terror attacks, and then we went to war in Iraq.
Since we went to war in Iraq, retail gas prices
in the United States have gone through the roof.
The prices were affected by Hurricane Katrina
and also by Hurricane Rita, yes, but even before
those things happened, the prices had virtually
doubled in just a few years. Prices hit
$2.00/gallon over a year ago, which is quite
high considering that prices were under
$1.00/gallon 6 or 7 years ago.
And the majority of the increase has been
since the war in Iraq started.
So, let's analyze this in terms of supply and
demand. If we went to war for oil, wouldn't
you expect that this would have improved
gas prices? In fact, it has had the exact
opposite effect. Analysts have said that
the reason for high gas prices is the
uncertainty that war creates in the market.
And high gas prices have
been hurting the US economy as well. For a
long time, we were starting to have an
economic recovery (after the dot-bomb
crash), but worries over the price of fuel
kept killing the momentum of the recovery.
Now combine this with the fact that we were
already getting oil out of Iraq
through
the UN oil-for-food program. Then the war
itself disrupted oil production, and it
has been been disrupted after "major hostilities"
were over, because there has been sabotage.
Basically, my question is this: if this is
"war for oil", then why does everything seem
to indicate that we have less oil now
than we did before the war started, and why
does it seem we are having more trouble
getting the oil we do get? Bush is not the
brightest guy ever, but I don't see how it's
plausible that even he is dumb enough
to go to war over oil and end up making things
worse than they'd be if he did nothing.
Instead, I'd like to offer a different
explanation for the war in Iraq. You may think
the US's actions in going to war are
extralegal, and you may be right (depending on
how you view the role of the UN), but in my
opinion, the US went to war in Iraq for a
simple reason: it wants to protect its
interests. Bush is a Texan, and I'm a Texan
too, so let me tell you, although I don't
agree with it, I know the attitude that many
people around here
take towards foreign policy. The idea is that
the US needs to get out there and do whatever
is in our own best interest, period. Yes,
we should cooperate with others, but that's
not the main focus. It seems pretty clear to
me that this war has a very simple purpose.
And what is that purpose? It's not oil. It's
not even fighting terrorists, directly. It's
something very simple. It's a way of sending
a message. The message is really simple:
"You fuck with us, we'll find a way to fuck
you over 10 times as bad." That is the real
reason the US is in Iraq. It is there to make
an example of someone, so that terrorists will
not think we'll sit around and take terrorist
attacks without responding.
Of course, that doesn't jibe with the official
line either. The official line is that we're
there to liberate people from an oppressive
ruler. That's not entirely false. We do hope
to accomplish that, and we have mostly done so.
But the administration tries to give the
impression that it's our primary motivation,
and that's a lie.
Now, I don't mind if you disagree with the US
going in against UN wishes to invade a country
as a show of force. I don't entirely agree
with it either, and experience has shown it
was probably a bad idea. But if you are going
to criticize the US for invading Iraq, please
try to be accurate about why the US has done it.
It's not that different from France's nuclear
tests in 1995 and 1996 that the world opposed,
or the more recent nuclear tests in Pakistan
and India. Those were also shows of force.
Well, the linked article contained a number of what I will graciously call "assumptions" (rather than "outright lies") about allocation patterns in C/C++ that simply don't hold true in most cases.
For example, the parent mentions the old "stack or heap" question... Which no serious C coder would ask. Use the heap only when something won't fit on the stack. Why? The stack comes for "free" in C. If you need to store something too large, you need the heap.
This is all well and good until you start trying
to have good programming practices like, say,
encapsulation. In order to use an object, you
have to know details about its implementation,
namely its size,
which is something you shouldn't have to know.
Let me give a real-world example. Recently, I was
coding a class that does a GUI version of the
Periodic Table. For various reasons, it made a
lot of sense in my case to create some lookup
tables when the object is created, so that I know
the exact geometry of every one of the elements.
Subtle details determined whether these tables
could be constants (and thus global constant
data and not part of the
individual instances) or needed to be part of
the object itself. An implementation that
used some other method than lookup tables
would've made the object much smaller, because
I had several screen coordinates and other values
for each element. In fact, the difference could
be an order of magnitude or more.
So, imagine that I need to use this Periodic Table
object. Should I put it on the stack? In this
particular case, on this platform (whose apps by
default have a 4K stack size), it needs to go in
the dynamic heap. So, the client code needs to
know the rough size of the object, so it needs
to know about its implementation.
Now, what would've happened if I had started with
a class that had a small footprint, and the client
code put it on the stack, but then I go back
later and realize I can get a huge performance
increase by making the object much larger?
If I go through with it, I have to do one of
two things: either change all the client code
everywhere, or let client code risk blowing the
stack.
You can see, then, how the stack vs. heap compromise
really is an issue in C++ code. If development
time means nothing, then by all means, optimize
your code (and all the libraries it calls and
so on) so that you maximize your stack usage
without going over. But if you'd like a language
that gives you good performance without making
the programmer make that determination, then
a language where the implementation chooses for
you is probably better than a language where
the programmer has to choose in most cases.
But then, you can allocate it once, and don't even consider freeing it until you finish with it (generational garbage collection? Survival time? Gimme a break - It survives until I tell it to go away!).
You've totally missed the point here. In either
language, it survives
until no longer needed. The
difference is just that in Java, the generational
allocator takes advantage of the fact that some
pieces of allocated memory are not needed for
very long and uses that fact to improve performance
of the allocator.
The reason this is possible is that a fair amount
of the work required of the allocator
and deallocator
involves dealing with different sized allocations
and deallocations. When you want a piece of size
N, the allocator has to somehow go through its
free list and choose the best piece to give you,
because the free list contains all different sizes.
When you free a piece, the deallocator has to go
through and determine if there are adjacent free
pieces that can be combined with that piece
to form a larger piece. There are algorithms
and data structures to do this, but it still
requires work.
Meanwhile, a generational allocator takes a
different approach. It picks a region of memory
and then just starts allocating at the beginning
and moving
You can go on their web site and find 3 different prices for the exact same thing depending on which unit you go in, and I mean home, small business, and large.
The story I've heard from an acquaintance who
in charge of IT for a local company is that
the difference in price
has to do with differences in guarantees on
availability of parts. If you buy a "large
business" computer, then you're supposed to be
able to come back to Dell in the future (say
2 or 3 years out, maybe longer) and say, "Hey,
I have a computer with serial number XYZ123,
and its video card is hosed. Please send me
an exact replacement." And Dell is then supposed
to have one on hand (or available somehow)
that they can send you, even though it's
basically an obsolete part. Whereas, if you
buy a "home" machine and ask the same thing,
you take your chances, and if the machine isn't
fairly new, it's
likely Dell will say, "Sorry, we don't carry
that part anymore." Machines that are sold
as "large business" machines are also not going
to have mid-season substitutions on parts. If
you order a "large business" Model ABC, it will
be the same as the five Model ABC machines
you ordered six
months ago. But for "home" computers, there
might be subtle changes in configuration
on the same model as time goes on,
like a different sound chip or something.
The reason this costs more is obvious: it means
Dell has to provide an extra level of commitment
to provide spare parts. The reason that paying
more for this as a customer
makes sense is less obvious, but in general
a large business gains something by having a bunch
of identical machine configurations
that it supports rather than
a hodgepodge of random crap. It's easier to
support. It's valuable to a business to
be able to replace a failed part with an exact
duplicate. It reduces the amount of decision
making required (my graphics card died -- hmm,
what kind should I replace it with?), it
ensures that you can get that broken machine
to function just as before, and it prevents
you from having to deal with driver issues and
other compatibility problems (like certain
hardware requiring a BIOS update to work).
By and large, the home user doesn't care about
these things. If part of their machine fails,
they either go, "Oh well, time to upgrade anyway,"
or they take it to the desk at Best Buy and
get them to fix it. The typical home user doesn't
need a guarantee that they can get an exact
replacement part because they probably wouldn't
opt for that even if it were available.
True, it contains something like that, but that resolution does not contain authorization for war, unlike the resolution 678 [worldpress.org] which explicitely does. US simply decided, unilateraly, to pretend that it does.
No, as far as I understand it, the US maintains
that it is a sovereign nation which does not
require authorization from the UN to act.
Whenever possible, cooperating with the UN
to achieve its purpose of peaceful resolution
of conflict should be the highest priority,
but ultimately the UN's decisions are not
binding on the US or any other nation.
For those who view the UN differently, I can
understand why this might be upsetting. IMHO,
though, the view in the US is that we are going
to disagree with the UN every now and then.
Usually it is best to go with what the UN says
in order not to erode its influence in other
matters, but not always.
But members of US administration wanted the war badly, for personal and ideological reasons. The rest is history.
I don't support Bush, I don't like Bush (and I
haven't liked
him ever since I saw him give the commencement
speech at my sister's college graduation long
before he was president -- he seemed oblivious
to the existence of points of view other than
his own; for instance, he kept making dumb
sports jokes, and he delivered them as if he
though 100% of the audience would relate), and I
didn't vote for him. But I don't think Bush
got into the Iraq war for personal reasons.
People say he wanted to finish off what his
father didn't, and although I don't like Bush,
I think going to war for purely childish
reasons like boosting your own ego is below
even him.
The premium you pay for a hybrid right now is pretty
large and the gas you save doesn't make up for it
over the life of the car. But in a couple of years,
it might. Right now, the extra cost is basically
due to three things:
The first is demand since
there is a mild panic about gas prices right now,
but that will change in a few years, even if gas
prices don't go down much (though I think they will
go down some).
The second is the batteries, and
that won't change much, so there will probably
always be a premium for that reason, unless
some dramatic battery technology improvement
comes along.
The third is the extra complexity of the
car in general and the fact that it's new
technology that the industry hasn't figured
out how to make cheaply yet. I'm fairly
confident time will change this as well.
For one thing, if you look at the
mechanism
that the Toyota Prius
uses, you'll see that it's really clever.
The Power Split Device that they use is actually
fairly simple, and it acts as a replacement for
a transmission. The power split device doesn't
actually seem much more complicated than a
traditional transmission, and it is even missing
some of the complicated parts of a traditional
transmission, like a torque converter or a
clutch. I could imagine that eventually this
thing could be just as cheap to make as a regular
tranmission, or possibly even cheaper.
So what this all adds up to is that my guess is
that the premium for a hybrid will not ever
go away completely because you will always have
to have batteries, but the premium you pay for
a more fuel-efficient car could drop to only
a $1000 or $2000 above what you'd pay for the
equivalent non-hybrid car. If/when that happens,
hybrids will become financially worth it.
Personally, I think it's likely that we will
reach a point in the near future (maybe even
in the next 5 years) where hybrid cars will
become the better alternative financially.
And when that happens, they will reach a sort
of critical mass: their increased popularity
will mean more and more models will be introduced,
which will in turn lead to the kinks being worked
out, making them an even more attractive
option.
And for that reason, I think buying a
hybrid can be more than a political statement.
The more people buy hybrids, the more motivated
the auto industry will be to spend money on
R&D for hybrids, and the sooner they will reach
critical mass. So, if you buy a hybrid, it
wouldn't be unreasonable to take the view that
part of your money went to accelerating the
adoption of hybrids. You can think of it as
not just a political statement but your
contribution towards making hybrids mainstream
and ultimately reducing the fuel consumption
of the average car.
RMS's goal isn't to make FOSS popular in the fastest way possible. RMS believes that non-free software is immoral and wants to ensure that there is moral software out there that he and others of like mind can use.
I understand that goal and incidentally think it is
a good goal to have. However, if the goal is to
make FOSS popular, then an overly-restrictive license
should be avoided. Making the licensing more
restrictive than it is now won't promote development
of the software, and it won't promote adoption of
it either. All it will do is make free software
a high-maintenance proposition and drive people
to alternatives, most of which will be closed source.
I think the reason this is so important to me is
twofold. First, if a free software package becomes
more popular and more well-known, it gains momentum
and interest, and that tends to help it become
better software because more people want to get
involved. Second, I want to be able to trade
data with other people. I'm sure everyone is
familiar with the experience of wanting to be
totally open source but recruiters demanding
resumes in MS Word format. When people
standardize on software that isn't free, it
makes life difficult for those who want to use
free software. Adding barriers to adoption of
free software makes this worse, and a license
that is too complex can easily be a barrier.
We should be looking at ways to make it easier
to adopt open source software, because it benefits
the community when people adopt free software
over proprietary software, even if they
contribute nothing back and get rich
using the free software.
That's your opinion. However it's the opinions of the authors of the GPL (RMS and Moglen) who get to define the intention of the GPL. As they have found a flaw in the GPL which allows GPL licensed code to be used in a way counter to their intentions, they are taking responsibility and working to bring the GPL more in line with their intentions.
Yes, by limiting the freedom of people
to use free software for purposes Stallman
doesn't like. Stallman is making this change
for one simple reason: he wants more control
over how people use free software. I'm sure he
wants this for an understandable reason (probably
to prevent people from benefiting when they
don't give back), but that does not mean it's a
good idea. To me, when you start imposing too
many restrictions, you start defeating the
purpose of free software.
Plus, let's not forget what happens when you
make free software too difficult for commercial
entities to use: they find something else, and
they standardize on it instead of free
software. Let's imagine you want to modify Apache
to make some change that would benefit you but
would give your competitor an advantage (but
wouldn't really be useful to most regular people),
but let's also imagine the license to Apache
has been changed to force you to open source
changes you make. You really need this feature,
but adding it to Apache has too many negatives
because of the licensing terms. What are you
going to do? You're going to use some other
software instead that gives you the feature.
And that's bad for the
free software world, because if it happens too
often, people will standardize on something else
and free software will become marginalized.
I don't want to sound all anti-
functional programming, because I'm not, but
I am wondering something about this contest.
By allowing both functional and imperative
languages, it seems they are in some sense
comparing the fitness of not just the
programmers but the programming languages.
Are they doing this in purpose? Are they
trying to back up the claim the functional
programming languages are "more expressive"
than imperative languages because functional
languages tend to win the contest, and
the contest is partly about the programs
being able to stand up to change? The
way they describe the contest, it does
sound like that is part of the goal.
If so, then they are biasing the outcome
a little bit. How? By making the subject
matter of the contest an artificial intelligence
problem. The reason is this: I've known a
lot of AI people, and AI people tend to use
functional programming
languages. Thus, the people who are qualified
to address the problem, and whose entries are
most likely to win, are going to submit
entries coded in functional languages.
In fact, I looked through previous years'
contests, and in most cases the goal was
very AI-ish. In one case, the goal was to
implement a ray tracer driven by a language
called GML, but it seems like in that case,
half the work was parsing the language.
So basically, my question is whether the ICFP
is picking tasks that are repesentative
of real programming problems. They seemed to
lean strongly towards AI problems.
"Why is an integrated calendar and communications product a "good thing"."
Um... because communications often lead to appointments.
I'm a programmer. In my case, communications
often lead to my writing new code (to fix a bug
or to add features). So, shouldn't my e-mail
program and my compiler be integrated?
Sounds interesting, but the idea in the article
seems to be moving electric generation to houses
so that they can take advantage of the waste
heat that electric generation always entails.
Problem is, where I live, it's
104F (40C) outside today (September 25).
So tell me again why I'd want waste heat?
Around here, the peak power usage is in the
summer, at which time this technology would
do more harm than good. Power plants have
to be built to handle the peak power usage,
so the electric company would have to build
just the same capacity as they do now, and
electricity prices would remain the same.
I could use a system like this in the winter,
and it would be efficient then, but given that
I could probably only use it like 4 months
out of the year, it seems like a large
investment for not very much return.
So, it would probalby be marginally better
for the environment, but it's going to be a
lot more expensive. I would probably be
much better off financially if I were to
just get a wood stove or something that
makes it more efficient to heat the house
during the few short months when I actually
need to worry about it.
A highly structured and organized operating system developed under the instruction of a central authority, no doubt?
Linux is a disorganized mess. Key
components (like the memory manager, the
scheduler, or the filesystem) keep changing
because somebody had a cool idea and now
a whole subsystem gets to be replaced.
There are very few stable binary interfaces
where it would be convenient to have them
(unless nVidia builds one themselves),
and not that many stable source-level
interfaces either. The kernel build process
is aweful, lacking simple things like the
ability to put a configuration name into the
kernel in addition to the kernel code's
version, which BSD had with the config
command 15 or 20 years ago.
Nevertheless, Linux works as well as it does because
it is way above critical mass and there are
many bright people motivated to make it work.
Unstable crap gets introduced here and there,
but usually it gets sorted out. Linux is
kind of like
a bright kid who keeps getting into trouble by
doing naive and stupid stuff but is smart
enough to pull off a coup at the last minute
and find some bright idea to get himself out
of trouble.
Anyway, to sum it up, the lesson I'm trying to preach: design before you code, don't throw away...
The problem is this: often, there are lessons you
learn and insights that you gain through the process
of implementing the system, and these lessons and
insights were necessary for a good design.
Now, if you can give me some kind of formula to
gain these same lessons and insights before I
start coding, then I'd love to hear it. So
far, the best idea is to just think about
it really, really hard.
To put this a different way, you say to me,
"If you are throwing away code, your design
isn't good enough." But then I say to you,
"I agree. But how do I improve my design?".
There is no easy answer to this
question. If there were, people would just
do it. Sure, there are techniques, like
doing class diagrams, doing prototypes in a
high-level language, or writing
detailed specifications. But hindsight is
20/20, and there are very, very few other
ways to get 20/20 vision.
Really, Microsoft crushed them. The above statement may not be the right reason. Now whats in it from business standpoint for Microsoft to team up with Palm.
It seems so obvious I hardly want to say it.
Without this agreement Palm continues to make
exclusively Palm OS machines. With this agreement,
Palm makes a mix of Palm OS and Pocket PC machines.
Unless Palm's market share suddenly dramatically
increases, this means Palm OS now makes up a
smaller percentage of the handheld devices out
there.
So, Microsoft is gaining something they've been
wanting for a while: a greater percentage of
the handhelds in the world run Windows Mobile.
Windows is one step closer to being the dominant
operating system on handhelds. Plus there is
the other obvious thing: Palm naturally does
pay Microsoft some licensing fees, so Microsoft
gets cash.
Looking a little further (and thus speaking
with greater uncertainty), this could be a
good strategic move. Once Palm starts making
Windows Mobile devices, they are now directly
competing against people like Dell. Dell is
a huge company and has perfected the art of
making things for cheap and pulling in just
enough profit to make it worthwhile. They
can do the same thing for PDAs and they already
are with the Axim. Palm is a much smaller
company and, like Apple, has always managed
to demand a premium and a healthy profit margin
for their devices because they have some
uniqueness. But Palm can't do that when competing
with Dell. By going over to Windows, they are
giving up their uniqueness, and thus they are
also giving up their large margins. There's a
good possibility that Palm will lose that game.
So where does that put them? If Palm does lose
that game, then they've sacrificed focus on
Palm OS for the sake of Windows Mobile. It
takes lots of money to develop a new handheld.
Palm has limited money, and if they invest it
in Windows Mobile devices, it affects their
ability to make good Palm OS devices, because
they can't spend the money on that. And worse,
if they design a device that can run either
Palm OS or Windows, then they're stuck in a
difficult position: they can't sell the Palm OS
version for $400 that it would've commanded
while at the same time sell the Windows Mobile
version of the same device for $250 to compete
with Dell. So they've got to do one of two things:
either make no devices that run both operating
systems (which virtually doubles the development
costs and screws up economies of scale for
manufacturing and selling and supporting the
devices), or make devices that run both operating
systems and undermine their pricing strategy
for their entire line.
To me, the bottom line here is that Palm now
has to master the art of making cheap devices
like Dell, or they die. I'm thinking Microsoft
is secretly hoping that this deal kills Palm,
because if this does kill Palm, then it kills
Palm OS along with it. Do you really think
that if even Palm can't pull off selling
Palm OS that anyone else will try afterwards?
Of course, it could go the other direction.
Palm could somehow succeed at both. Dell
could decide that the Axim was a nice experiment
but PDAs are not where it's at, and it wants
to focus solely on PCs. That would remove a
ruthless competitor and give Palm a chance.
And Dell might even do that. Dell's stock
has been doing badly lately, which is
uncharacteristic for them, so they might be
ready to make some changes. But even if
Dell pulls out, there are other tough
competitors, and if Microsoft is betting
that this will kill Palm OS, that might not
be a bad bet.
Now that Windows is on the Treo, it won't be long until PalmOS is completely phased out, I feel. I wonder what will happen to PalmSource (weren't they just bought back by Palm?).
Nope, that's what virtually everybody was assuming
would happen. It seemed logical, once PalmSource
had been spun off and once it had started to tank,
for PalmOne to just let it slide for a little
while until it lost a lot of its value and
finally buy it back at the end for a bargain
to get the intellectual property rights it
needs
(the license for Palm OS) for cheap. If PalmSource
succeeds, then you can continue to license Palm OS
from them. If not, then you get a
bargain when buying them back.
In fact, my theory was that PalmOne bought back
the rights to the name "Palm" specifically so
that they could let this happen. If you're
going to let the company tank, you want to take
the valuable trade name "Palm" and dissociate it
from the company that's failing so that the
trade name's value isn't diminished. So, buying
back the name "Palm" seemed like exactly the action
you'd take if you were waiting for PalmSource
to become a bargain.
Much to my surprise, as someone else has
said, PalmOne let PalmSource get bought by a
third party instead. Incidentally, that company
is ACCESS Co., Ltd. of Japan, which makes application software
including the NetFront web browser, which is used on
Palm OS and other small platforms like mobile phones
and embedded systems (including VxWorks).
I guess now that PalmOne is introducing a
Windows-based machine, this all makes sense.
Owning the valuable Palm name was a wise move
regardless of whether they expected to buy
back PalmSource. Since they didn't buy back
PalmSource, perhaps they expect Windows to be
a significant part of their future direction.
Apparently they are thinking that a product
which runs Windows can still benefit from the
positive associations that many people have
for the Palm brand name. Personally, to me
the positive connotation of the word "Palm"
automatically
disappears when you combine it with "Windows",
kind of like the positive connotation of the
word "Cherry" automatically disappears when
you combine it with "cough syrup". But others
may not feel the same way, who knows.
Now that Palms can run more complex software, they badly need memory protection so a single app can't crash the whole thing.
One of the things I was surprised to learn when I
started writing Palm OS apps is that Palm OS
does have a form of memory protection.
It has existed from day one, even on the old
68k machines that didn't have a built-in MMU.
It's not the same as the memory protection
you see on, say, Unix, but it is a form of
memory protection.
The way it works is this: RAM is divided into
two regions. Most RAM is "storage heap", which
is kind of like a cross between a filesystem and
a database. Everything persistent (that isn't
wiped out when you reboot) is stored in storage
heap (except SD Cards, which are relatively new).
That means applications, their data, your
preferences, etc. is all kept in storage heap.
There is also a region of RAM devoted to dynamic
heap, which corresponds to what regular computers
use all their RAM for: the program's stack
and global variables live
in dynamic heap (allocated at app launch time),
and memory allocated with MemPtrNew()
(the Palm equivalent of malloc()) comes
from there too.
So where does the protection come in? Somehow,
and it may vary by device, although storage heap
is addressable memory and can be read just by
dereferencing a pointer, it cannot be written
to without making special API calls. I suspect
this is done by programming the memory
controller to make a certain bank read-only.
As a result, a program that goes nuts could
in theory write all over your important data
(your appointments and stuff), but it would be
awefully hard because it would have to
get a valid MemHandle and then
accidentally make the right system call
with the right arguments to trigger writing
to it. And getting a valid MemHandle
into the storage heap is only likely to
happen if you have the corresponding database
open already.
So, it's possible for a malicious app to
corrupt all your data, but it's extremely
unlikely that some app could crash and
accidentally cause damage to data in a
database it didn't explicitly open.
Now, you may be wondering, how does this
constitute proper memory protection? What
if two apps are sharing the dynamic heap
(which is writable) and try to overwrite
each others' data? Well, the answer is
that that's very unlikely owing to how
Palm OS doesn't actually support multitasking.
You can't have two apps open at once.
It may appear that you do since when you
leave one app and then return later, it
appears to be in the same state. But Palm OS
accomplishes this by encouraging apps to save
their own state and restore it at relaunch
and by making it very efficient
to launch an app (sinces apps are kept in
storage heap, which is addressable but read-only,
and since code can execute from read-only memory,
loading an app doesn't even require any I/O).
Therefore switching between apps is accomplished
by exiting one and starting the other, but it
feels like you are switching between two apps
that are running simultaneously.
This model has serious advantages (apps never
fight over the very limited available memory
on a handheld) but the approach really starts
to show its age when you want to have things
going on in the background like transferring
something over a network or playing an MP3.
In that sense, Palm OS really is behind the
times. There are ways around some things:
if you want to download messages from a
POP or IMAP server in the background, you
can essentially have the OS do a lightweight
launch of your app every time a packet comes
in. Because of the efficient launching
mechanism, this isn't totally intractable.
But it is a pain in the ass to program it,
so people just avoid doing stuff like that when
possible.
In my experience, most proslytutes, (whether they're bible-thumpers, scientologits, victimhood fetishists, commies, radfems, or any other flavor of zealot), know that their position is fundamentally irrational, so they seek validation by shoving their beliefs down the throats of others.
You know, I'm all for exposing stupid, wrong, and
evil motivations behind proselytizing. For instance,
the church I've been going to sent out an e-mail
a few weeks ago encouraging people to help out
victims of Hurricane Katrina, and the e-mail said
helping them would be a good way to "show them
that love [read: 'God'] always triumphs" or
something like that. My feeling was, how about
if we instead help them purely because we
care about our fellow man?
But I digress. The point is, I agree that people
have stupid motivations for proselytizing. But,
I was raised in the Christian church and have
been involved in it for 1/3 century now in some
form, and I have never seen anyone proselytize
for the reason that you describe. I've seen
people proselytize because they think they're
supposed to and they'd feel guilty if they didn't.
I've seen people proselytize because they think
they're supposed to, and deep down they're good
people who want to do what's right. I've seen
people proselytize because they're afraid God
is going to be mad at them if they don't.
I've seen people proselytize because they
are sure they're right and they
are sure
people who believe differently are wrong and
they feel sorry for those people and want to
help them. I've seen a
whole lot of people proselytizing
because it makes them feel like they're achieving
something if they make the church grow bigger
(even if it's at the expense of other churches
growing smaller). I've seen people proselytizing
because they have a bad self-image in general
and they feel like if they do what God wants
them to, then this makes them a good person.
But, I've never seen anyone proselytize because
convincing someone else of something validates
their own belief in it. Fact is, there are
plenty of people who really don't believe in
God, but there are plenty of people who honestly,
really, truly do believe in God and aren't just
saying that because they want to use the
concept of God to
manipulate others somehow. Now, whether they're
right or wrong about their belief in God is a
different story, but it would be a mistake to
think they don't really believe in it.
The problem with Christians is that they don't really adhere to anything in the Old Testamant unless it suits them.
...
The new law had two commandments. The first was to love God. The second was to love your neghbor. There were no sub-commandments. And that's the problem.
...
So, now the old law is used as a reference. Christians can pick and choose what they want to apply.
Aha! You're 90% of the way towards understanding
Christian ethics. One of the fundamental ideas
behind Christian ethics -- perhaps the
fundamental idea -- is that there is no system
of code that can completely and correctly
capture the distinction between right and wrong.
Laws are useful as guidelines, but they are
never definitive.
So yes, Christians can pick and choose. But how
can such a system make any sense? How does it
result in anything other than just total chaos
where everybody just does whatever they want?
The answer is that you're supposed to be seeking
a good outcome rather than relying on
a set of rules.
In 1 Corinthians 6:12, Paul makes it clear that
this is the Christian perspective:
"'Everything is permissible for me'--but not
everything is beneficial."
And, even more fundamental than understanding
the purpose of the laws is to lead you toward
a good outcome (and that following the laws
is in no way an end unto itself),
you're supposed to
be relying on God's direction to know what's
beneficial and what isn't. That's a higher
standard than following a set of rules. When
you realize the rules aren't always right,
what this means is that you should
seek to do better
than you do by following the rules alone.
And this does not just mean "legalism is bad
thing". What it means, in the Christian point
of view, is that anything which attempts to
substitute for following God's lead is inferior,
whether it's rules or anything else.
Naturally, this kind of system is prone to
abuse. But then so is a system of laws --
people simply break them, or they find ways
to do wrong without technically breaking them,
or they make the rules into such a big deal
that the system of enforcement becomes wrong
and hateful and counterproductive.
So what's needed ultimately is an attitude
of wanting to do what's most constructive
and beneficial. Then, even though the rules
are non-binding, you still want to consult
them because there is a lot of wisdom in
them, and they are right 90+% of the time
anyway.
For more info on this, I recommend Dietrich
Boenhoeffer's book Ethics, which I
understand was written as a result of trying
to work out the apparent conflict between
Christian ethics and the feeling that it
was his moral duty to support a group that
attempted to assassinate Hitler.
(Blowing up several people with a bomb
doesn't really feel like a Christian
thing to do, even if one of them is Hitler.)
Since nobody else has mentioned it yet, there is always this one
Maybe the warmer weather will help offset the hugely increased cost of heating that is being predicted for this winter.
(And no, I'm not 100% serious. But neither am I 0% serious.)
Well, for starters, nobody has even figured out whether or not P == NP yet. Sure, most people strongly believe P != NP, but nobody really knows for sure.
Kinda along those same lines, cryptography is built on the idea that certain tasks can be computationally infeasible to one group of people (eavesdroppers) but feasible and practical for the people who want to securely exchange information. We have stumbled on some algorithms that seem to fit this in practice, but according to what I understand, there is not really a cryptosystem out there for which anyone can supply proof that the computations that look hard actually are hard. For example, if I recall correctly, RSA's security rests on the idea that it is computationally very tough to factor a product of two very large prime numbers. But we don't know that there isn't an efficient algorithm for doing this. All we know is that we aren't yet aware of one.
There are other active areas of research. For instance, right now "managed code" systems like Java and .Net are in their infancy.
Computers have only just recently become
fast enough that it is practical to consider
switching to just-in-time compilation, and
the thing is, there are optimizations that
can be done when compiling at runtime that
can't be done when compiling before runtime.
(For example, you can use real profiling
data to automatically
create code that is most efficient for
the actual workload.) So there are bound to be
a lot of techniques to be discovered in this
area.
And there are other potential areas of research as well. We are already starting to see dual-core processors because it's looking to be hard to increase processor speed in conventional ways. We could probably use some research on how to do parallelism in other ways, possibly even going beyond dual-core machines or even beyond Von Neumann machines. If we ever feel compelled to do that, let me tell you, there will be a whole bunch of research needed in programming languages all over again, because imperative languages mirror the architecture we are using now but won't be suitable for an architecture that lends itself to automatically taking advantage of parallelism.
Finally, keep in mind where physics thought it was after Newton. It seemed that classical mechanics explained just about everything pretty well. Until Einstein came along and blew it all out of the water. For all we know, something like that could happen with computer science. Although it might be 100 years...
The visual quality of the screen should be way better than your m505 or m515. Both the m505 and m515 have 160x160 displays, and the T|X is supposed to be 320x480. Also, the contrast and general readability will be much better.
As for screaming, I'm not sure what you mean by that. If you mean making a whining noise, it is the case that some Palm devices do have screens that make a whining noise. How loud it is seems to vary from one individual unit to another. It also varies from one model to another. I've heard lots of reports that the Zire 72 does have issues with screen noise. I haven't, however, heard any reports about the same problem with the Tungsten|T5, which is the model that's most similar to the T|X.
Yes, they did have an agreement to use Windows Mobile on Palms. But obviously not on all Palms. It would seem that their strategy (for now, at least) is to continue releasing both kinds of devices. They may have plans to ditch Palm OS in the future, but they haven't announced that, and really nobody outside Palm knows whether they are going to do that. (And it might even be the case that nobody inside Palm knows the answer to that question yet.)
Palm spun off operating system development into a separate company, PalmSource, some years back. Palm hasn't been developing a next-generation OS; instead, PalmSource has been working on that. PalmSource will probably continue to do so, but whether Palm will adopt the new version remains to be seen.
Not exactly, or at least not in the George W. Bush view of the world. Bush delivered what amounts to a famous ultimatum, when he said that in the war on terror, you're "with or against us". After that, Saddam specifically came out and said publicly that he rejected the idea that there were only those two options.
Bush saw this as defiance, which is of course exactly what it was. Whether that justifies an invasion is another question. But it does constitute fucking with us, or at least challenging our power.
My feeling is that Bush felt we were better safe than sorry with regards to Iraq. There was uncertainty about whether Iraq still had weapons of mass destruction left (here's some background on that). To me, it seems like Bush though there might be WMD, and Saddam is an evil guy and thorn in our side, so why not just go take him out? Once again, I am not saying this does justify war, but I am saying that Bush had other reasons to invade Iraq that don't have anything to do with oil. I think he saw Iraq as Step 2 on the list of housecleaning that he felt like ought to be done in the post-9/11 environment.
Anti-American people are going to probably dismiss me as a dumb American for saying this, but I really do NOT get why people think that the war in Iraq is war for oil.
Let me explain. Many years ago, Bush was in the oil business. He then became Governor of Texas, and then President of the United States. After that, there was there were the September 11, 2001 terror attacks, and then we went to war in Iraq.
Since we went to war in Iraq, retail gas prices in the United States have gone through the roof. The prices were affected by Hurricane Katrina and also by Hurricane Rita, yes, but even before those things happened, the prices had virtually doubled in just a few years. Prices hit $2.00/gallon over a year ago, which is quite high considering that prices were under $1.00/gallon 6 or 7 years ago. And the majority of the increase has been since the war in Iraq started.
So, let's analyze this in terms of supply and demand. If we went to war for oil, wouldn't you expect that this would have improved gas prices? In fact, it has had the exact opposite effect. Analysts have said that the reason for high gas prices is the uncertainty that war creates in the market. And high gas prices have been hurting the US economy as well. For a long time, we were starting to have an economic recovery (after the dot-bomb crash), but worries over the price of fuel kept killing the momentum of the recovery.
Now combine this with the fact that we were already getting oil out of Iraq through the UN oil-for-food program. Then the war itself disrupted oil production, and it has been been disrupted after "major hostilities" were over, because there has been sabotage.
Basically, my question is this: if this is "war for oil", then why does everything seem to indicate that we have less oil now than we did before the war started, and why does it seem we are having more trouble getting the oil we do get? Bush is not the brightest guy ever, but I don't see how it's plausible that even he is dumb enough to go to war over oil and end up making things worse than they'd be if he did nothing.
Instead, I'd like to offer a different explanation for the war in Iraq. You may think the US's actions in going to war are extralegal, and you may be right (depending on how you view the role of the UN), but in my opinion, the US went to war in Iraq for a simple reason: it wants to protect its interests. Bush is a Texan, and I'm a Texan too, so let me tell you, although I don't agree with it, I know the attitude that many people around here take towards foreign policy. The idea is that the US needs to get out there and do whatever is in our own best interest, period. Yes, we should cooperate with others, but that's not the main focus. It seems pretty clear to me that this war has a very simple purpose.
And what is that purpose? It's not oil. It's not even fighting terrorists, directly. It's something very simple. It's a way of sending a message. The message is really simple: "You fuck with us, we'll find a way to fuck you over 10 times as bad." That is the real reason the US is in Iraq. It is there to make an example of someone, so that terrorists will not think we'll sit around and take terrorist attacks without responding.
Of course, that doesn't jibe with the official line either. The official line is that we're there to liberate people from an oppressive ruler. That's not entirely false. We do hope to accomplish that, and we have mostly done so. But the administration tries to give the impression that it's our primary motivation, and that's a lie.
Now, I don't mind if you disagree with the US going in against UN wishes to invade a country as a show of force. I don't entirely agree with it either, and experience has shown it was probably a bad idea. But if you are going to criticize the US for invading Iraq, please try to be accurate about why the US has done it. It's not that different from France's nuclear tests in 1995 and 1996 that the world opposed, or the more recent nuclear tests in Pakistan and India. Those were also shows of force.
Are there wires running from the device to the charger? No? Then it's wireless.
It may not be what you think of when you think of wireless, but it is wireless.
This is all well and good until you start trying to have good programming practices like, say, encapsulation. In order to use an object, you have to know details about its implementation, namely its size, which is something you shouldn't have to know.
Let me give a real-world example. Recently, I was coding a class that does a GUI version of the Periodic Table. For various reasons, it made a lot of sense in my case to create some lookup tables when the object is created, so that I know the exact geometry of every one of the elements. Subtle details determined whether these tables could be constants (and thus global constant data and not part of the individual instances) or needed to be part of the object itself. An implementation that used some other method than lookup tables would've made the object much smaller, because I had several screen coordinates and other values for each element. In fact, the difference could be an order of magnitude or more.
So, imagine that I need to use this Periodic Table object. Should I put it on the stack? In this particular case, on this platform (whose apps by default have a 4K stack size), it needs to go in the dynamic heap. So, the client code needs to know the rough size of the object, so it needs to know about its implementation.
Now, what would've happened if I had started with a class that had a small footprint, and the client code put it on the stack, but then I go back later and realize I can get a huge performance increase by making the object much larger? If I go through with it, I have to do one of two things: either change all the client code everywhere, or let client code risk blowing the stack.
You can see, then, how the stack vs. heap compromise really is an issue in C++ code. If development time means nothing, then by all means, optimize your code (and all the libraries it calls and so on) so that you maximize your stack usage without going over. But if you'd like a language that gives you good performance without making the programmer make that determination, then a language where the implementation chooses for you is probably better than a language where the programmer has to choose in most cases.
You've totally missed the point here. In either language, it survives until no longer needed. The difference is just that in Java, the generational allocator takes advantage of the fact that some pieces of allocated memory are not needed for very long and uses that fact to improve performance of the allocator.
The reason this is possible is that a fair amount of the work required of the allocator and deallocator involves dealing with different sized allocations and deallocations. When you want a piece of size N, the allocator has to somehow go through its free list and choose the best piece to give you, because the free list contains all different sizes. When you free a piece, the deallocator has to go through and determine if there are adjacent free pieces that can be combined with that piece to form a larger piece. There are algorithms and data structures to do this, but it still requires work.
Meanwhile, a generational allocator takes a different approach. It picks a region of memory and then just starts allocating at the beginning and moving
The story I've heard from an acquaintance who in charge of IT for a local company is that the difference in price has to do with differences in guarantees on availability of parts. If you buy a "large business" computer, then you're supposed to be able to come back to Dell in the future (say 2 or 3 years out, maybe longer) and say, "Hey, I have a computer with serial number XYZ123, and its video card is hosed. Please send me an exact replacement." And Dell is then supposed to have one on hand (or available somehow) that they can send you, even though it's basically an obsolete part. Whereas, if you buy a "home" machine and ask the same thing, you take your chances, and if the machine isn't fairly new, it's likely Dell will say, "Sorry, we don't carry that part anymore." Machines that are sold as "large business" machines are also not going to have mid-season substitutions on parts. If you order a "large business" Model ABC, it will be the same as the five Model ABC machines you ordered six months ago. But for "home" computers, there might be subtle changes in configuration on the same model as time goes on, like a different sound chip or something.
The reason this costs more is obvious: it means Dell has to provide an extra level of commitment to provide spare parts. The reason that paying more for this as a customer makes sense is less obvious, but in general a large business gains something by having a bunch of identical machine configurations that it supports rather than a hodgepodge of random crap. It's easier to support. It's valuable to a business to be able to replace a failed part with an exact duplicate. It reduces the amount of decision making required (my graphics card died -- hmm, what kind should I replace it with?), it ensures that you can get that broken machine to function just as before, and it prevents you from having to deal with driver issues and other compatibility problems (like certain hardware requiring a BIOS update to work).
By and large, the home user doesn't care about these things. If part of their machine fails, they either go, "Oh well, time to upgrade anyway," or they take it to the desk at Best Buy and get them to fix it. The typical home user doesn't need a guarantee that they can get an exact replacement part because they probably wouldn't opt for that even if it were available.
No, as far as I understand it, the US maintains that it is a sovereign nation which does not require authorization from the UN to act. Whenever possible, cooperating with the UN to achieve its purpose of peaceful resolution of conflict should be the highest priority, but ultimately the UN's decisions are not binding on the US or any other nation.
For those who view the UN differently, I can understand why this might be upsetting. IMHO, though, the view in the US is that we are going to disagree with the UN every now and then. Usually it is best to go with what the UN says in order not to erode its influence in other matters, but not always.
I don't support Bush, I don't like Bush (and I haven't liked him ever since I saw him give the commencement speech at my sister's college graduation long before he was president -- he seemed oblivious to the existence of points of view other than his own; for instance, he kept making dumb sports jokes, and he delivered them as if he though 100% of the audience would relate), and I didn't vote for him. But I don't think Bush got into the Iraq war for personal reasons. People say he wanted to finish off what his father didn't, and although I don't like Bush, I think going to war for purely childish reasons like boosting your own ego is below even him.
Sounds like a good browser and everything, but will it run on GNU HURD?
The premium you pay for a hybrid right now is pretty large and the gas you save doesn't make up for it over the life of the car. But in a couple of years, it might. Right now, the extra cost is basically due to three things:
The first is demand since there is a mild panic about gas prices right now, but that will change in a few years, even if gas prices don't go down much (though I think they will go down some).
The second is the batteries, and that won't change much, so there will probably always be a premium for that reason, unless some dramatic battery technology improvement comes along.
The third is the extra complexity of the car in general and the fact that it's new technology that the industry hasn't figured out how to make cheaply yet. I'm fairly confident time will change this as well. For one thing, if you look at the mechanism that the Toyota Prius uses, you'll see that it's really clever. The Power Split Device that they use is actually fairly simple, and it acts as a replacement for a transmission. The power split device doesn't actually seem much more complicated than a traditional transmission, and it is even missing some of the complicated parts of a traditional transmission, like a torque converter or a clutch. I could imagine that eventually this thing could be just as cheap to make as a regular tranmission, or possibly even cheaper.
So what this all adds up to is that my guess is that the premium for a hybrid will not ever go away completely because you will always have to have batteries, but the premium you pay for a more fuel-efficient car could drop to only a $1000 or $2000 above what you'd pay for the equivalent non-hybrid car. If/when that happens, hybrids will become financially worth it.
Personally, I think it's likely that we will reach a point in the near future (maybe even in the next 5 years) where hybrid cars will become the better alternative financially. And when that happens, they will reach a sort of critical mass: their increased popularity will mean more and more models will be introduced, which will in turn lead to the kinks being worked out, making them an even more attractive option.
And for that reason, I think buying a hybrid can be more than a political statement. The more people buy hybrids, the more motivated the auto industry will be to spend money on R&D for hybrids, and the sooner they will reach critical mass. So, if you buy a hybrid, it wouldn't be unreasonable to take the view that part of your money went to accelerating the adoption of hybrids. You can think of it as not just a political statement but your contribution towards making hybrids mainstream and ultimately reducing the fuel consumption of the average car.
I understand that goal and incidentally think it is a good goal to have. However, if the goal is to make FOSS popular, then an overly-restrictive license should be avoided. Making the licensing more restrictive than it is now won't promote development of the software, and it won't promote adoption of it either. All it will do is make free software a high-maintenance proposition and drive people to alternatives, most of which will be closed source.
I think the reason this is so important to me is twofold. First, if a free software package becomes more popular and more well-known, it gains momentum and interest, and that tends to help it become better software because more people want to get involved. Second, I want to be able to trade data with other people. I'm sure everyone is familiar with the experience of wanting to be totally open source but recruiters demanding resumes in MS Word format. When people standardize on software that isn't free, it makes life difficult for those who want to use free software. Adding barriers to adoption of free software makes this worse, and a license that is too complex can easily be a barrier. We should be looking at ways to make it easier to adopt open source software, because it benefits the community when people adopt free software over proprietary software, even if they contribute nothing back and get rich using the free software.
Yes, by limiting the freedom of people to use free software for purposes Stallman doesn't like. Stallman is making this change for one simple reason: he wants more control over how people use free software. I'm sure he wants this for an understandable reason (probably to prevent people from benefiting when they don't give back), but that does not mean it's a good idea. To me, when you start imposing too many restrictions, you start defeating the purpose of free software.
Plus, let's not forget what happens when you make free software too difficult for commercial entities to use: they find something else, and they standardize on it instead of free software. Let's imagine you want to modify Apache to make some change that would benefit you but would give your competitor an advantage (but wouldn't really be useful to most regular people), but let's also imagine the license to Apache has been changed to force you to open source changes you make. You really need this feature, but adding it to Apache has too many negatives because of the licensing terms. What are you going to do? You're going to use some other software instead that gives you the feature. And that's bad for the free software world, because if it happens too often, people will standardize on something else and free software will become marginalized.
I don't want to sound all anti- functional programming, because I'm not, but I am wondering something about this contest. By allowing both functional and imperative languages, it seems they are in some sense comparing the fitness of not just the programmers but the programming languages. Are they doing this in purpose? Are they trying to back up the claim the functional programming languages are "more expressive" than imperative languages because functional languages tend to win the contest, and the contest is partly about the programs being able to stand up to change? The way they describe the contest, it does sound like that is part of the goal.
If so, then they are biasing the outcome a little bit. How? By making the subject matter of the contest an artificial intelligence problem. The reason is this: I've known a lot of AI people, and AI people tend to use functional programming languages. Thus, the people who are qualified to address the problem, and whose entries are most likely to win, are going to submit entries coded in functional languages.
In fact, I looked through previous years' contests, and in most cases the goal was very AI-ish. In one case, the goal was to implement a ray tracer driven by a language called GML, but it seems like in that case, half the work was parsing the language.
So basically, my question is whether the ICFP is picking tasks that are repesentative of real programming problems. They seemed to lean strongly towards AI problems.
I'm a programmer. In my case, communications often lead to my writing new code (to fix a bug or to add features). So, shouldn't my e-mail program and my compiler be integrated?
Sounds interesting, but the idea in the article seems to be moving electric generation to houses so that they can take advantage of the waste heat that electric generation always entails. Problem is, where I live, it's 104F (40C) outside today (September 25). So tell me again why I'd want waste heat?
Around here, the peak power usage is in the summer, at which time this technology would do more harm than good. Power plants have to be built to handle the peak power usage, so the electric company would have to build just the same capacity as they do now, and electricity prices would remain the same.
I could use a system like this in the winter, and it would be efficient then, but given that I could probably only use it like 4 months out of the year, it seems like a large investment for not very much return. So, it would probalby be marginally better for the environment, but it's going to be a lot more expensive. I would probably be much better off financially if I were to just get a wood stove or something that makes it more efficient to heat the house during the few short months when I actually need to worry about it.
Linux is a disorganized mess. Key components (like the memory manager, the scheduler, or the filesystem) keep changing because somebody had a cool idea and now a whole subsystem gets to be replaced. There are very few stable binary interfaces where it would be convenient to have them (unless nVidia builds one themselves), and not that many stable source-level interfaces either. The kernel build process is aweful, lacking simple things like the ability to put a configuration name into the kernel in addition to the kernel code's version, which BSD had with the config command 15 or 20 years ago.
Nevertheless, Linux works as well as it does because it is way above critical mass and there are many bright people motivated to make it work. Unstable crap gets introduced here and there, but usually it gets sorted out. Linux is kind of like a bright kid who keeps getting into trouble by doing naive and stupid stuff but is smart enough to pull off a coup at the last minute and find some bright idea to get himself out of trouble.
The problem is this: often, there are lessons you learn and insights that you gain through the process of implementing the system, and these lessons and insights were necessary for a good design.
Now, if you can give me some kind of formula to gain these same lessons and insights before I start coding, then I'd love to hear it. So far, the best idea is to just think about it really, really hard.
To put this a different way, you say to me, "If you are throwing away code, your design isn't good enough." But then I say to you, "I agree. But how do I improve my design?". There is no easy answer to this question. If there were, people would just do it. Sure, there are techniques, like doing class diagrams, doing prototypes in a high-level language, or writing detailed specifications. But hindsight is 20/20, and there are very, very few other ways to get 20/20 vision.
It seems so obvious I hardly want to say it. Without this agreement Palm continues to make exclusively Palm OS machines. With this agreement, Palm makes a mix of Palm OS and Pocket PC machines. Unless Palm's market share suddenly dramatically increases, this means Palm OS now makes up a smaller percentage of the handheld devices out there.
So, Microsoft is gaining something they've been wanting for a while: a greater percentage of the handhelds in the world run Windows Mobile. Windows is one step closer to being the dominant operating system on handhelds. Plus there is the other obvious thing: Palm naturally does pay Microsoft some licensing fees, so Microsoft gets cash.
Looking a little further (and thus speaking with greater uncertainty), this could be a good strategic move. Once Palm starts making Windows Mobile devices, they are now directly competing against people like Dell. Dell is a huge company and has perfected the art of making things for cheap and pulling in just enough profit to make it worthwhile. They can do the same thing for PDAs and they already are with the Axim. Palm is a much smaller company and, like Apple, has always managed to demand a premium and a healthy profit margin for their devices because they have some uniqueness. But Palm can't do that when competing with Dell. By going over to Windows, they are giving up their uniqueness, and thus they are also giving up their large margins. There's a good possibility that Palm will lose that game.
So where does that put them? If Palm does lose that game, then they've sacrificed focus on Palm OS for the sake of Windows Mobile. It takes lots of money to develop a new handheld. Palm has limited money, and if they invest it in Windows Mobile devices, it affects their ability to make good Palm OS devices, because they can't spend the money on that. And worse, if they design a device that can run either Palm OS or Windows, then they're stuck in a difficult position: they can't sell the Palm OS version for $400 that it would've commanded while at the same time sell the Windows Mobile version of the same device for $250 to compete with Dell. So they've got to do one of two things: either make no devices that run both operating systems (which virtually doubles the development costs and screws up economies of scale for manufacturing and selling and supporting the devices), or make devices that run both operating systems and undermine their pricing strategy for their entire line.
To me, the bottom line here is that Palm now has to master the art of making cheap devices like Dell, or they die. I'm thinking Microsoft is secretly hoping that this deal kills Palm, because if this does kill Palm, then it kills Palm OS along with it. Do you really think that if even Palm can't pull off selling Palm OS that anyone else will try afterwards?
Of course, it could go the other direction. Palm could somehow succeed at both. Dell could decide that the Axim was a nice experiment but PDAs are not where it's at, and it wants to focus solely on PCs. That would remove a ruthless competitor and give Palm a chance. And Dell might even do that. Dell's stock has been doing badly lately, which is uncharacteristic for them, so they might be ready to make some changes. But even if Dell pulls out, there are other tough competitors, and if Microsoft is betting that this will kill Palm OS, that might not be a bad bet.
Nope, that's what virtually everybody was assuming would happen. It seemed logical, once PalmSource had been spun off and once it had started to tank, for PalmOne to just let it slide for a little while until it lost a lot of its value and finally buy it back at the end for a bargain to get the intellectual property rights it needs (the license for Palm OS) for cheap. If PalmSource succeeds, then you can continue to license Palm OS from them. If not, then you get a bargain when buying them back.
In fact, my theory was that PalmOne bought back the rights to the name "Palm" specifically so that they could let this happen. If you're going to let the company tank, you want to take the valuable trade name "Palm" and dissociate it from the company that's failing so that the trade name's value isn't diminished. So, buying back the name "Palm" seemed like exactly the action you'd take if you were waiting for PalmSource to become a bargain.
Much to my surprise, as someone else has said, PalmOne let PalmSource get bought by a third party instead. Incidentally, that company is ACCESS Co., Ltd. of Japan, which makes application software including the NetFront web browser, which is used on Palm OS and other small platforms like mobile phones and embedded systems (including VxWorks).
I guess now that PalmOne is introducing a Windows-based machine, this all makes sense. Owning the valuable Palm name was a wise move regardless of whether they expected to buy back PalmSource. Since they didn't buy back PalmSource, perhaps they expect Windows to be a significant part of their future direction. Apparently they are thinking that a product which runs Windows can still benefit from the positive associations that many people have for the Palm brand name. Personally, to me the positive connotation of the word "Palm" automatically disappears when you combine it with "Windows", kind of like the positive connotation of the word "Cherry" automatically disappears when you combine it with "cough syrup". But others may not feel the same way, who knows.
One of the things I was surprised to learn when I started writing Palm OS apps is that Palm OS does have a form of memory protection. It has existed from day one, even on the old 68k machines that didn't have a built-in MMU. It's not the same as the memory protection you see on, say, Unix, but it is a form of memory protection.
The way it works is this: RAM is divided into two regions. Most RAM is "storage heap", which is kind of like a cross between a filesystem and a database. Everything persistent (that isn't wiped out when you reboot) is stored in storage heap (except SD Cards, which are relatively new). That means applications, their data, your preferences, etc. is all kept in storage heap. There is also a region of RAM devoted to dynamic heap, which corresponds to what regular computers use all their RAM for: the program's stack and global variables live in dynamic heap (allocated at app launch time), and memory allocated with MemPtrNew() (the Palm equivalent of malloc()) comes from there too.
So where does the protection come in? Somehow, and it may vary by device, although storage heap is addressable memory and can be read just by dereferencing a pointer, it cannot be written to without making special API calls. I suspect this is done by programming the memory controller to make a certain bank read-only. As a result, a program that goes nuts could in theory write all over your important data (your appointments and stuff), but it would be awefully hard because it would have to get a valid MemHandle and then accidentally make the right system call with the right arguments to trigger writing to it. And getting a valid MemHandle into the storage heap is only likely to happen if you have the corresponding database open already.
So, it's possible for a malicious app to corrupt all your data, but it's extremely unlikely that some app could crash and accidentally cause damage to data in a database it didn't explicitly open.
Now, you may be wondering, how does this constitute proper memory protection? What if two apps are sharing the dynamic heap (which is writable) and try to overwrite each others' data? Well, the answer is that that's very unlikely owing to how Palm OS doesn't actually support multitasking. You can't have two apps open at once. It may appear that you do since when you leave one app and then return later, it appears to be in the same state. But Palm OS accomplishes this by encouraging apps to save their own state and restore it at relaunch and by making it very efficient to launch an app (sinces apps are kept in storage heap, which is addressable but read-only, and since code can execute from read-only memory, loading an app doesn't even require any I/O). Therefore switching between apps is accomplished by exiting one and starting the other, but it feels like you are switching between two apps that are running simultaneously.
This model has serious advantages (apps never fight over the very limited available memory on a handheld) but the approach really starts to show its age when you want to have things going on in the background like transferring something over a network or playing an MP3. In that sense, Palm OS really is behind the times. There are ways around some things: if you want to download messages from a POP or IMAP server in the background, you can essentially have the OS do a lightweight launch of your app every time a packet comes in. Because of the efficient launching mechanism, this isn't totally intractable. But it is a pain in the ass to program it, so people just avoid doing stuff like that when possible.
You know, I'm all for exposing stupid, wrong, and evil motivations behind proselytizing. For instance, the church I've been going to sent out an e-mail a few weeks ago encouraging people to help out victims of Hurricane Katrina, and the e-mail said helping them would be a good way to "show them that love [read: 'God'] always triumphs" or something like that. My feeling was, how about if we instead help them purely because we care about our fellow man?
But I digress. The point is, I agree that people have stupid motivations for proselytizing. But, I was raised in the Christian church and have been involved in it for 1/3 century now in some form, and I have never seen anyone proselytize for the reason that you describe. I've seen people proselytize because they think they're supposed to and they'd feel guilty if they didn't. I've seen people proselytize because they think they're supposed to, and deep down they're good people who want to do what's right. I've seen people proselytize because they're afraid God is going to be mad at them if they don't. I've seen people proselytize because they are sure they're right and they are sure people who believe differently are wrong and they feel sorry for those people and want to help them. I've seen a whole lot of people proselytizing because it makes them feel like they're achieving something if they make the church grow bigger (even if it's at the expense of other churches growing smaller). I've seen people proselytizing because they have a bad self-image in general and they feel like if they do what God wants them to, then this makes them a good person.
But, I've never seen anyone proselytize because convincing someone else of something validates their own belief in it. Fact is, there are plenty of people who really don't believe in God, but there are plenty of people who honestly, really, truly do believe in God and aren't just saying that because they want to use the concept of God to manipulate others somehow. Now, whether they're right or wrong about their belief in God is a different story, but it would be a mistake to think they don't really believe in it.
Aha! You're 90% of the way towards understanding Christian ethics. One of the fundamental ideas behind Christian ethics -- perhaps the fundamental idea -- is that there is no system of code that can completely and correctly capture the distinction between right and wrong. Laws are useful as guidelines, but they are never definitive.
So yes, Christians can pick and choose. But how can such a system make any sense? How does it result in anything other than just total chaos where everybody just does whatever they want? The answer is that you're supposed to be seeking a good outcome rather than relying on a set of rules. In 1 Corinthians 6:12, Paul makes it clear that this is the Christian perspective: "'Everything is permissible for me'--but not everything is beneficial."
And, even more fundamental than understanding the purpose of the laws is to lead you toward a good outcome (and that following the laws is in no way an end unto itself), you're supposed to be relying on God's direction to know what's beneficial and what isn't. That's a higher standard than following a set of rules. When you realize the rules aren't always right, what this means is that you should seek to do better than you do by following the rules alone. And this does not just mean "legalism is bad thing". What it means, in the Christian point of view, is that anything which attempts to substitute for following God's lead is inferior, whether it's rules or anything else.
Naturally, this kind of system is prone to abuse. But then so is a system of laws -- people simply break them, or they find ways to do wrong without technically breaking them, or they make the rules into such a big deal that the system of enforcement becomes wrong and hateful and counterproductive. So what's needed ultimately is an attitude of wanting to do what's most constructive and beneficial. Then, even though the rules are non-binding, you still want to consult them because there is a lot of wisdom in them, and they are right 90+% of the time anyway.
For more info on this, I recommend Dietrich Boenhoeffer's book Ethics, which I understand was written as a result of trying to work out the apparent conflict between Christian ethics and the feeling that it was his moral duty to support a group that attempted to assassinate Hitler. (Blowing up several people with a bomb doesn't really feel like a Christian thing to do, even if one of them is Hitler.)