Chandler finally reaches a 1.0 release
Chandler finally reaches a 1.0 release
Posted Aug 14, 2008 8:59 UTC (Thu) by ikm (guest, #493)Parent article: Chandler finally reaches a 1.0 release
Another Python program. I'll pass, but thanks.
Posted Aug 14, 2008 11:11 UTC (Thu)
by sitaram (guest, #5959)
[Link] (15 responses)
Posted Aug 14, 2008 13:39 UTC (Thu)
by ikm (guest, #493)
[Link] (14 responses)
Posted Aug 14, 2008 15:18 UTC (Thu)
by marduk (subscriber, #3831)
[Link]
Posted Aug 14, 2008 16:18 UTC (Thu)
by hathawsh (guest, #11289)
[Link]
Posted Aug 14, 2008 16:23 UTC (Thu)
by zooko (guest, #2589)
[Link]
Posted Aug 15, 2008 3:14 UTC (Fri)
by dmag (guest, #17775)
[Link] (9 responses)
"If it was in C++, bah, you get compilation error immediately. But in Python the program would happily work ever after, until some day the thing would finally go there and explode."
I must assume that you ship your programs as soon as they compile. Because if you run your program (even just once) to see if your new code really works, then you can't complain because that's what the scripters have to do too.
"The whole idea of the scripted paradigm, as I understood it, was to have more code in less time. I don't like how it turns out in reality, though, because what we have as a result seems to me to be more like "more code done by less competent people"."
Non-sequitur. Sorry, you failed to make a logical argument.
"But I'd rather have a program done by a pro, a program which
is fast and bug-free and consumes less resources at the same time"
Me too, but what does that have to do with programming language? Speed (and resources) are usually proportional to the algorithm you use. Bug-free is proportional to the amount of testing you do and/or the smarts of the designer.
Back on topic:
I actually downloaded Chandler and tried it. The application is not snappy, and makes me think I'm using a web application because screen updates take time. Also, their UI needs to be re-thought: It assumes you always want to copy items instead of move them to new categories. If you create an item and immediately delete it, you'll later find another copy in the "desktop" view.
I could see how some people would live with it and it's warts. But I'll skip it for now.
Posted Aug 15, 2008 10:17 UTC (Fri)
by rwmj (subscriber, #5474)
[Link] (5 responses)
I must assume that you ship your programs as soon as they compile. Because if you run your program (even just once) to see if your new code really works, then you can't complain because that's what the scripters have to do too.
The poster was referring to code paths which aren't exercised
in normal use. 'foo.bar()' is on some rarely used error path, and
it's not possible to completely test all paths through your
code. That's why the compiler ought to be picking up these errors
for you, rather than relying on very extensive yet incomplete
test suites. Not that having a test suite is a bad thing, but
no one can object to the compiler finding even more bugs, as early
as possible in development.
Speed (and resources) are usually proportional to the algorithm you use.
Yes, but Python also suffers from a
10-fold disadvantage in
speed and resource usage, even when the algorithms are identical.
Rich.
Posted Aug 15, 2008 14:33 UTC (Fri)
by k8to (guest, #15413)
[Link]
Posted Aug 15, 2008 17:03 UTC (Fri)
by mosfet (guest, #45339)
[Link]
Posted Aug 15, 2008 17:05 UTC (Fri)
by drag (guest, #31333)
[Link] (2 responses)
Posted Aug 15, 2008 17:06 UTC (Fri)
by drag (guest, #31333)
[Link]
Posted Aug 15, 2008 18:15 UTC (Fri)
by rwmj (subscriber, #5474)
[Link]
I seem to have touched a nerve there.
I now program almost entirely in OCaml, which
gives me the real world stuff (loads of libraries etc), performance very close to C,
low memory usage, proper error checking in the compiler, terse code, rapid development, etc. etc. In other words, all the advantages of Python, plus
the advantages of modern languages, without
having to wait for some far-off LLVM project to make Python fast. Rich.
Posted Dec 19, 2008 8:55 UTC (Fri)
by grahamperrin (guest, #55680)
[Link] (2 responses)
Correction: _you_ assume that you always create items in the dashboard.
This is not a criticism, I do understand your misunderstanding of the UI ;)
Clarification:
1. select (click) a collection
Result:
You will _not_ later find another copy of your item in your dashboard.
----
If you later copy something from a collection to your dashboard, it will remain in your dashboard
I suspect that for some newcomers to Chandler Project:
* Chandler Hub is a more graceful introduction than Chandler Desktop.
The Hub encourages (currently, forces) users to think in terms of collections.
I will make my suggestion to the chandler-users list.
Everyone: re http://chandlerproject.org/mailinglists#TableOfLists please note that you may
Kind regards
Posted Dec 19, 2008 9:05 UTC (Fri)
by grahamperrin (guest, #55680)
[Link] (1 responses)
Sometimes it helps to think aloud (write) before I realise such things.
Indeed, this behaviour is interesting.
My first guess:
* it's not usual to delete some thing.
More usual:
* change the nature of the thing.
Changing its nature may be:
* triage to: done
Let's rewind.
Q: Why did you create the item? (If it wasn't a note, task, event, whatever, then what was it?)
The question of most relevance:
Q: Why did you immediately delete it?
Posted Dec 19, 2008 9:09 UTC (Fri)
by grahamperrin (guest, #55680)
[Link]
In real life: I add real things to Chandler.
I suspect that this workflow issue is perceived only when working with items (notes, events, tasks,
If what you entered in Chandler was a passing thought, worthy of noting, even momentarily:
* allow yourself that thought.
Your thought was real. In Chandler, mark your note of that momentary thought as:
* done.
Posted Aug 25, 2008 10:15 UTC (Mon)
by pboddie (guest, #50784)
[Link]
Of course this kind of thing never happens with C++ programs, oh no! I've never seen the KDE crash dialogue from a C++ program ever! And thus we reach the heart of this critique: people who choose not to use statically-typed systems programming languages are not "übercoders" and must thereby form a queue at the "script monkey" counter. What's fascinating is seeing desktop developers with the kind of attitude exhibited here implement their daemons and services listening on sockets with a level of robustness that would fall short in most Web application deployments, with the code typically wrapped up in monolithic bundles which typically need a big recompile after the most trivial adjustment, frequently architected with dubious integration to the user interface, thus keeping the oft-stated holy grail of component-based desktops as distant as ever. All this hardly makes the "mainstream desktop" development experience more pleasurable, which is why languages like Python seem to be gaining support in the big two free desktops despite the systems programming snobbery present in the upper echelons (especially of the one whose name begins with K).
Posted Aug 15, 2008 14:34 UTC (Fri)
by k8to (guest, #15413)
[Link]
Chandler finally reaches a 1.0 release
I'm not a pythonista by any means -- been a perl guy for too long and the whitespace thing
(subconsciously) reminds of things like RPG...
But I am genuinely curious to know why you would make such a generic statement.
[Apologies for side-tracking the discussion from Chandler of course...]
Offtopic: Python
The statement is that generic because it was about the language itself. There are two things
I'd like to point out here.
First one is that dynamic languages tend to postpone errors as late as possible, contrary to
the static, compiled ones. Knowing how many of errors are caught at the compilation phase when
one does C++, I feel thrilled, or better yet, outright sick having no such thing in Python,
and hence having all the errors caught as one try using what you've made. Suppose one has some
rare code path which leads to a foo.bar() statement in one's program, and there's actually no
bar() method in foo. If it was in C++, bah, you get compilation error immediately. But in
Python the program would happily work ever after, until some day the thing would finally go
there and explode. I absolutely hate this. While the property of being dynamic has some
merits, I'd rather say this hurts more than it helps.
Second one is that Python, like any other scripted language alike, is just slower and consume
more memory than the usual C/C++. I don't like that. Nowadays there's a popular opinion that
computers are fast and RAM is cheap -- well, not only computers are fast and have RAM -- they
also differ from each other and they can do multitasking as well. Thing is, no one can know
where to draw the line, except when you do some dedicated server or embedded development. The
whole idea of the scripted paradigm, as I understood it, was to have more code in less time. I
don't like how it turns out in reality, though, because what we have as a result seems to me
to be more like "more code done by less competent people". This is most visible at the job
market, where nowadays are just too many mediocre scripted programmers (the ones who do web
and corporate environments mostly, but spreading to other tasks as well). They slowly fill
available space, pushing out true old-school grey-bearded pros to sides and niches. Maybe it's
just what life is -- mediocrity. But I'd rather have a program done by a pro, a program which
is fast and bug-free and consumes less resources at the same time than some crap that crawls
and dies all the time, but, hey, was done by some cheap if incompetent developers (no
intention to attack anyone, I'm criticizing companies' hiring tactics here). With FOSS, I'm
not saying that I hate people who do mainstream desktop programs in scripted languages, I
usually just say "No, but thanks". And also feel a bit sorry that these people didn't decide
to stay with the usual C/C++.
I think scripted languages are good to write maintenance stuff and such, just like what
/bin/sh is used for. While Python is more powerful than that, I'd still rather not see it
being used to create programs for mainstream desktop use, although I think it's ok to use it
in dedicated environments with known resources, like web development (whether this is
beneficial or wasteful is up to the producer to decide, I as the consumer wouldn't care much).
Offtopic: Python
It's called pylint.
Offtopic: Python
I disagree with you, as would many others, but this is not right forum for that discussion.
Offtopic: Python
You made some reasonable points. I happen to disagree, but I admit that your points *could*
be right.
However, I'm interested in testing your hypothesis empirically. If you're right, then
Chandler would tend to have more runtime errors and take up more memory and CPU than a
comparable program written in C or C++.
Is there another such program that we could compare Chandler to? This is a serious question.
Hopefully our Grumpy Editor will check some out, and maybe when he does he'll pay attention to
the incidence of runtime errors and to memory and CPU usage.
By the way, I'm biased because I'm one of the authors of an app written in Python --
http://allmydata.org Tahoe, the Least-Authority Filesystem. We have shared some code and some
ideas with the Chandler project over the years.
If you find that Tahoe incurs runtime errors I would love to hear about it -- there are
currently no known errors of that type in Tahoe. This is probably due to our extensive test
suite which covers 93% of lines (http://allmydata.org/tahoe-figleaf/current/) and which gets
executed on eleven platforms on every code commit (http://allmydata.org/buildbot/waterfall).
Also if the memory or CPU usage of Tahoe is too great then I would be interested in that, too.
(We do use C or C++ for the CPU-intensive parts: cryptography, erasure coding, etc..) We have
automated measurements of the memory usage of Tahoe
(http://allmydata.org/tahoe-figleaf-graph/hanford.allmydat...) and I
would say it is currently "bad, but not critical", and probably no worse than a similar C++
app.
Offtopic: Python
Offtopic: Python
Offtopic: Python
Speed, certainly, resources hardly.
Offtopic: Python
There are solutions on the horizon to get Python execution speed comparable to C or C++. Have
a look at the PyPy and LLVM projects.
Offtopic: Python
> Yes, but Python also suffers from a 10-fold disadvantage in speed and resource usage, even
when the algorithms are identical.
Quite frankly that irrelevant. It really is. It doesn't seem like it at first, but it is.
Why?
Because the vast majority of a program isn't speed sensitive in any sense of the world. Only a
small amount of most programs consume the vast majority of resources the program uses. And
because of the nature of programming it's often very difficult to determine which parts of the
programs are going to be the troublesome part.
(Now, of course, the following does not trump good programming design or performance oriented
thinking.. in fact it augments it.)
So when you program in python and you reach a point in your program which performance becomes
a serious issue, so that figuring out better algorithms in python isn't going to get you
better performance, then you have to hunker down and rewrite the troublesome parts in C and
import it back into your program as modules.
And, since, there is a number of different ways to do this that makes it easier then it used
to be.. Such as programming in python-C hybrid languages like Cython or Python.. AND you've
already done the hard work of designing better algorithms in a higher level language then
you'll likely end up with better performing code then if you started off programming in C in
the first place.
That is the key to having very complex python applications that perform very complex things is
to not program everything in python.
Python isn't like Java were everything needs to be java-this or java-that. It's quite happy
integrating with other languages. So you use what is appropriate.
--------------------------------------
A case in point:
Git is a example of a program that uses lots of high level languages and is very good
performing. It does not use any python, but it does use a large amount of Perl and bash shell
code.
Given that Perl is slow, and shell scripting is not only extremely slow.. it is very very
limited in what it can do, then that means that Git should be very slow and limited, right?
Well no. Of course not.
Git not only is faster, it's magnitudes faster most any other RCS (for the features that the
designers care about). Many that have been written in C++ and don't use any shell or perl. And
they've done that in less time and effort then what other RCS have benefited from.
--------------------------------------
Given infinite amount of time, skill, and resources C++ will always be a better choice then
Python. No question about it.
And given infinite amount of time, skill, and resources C will always be better then C++, and
in turn Assembly will always be better then C.
(since C was originally written in assembly, and C++ was written in C, then nothing that is
done in C++ can't be done in C, and nothing that can be done in C can't be done in assembly.
And, of course, the reverse is not true.. Assembly can do things that can't be done in C, and
C can do things that can't be done in C++.)
None of us have infinite resources and infinite skill.
----------------------------------------
The theory is that using high-level language isn't going to just allow you to crank out more
code quicker. The theory is that it allows you to crank out _better_quality_ code more
quickly. (But I can't tell you for certain that is true. I just don't have that much
experience.)
It is not a crutch for lack of skill, like many people treat it. In fact you still have to be
very aware of everything from the hardware on up if you want to have quality software.
What I can say is that I've used plenty of python things that were faster then plenty of C++
things, even though that's usually not the case. Generally they crash much less and don't have
memory leaks, which is usually the case.
*shrug*
Offtopic: Python
> Such as programming in python-C hybrid languages like Cython or Python
Oops. I meant Cython and Pyrex
Offtopic: Python
On topic: using collections, not mis-understanding the dashboard
> items instead of move them to new categories. If you create an item
> and immediately delete it, you'll later find another copy in the
> "desktop" view.
2. create a note, within or without the calendar.
for as long as you want it in your dashboard.
address the list without subscription.
Graham
My misunderstanding! But thought-provoking
* triage to: later
* add to calendar, or remove from calendar.
Reasons for immediately deleting something
whatever) that are for test purposes, not for real.
Offtopic: Python
If it was in C++, bah, you get compilation error immediately. But in Python the program would happily work ever after, until some day the thing would finally go there and explode.
I don't like how it turns out in reality, though, because what we have as a result seems to me to be more like "more code done by less competent people".
While Python is more powerful than that, I'd still rather not see it being used to create programs for mainstream desktop use, although I think it's ok to use it in dedicated environments with known resources, like web development (whether this is beneficial or wasteful is up to the producer to decide, I as the consumer wouldn't care much).
Chandler finally reaches a 1.0 release
You won't use a program because its developers don't drink the same kool-aid as you. OK.