Slashdot Mirror


User: stripes

stripes's activity in the archive.

Stories
0
Comments
1,586
First seen
Last seen
Profile
(view on slashdot.org)

Comments · 1,586

  1. Re:The GIMP on Adobe Unveils Open Source Library · · Score: 1
    Do you masturbate to a picture of RMS

    Nope, even if I leaned towards men, I doubt he would be my type. He looks an awful lot like some random homeless guy. Some random homeless guy carrying his Usenix papers around in a beat up grocery bag even. He may be smart, but he is seriously un-carasmatic. Plus his rhetoric is a pretty big turn off. Er, I mean, um, er, is far more abrasive then I find comfortable, yeah, that's the ticket.

    However I find the "appeal to authority" form of argument compelling when one is discussing not only that particular authority's works, but one where that authority has chimed in on that same question before.

  2. Re:The GIMP on Adobe Unveils Open Source Library · · Score: 1
    No, it does not. It prevents you from stripping off the copyright notice, just like GPL or current BSD licence does.

    Yes it does, at least according to RMS who wrote the original GPL, and I assume had a hand in the second version as well. Oh, and no, it does more then prevent you from stripping off the copyright notice.

    It requires that you include attribution in your user documentation which isn't where software copyrights go, and it also restricts what you can say in your product advertising, which again is more then a normal copyright notice.

    Now those are not really unreasonable requests, but they conflict with the GPL which establishes a few hobbles and obligations of it's own, one of which is basically "the conditions set forth here in the GPL are the only conditions you may place on people you give or sell the software to". Which is not only reasonable it is pretty much the GPLs entire power.

    Now imagine a GPL that allowed you to establish extra restrictions. It would basically read "anyone you give this software to is free to do things to it, unless you don't like it", in other words it would allow you to say "I built something out of this GPLed software, and you can't give it to anyone else". Which you can do with some open source licenses, but the GPLs reason to exist is really to keep whatever it covers forever free.

    That isn't to say the MIT license, or the 3 clause BSD license, or the 2 clause BSD license, or the GPL is better then any of the rest, they all have their strong points. But they can't all be mix n' matched.

  3. Re:Backing Away? on Apple Backing Away From FireWire · · Score: 2, Interesting
    I believe I read somewhere that USB has more overhead than Firewire for the same transfer rate.

    It does, but I'm pretty sure that is because nobody has bothered to make a "smart" USB controller, or if they have because almost everyone puts a dumb USB host controller on their motherboards.

    Please note packet size limits, DMA capabilities and the like are all made up for the remainder of this post, because I don't know them and I'm only using them to make a more general point.

    It's like all the USB host controllers DMA out one packet (I think that is up to 256 bytes or maybe 1K or so) and then interrupt the main CPU to find out what to do next, while many FireWire controllers can be given a list of packets to DMA out before they interrupt the CPU.

    That isn't an inherent flaw in USB, someone could make a USB host controller that does chained DMA and gets the same sort of CPU savings that FireWire controllers tend to. Likewise someone may cut corners on a FireWire host controller and it may end up with similar overhead to USB.

    What _would_ count as an inherent flaw in USB is if it only did tiny packets, while FireWire could do very large ones, but that wouldn't change the CPU usage significantly, but it would effect how much of your 480Mbits/sec wasn't your data (i.e. if USB had 16 byte packets and FW had 64K packets USB at 480Mbits/s wouldn't be able to keep up with FW at 400Mbits/s for disk transfers, but it would for mouse movement because mouse packets are, or ought to be tiny).

  4. Re:Backing Away? on Apple Backing Away From FireWire · · Score: 1
    I highly doubt, however, that we'll ever see Apple using USB as the primary transport method for devices where a stable and reliable data stream is integral to their operation.

    I thought USB was a reliable bit pipe. I also thought USB had bandwidth reservation and isochronous delivery. I believe that was placed in the original spec for USB audio output devices, but I didn't think there was anything that would prevent it from being used for anything else that needs bandwidth guarantees and a cap on latency and jitter (i.e. video cameras).

    Has that been removed from USB 2.0, or is it just not widely implemented?

  5. Re:Powerbook Needs Updating on Think Secret Predicts Sub-$500 Headless Mac · · Score: 2, Informative
    ibook vs powerbook is blurred right now. What is the advantage of the powerbook? Slightly faster processor and memory... video card. That's it.

    Higher res screen, independent external display, PC card slot (except on the PB12). I don't think the iBook has FW800, and it may not have 1000BT. I don't know if the ibook has the superdrive either.

  6. Re:Finally - make it an impulse purchase on Think Secret Predicts Sub-$500 Headless Mac · · Score: 1
    Yea, I know about the expose feat. It sure is helpful for some ppl who switch applications once in a while (like every half hour). It does not help when you know the order of your terms ("three tabs from here is the term I need right now") and just want to navigate back and forth _very quick_.

    For Terminal the command-number keys switch between any of your first nine (maybe 10, I donno if command-0 works) terminal windows. I only have about 6 or so, so it works for me. Command backtick or command tilde in almost all apps cycles through windows, so that can be useful sometimes as well.

    Oh, and in Terminal's preferences (or window settings?) you can set the command key short cut to appear in the title bars.

  7. Re:laptops get bad battery life... on Broadband Blimps · · Score: 1
    IF laptop buyers would indicate directly to the companies that they could "struggle by" with a laptop that weighed the same as the laptop they had just a very few years ago, and put the weight difference back into a REASONABLY sized battery that did what it was supposed to do, then laptops today would have much better battery life. Laptops buyers need to make up their minds, can they and will they physically carry one or two more lbs, to have the same power and feature set laptop they have now, but with amuch better battery in it?

    There are other options. My old PowerBook G3 had two bays, either could have a battery or CD/DVD drive in them. For a long trip you could put two battries in. My Sony Viao could get about 40 minutes on the "slim line" battery, or a few hours on a giant hunk of LiIon that weighed more then the rest of the laptop. My current PowerBook doesn't have either option, the best I can find is an external battery which does give ten hours of life. I havn't gotten one (about $200), but I am tempted. It would be enough battery to get from CA to the UK.

    At least those are options if you sometimes want a light laptop (carry from home to work and back, maybe a quick stopover at Starbucks), and sometimes want a long lived nomad's laptop (say a plane flight with no airline provided power). If you always need the "more power" option, then I guess you may want something less kludgey then an external battery (or losing the optical drive, or butting the "blob" on the Sony). I prefer the flexable option myself, but do kind of yearn for the 2-bay option rather then the external battery one.

    (of corse the external battery is nice in that 2 laptop users could share it, and that it is more likely to be usable with your next laptop then any more tightly integrated solution)

  8. Re:Yeah! on Mac OS X 10.4 "Tiger" Preview at WWDC · · Score: 1
    What I want to know is, why do you have to upgrade from Panther to run the most recent version of the Safari web browser? Does a web browser really require the "advanced functionality" offered by Panther? Did the APIs really change that much?

    From reading the blog of one of the Safari coders Safari does all manner of tricky font manipulation for very percise rendering control. Those APIs have been changed and improved (new information reported, new capabilities added) in Panther. My guess is that Safari actually drove those changes ("Um, guys, we need to be able to tell if a font can foo, and also we have to tweak the baz settings...and I don't see how to do that in the current API").

    My guess is there are some similar things in other Apple apps. Or maybe they just don't want to have to test the newer software with the older OSes (that would either require more money for a bigger test division, or stretch them thiner and reduce quality on new releases). Or...gasp! horror! They want to make a little cash for all their hard work. (personally I'm going with a mix of the test & new API reasoning).

  9. Re:Yeah! on Mac OS X 10.4 "Tiger" Preview at WWDC · · Score: 1
    You weren't using a G3 Firewire Powerbook

    I was, black laptop, bronze keys, two (I think, may have been one) FireWire port. It skipped frames when it hid or restored the remote control, but it did work.

  10. Re:But there have been Linux worms on Worms Jack Up the Total Cost of Windows · · Score: 1
    EVERY linux/unix installation I have ever encountered forbids chowning ANYTHING if you are not root

    PreSysVR4 AT&T Unixes let you chown any file you owned to any user (it did clear the suid bit when it changed owners). That let you give your files to other users so you and a coworker could work on a document, taking turns without inventing a group containing just the two of you and figuring out how to do locking.

    When BSD Unix invented disk quotas they had to restrict chown. SysVR4 has non-root chown'ing as a per mount option (I assume you would have it off on anything with a quota, and could safely have it on elsewhere).

  11. Re:Interesting but... on Putting Google to the Test · · Score: 1
    This article assumes that the person looking for information already knows other means of finding information.

    Sure, but it also says "if you spend time learning some non-internet ways to find information this is about as good as it gets". It'll let you know if you want to spend time learning them.

    The bit I find unfair is the library searches assume you are at a library. The google or phone searches can be done from home or work (on on the road with a cell phone...or phone and laptop).

    Also, the author directly phones some people. What if I don't know exactly who to phone?

    Meet more people?

  12. Re:iTunes 4.5 is a screen hog on Apple Releases Major iTunes Update · · Score: 1
    This is Slashdot. If your network machine goes offline a lot, you're doing something wrong!

    Yeah, but my iTunes running computer is a laptop, one that leaves home. Frequently it ends up connected to the internet via GPRS, and that ain't fast enough for streaming music. Sometimes it even ends up on an airplane where there isn't any Internet connection at all. I still want music then, and hauling along a beige box isn't gonna work. Even one of the stylish Firewire drives isn't so good then :-)

    So I stick with the core of my music on my laptop itself, but I wish I were able to do something more useful with music shared from other boxes when it happens to be available.

  13. Re:Um..... on Apple Releases Major iTunes Update · · Score: 1
    iTunes 4.x most definitely has that feature - Shared Playlists (via Rendezvous). Make sure "Share my music" and "Look for shared playlists" are on in Preferences.

    Right, but that shares their playlists with me, it doesn't let me add their songs to my playlists. I can't have a smart play list that matches all songs by Offspring and have it magically get songs from a CD I don't have but my wife does have (and is has sharing turned on for). I can't even have a dumb playlist with a mix of both her Offspring tracks and mine.

    Of corse that sort of thing has its downsides too. Should a smart playlist matching all five star songs match her five star songs too? We don't have identical tastes in music. You could have a check box on smart play lists for "match shared music", or each condition could come in "local, shared, local+shared" flavors. Unfortunately one option is limiting and the other is unwieldy. Also should the Offspring smart playlist include all her music that I already have? If not how exactly does it tell (checksum, track name, or artist+alblum+track)?

  14. Re:Circular logic at its finest. on MIT Student Grills Valenti on Fair Use · · Score: 1
    He doesn't make any money from people using a free Linux DVD player, except on movie sales. Apparently the MPAA members want more than to sell movies these days, they want their hands in movie viewing equipment as well, as it is quite a lucrative market.

    I doubt it...not with DVD players going for under $50 in some places. The only real reason to dislike free DVD players is they make it impossible to outlaw code that can be used to get at the raw bit stream. Well, OK, and they make it possible to have DVD players that skip "mandatory commercials" or worse yet allow the bypass of DVD reagon codes.

    It ain't for the direct profit though. How much money can the MPAA suck out of a $50 DVD player that has at least $30 of parts plus another $15 of patent licenses? How much can they suck out of a $15 DVD that has $3 of parts (assuming a nice cover and book insert!) The make money of razor blades, not the razors.

  15. Re:Going down the chart point by point... on C, Objective-C, C++... D! Future Or failure? · · Score: 1

    Right -- Boost isn't part of C++. On the other hand, at least in my mind, it's a sort of quasi-standard. It's (usually) well-designed, up to generally-acknowledged C++ best practices (being a peer-reviewed library). It has a permissive license. It's available on a wide range of platforms. It's well documented. Hence, my argument goes like this: if D has feature X, which C++ doesn't have built-in, but which is available in "native-alike" form in a Boost library (that is, if its Boost implementation is so nicely done that it "feels" like it's as good as a built-in C++ feature), then I don't think D has much, if anything, to boast about (on that particular score).

    Except that many many many C++ programmers use C++ without the benefit of boost. Not all of boost is as well debugged as libstdc++, and despite best intentions not even a significant fraction of the boost lib is going to be in the next standard C++ lib (SPRIT won't be for example). Also C++ compilers are free to conspire with the standard C++ lib to operate faster by knowing more then can be determined by looking at the source code. They can not do so with boost.

    Indeed, to me, it's an indication of a well-designed language if it doesn't _need_ alot of built-in stuff -- the user is able to build their own primitives, in effect. That's power, to me. Especially when you combine that inherent language facility with a mature, broad, widely-used quasi-standard library like Boost.

    Yes. Agreed. I would rather have a language that has ref counting smart pointers in a library then built-in and impossable to user define because it means someone can implement smart pointers that point to stuff in a persistent storage pool, or smart pointers that do some other odd thing. Language support for user defining complex numbers can also be used to define other types of numeric data types (numbers in modulo space, bignums, rational numbers) while merely having built in support for complex isn't nearly as useful.

    On the flip side having the language be extensible enough to implement things like complex numbers, but also just plain defining them in the language for notional connivence isn't bad.

    Exactly what I was referring to. See above reasoning about the Boost library. So, if you're using a well-designed C++ implementation, then it's trivial to have runtime bounds checking in debug mode. True, it isn't built into the language. But I don't care too much about defining what's built-in vs. what isn't. The question is, what is the user experience with a not-too-badly-implemented version of C++?

    You don't get runtime checking on char buf[1024] though. You also have problems where a already compiled C++ lib that you want to use was compiled against the normal C++ stdlib so your debug STL iterators can't be passed in (then again most C++ libs come with source -- commercial or not)

    There may be important platforms have a C++ compiler, but don't allow you to redefine things in std::. That might end up being some embedded platform you need to use some day, which would suck. (ok, so D is unlikely to run on that platform, and if it does gcc does, which other then speed issues and a poor debugger isn't a bad C++ platform).

    Plus like boost, lots of C++ programers don't use SafeSTL (I don't know if it is due to fear, ignorance, running on unsupported platforms, short term laziness, or what).

    Since D is brand-new, I'm guessing there's only one implementation

    Two. The one to guy who orignally wrote the zortech C++ compiler wrote (which is as far as I know the D reference platform) and a gcc based one that works for most but not all D programs (I think it has template issues similar to the old C++ "where is the template" issues - because I think it compiles the source one file at a time rather then all at once)

  16. Re:Going down the chart point by point... on C, Objective-C, C++... D! Future Or failure? · · Score: 1

    I agree with a lot you say, so I'm only including the stuff I disagree with.

    Arrays of bits Again, I take issue with C++ not having these. Check out Boost::dynamic_bitset

    I accept the argument that STL things should be thought of as "part of C++", but I'm not sure boost should be thought of as "part of C++"...if you do, what external non-standard libraries do you exclude?

    Array bounds checking There's really no meaningful way you can say C++ doesn't have array bounds checking. Come on! What C++ has, which might be much better than D, is switchable array bounds checking. You don't _have_ to check array bounds (e.g. for release builds), but it's trivial to add if you want it.

    It does? I know there are some drop in STL replacements that do this (not for the base array type, but for vectors and other STL template types), but that isn't exactly standard. Vector has the at method, but that isn't switchable.

    FYI, D's bounds checks can be switched off.

    Lightweight objects Meaning, stack-allocated objects?

    I think so, auto objects have the same lifetime as stack objects in C++ so there is nothing stopping them from being allocated on the stack. I don't know if they really are though.

    Explicit memory allocation control Does this mean D has _real_ destructors (unlike Java's pseudo-destructors -- "destruct this object eventually, when you get around to it")

    The destructors for auto objects fire when you would expect them to. The destructors will also fire if you explicitly call delete. If you do neither of those the GC will do it's thing and the destructor will be called "sometime". So as far as determinism goes it isn't as good as using boost::shared_ptr for everything, but it isn't as bad as Java because you can make it happen without going too far out of your way. You might even be able to port auto_ptr to D.

    Constraints Sounds interesting, but I can't tell what they are. Are they more than just syntactic sugar?

    Not really. Well, kind of. Constraints and the Design by contract stuff can all be done in C/C++ with assert and a few tricks. What D can do is still allow the compile to make assumptions based on the constraints/DbC stuff when you have them "disabled for a release build" (not that I'm convinced it is good to disable asserts for release, but that is a side issue). Also this is the kind of thing where syntactic sugar and language conventions is important anyway.

    RAII ? Why not spell out the acronym? "Runtime something something initialization...?"

    It is a C++ idiom (and term!). "Resource Acquisition Is Initialtion". In other words you get all your resources by having an object's constructor allocate them, and you release them via object destructors. That way if you ignore exceptions you get proper cleanup anyway (and you also get proper clean up across multiple exit paths). Stack objects in C++ and auto objects in D are a big help here, as are C++ auto_ptr and their more powerful and safer (but slightly slower) brother boost::shared_ptr

    Macro text preprocessor

    I'm on the fence on that one. Nested functions and templates and conditional complation take over a whole lot of the slack here, but there are still a few things I use macros for (mostly having to do with __LINE__ and __FUNCTION__ and errors and control flow) in C/C++.

  17. Re:Design by Contract on C, Objective-C, C++... D! Future Or failure? · · Score: 1
    And this differs from assertions how, exactly?

    Some syntactic sugar to allow you to assert things on multiple exit paths without putting an assert on each bit. The compiler also knows that nothing can get past an assert without satisfying the assert, so it can use that information to optimize. (and that can be done even when you do a "production build, don't check asserts" which you can't do in C/C++)

    Also the focus is a little different, in a DbC language you are expected to use them all over the place. In C/C++ it is frequently thought of as a "matter of style", or even outlawed because "it makes stuff crash".

  18. Re:some slight corrections on IT Workers Not Eligible for Overtime in New Rules · · Score: 2, Insightful
    Try to come up with a free market reason for paying a living wage,

    There isn't one, but there is a free market reason to not pay a living wage except to people who can do work with that much value.

    Assume for the moment that minimum wage is $7.75, and that McDonalds fry flipper get payed $8.00 and a living wage is $10.00. Now assume the mimum wage is pushed up to $10. Does that make the fry flippers happy? They get $10.00. Instant raise! Cool! Except...

    The prices on anything produced with labour that use to be cheaper then $10 will go up. The prices of things dependent on those things will go up, and so on. That $10 may end up buying less then $8 did. That is standard economic answer A. Standard answer B is we find a way to make that labour cheaper, like cut any employe benefits, or hire illegally cheap labour. Then there is answer C: discontinue the product or move it somewhere cheaper (not likely with fries, but it could be for other things, it happened to USA based clothing companies). There is also answer D: increase productivity, for unskilled tasks this may be with a machine of some sort.

    So we end up either with a fry flipper that makes $10 that buys as little as the old $8, or a fry flipper that is unemployed (and thus not making 20% less then the "living wage" but 100% less!). It also eliminates a sub-living wage job for people that don't need a living wage! (people living with their parents, or with some other type of support who only want to a little "spending money")

  19. Re:full C compatability? on C, Objective-C, C++... D! Future Or failure? · · Score: 1
    Well, the biggest problem with ref-counts is that they are slow. You waste a lot of time updating the reference counts, and when compared to regular pointers, you add one level of indirection to every memory access. Thanks to how caches work, especially with relatively small objects this can mean that you need about twice the amount of cache to actually hold your working set.

    Not all ref counted objects have an extra level of indirection. I think that boost::shared_ptr ends up passing two pointers around, which has cache effects but not indirection effects. Somehow my mind skipped over that. Other implementations can store the reference count in the object they point to, which still has some effect on cache sizes but not the same as either increasing the size of a pointer, or doing an extra level of indirection.

    Another problem is freeing. When a ref-count reaches zero, and you free a node, you now have to check whether any other nodes also became free'd, and so on. Alternative strategy would be to free those objects lazily, only when needed, but then you are just as deterministic as any other GC, and ref-count isn't that good strategy anymore.

    Er, doesn't GC have the same problem? When the GC gets around to discover that foo is no longer in use it'll find the 15 things that only had foo referencing them and delete them too, right? (and I assume "deterministic" was intended to be "nondeterministic" right?)

    As a practical matter I have started using boost::shared_ptr for more or less all pointers in my last few projects and they have all managed to be "fast enough". If I had the option of using GC I would give that a shot to see if it was fast enough too, but I couldn't really do without deterministic delete times on some objects. I guess what I really want is to be able to tell the language whether I need GC'ed pointers or ref counted pointers to specific types and then just let it deal with them.

    I've used garbage collected languages (APL for example) before, and liked it. Reference counts are almost as easy to use and let you manage heavy weight objects. In fact I suspect a lot of Perl programers think they have garbage collection (they currently have ref counts plus a kludge of a GC pass more or less at program exit).

  20. Re:Old news on C, Objective-C, C++... D! Future Or failure? · · Score: 1
    I presume it has exception handling like C++, but hopefully better.

    I think it is pretty much identical to C++'s except you have to throw a object (well a reference to one), not a basic type. I don't know wether or not D's standard lib makes better and more consistent use of them, and has a better base class for them. That would make a big difference, even in C++ exceptions would be simpler to deal with if that were so.

    One hopes the debugger deals with them better then gdb seems to.

  21. Re:full C compatability? on C, Objective-C, C++... D! Future Or failure? · · Score: 1
    One thing you mentioned in passing was that you revile auto_ptr. auto_ptr definitely has its limits, but I'm curious as to why you detest it

    Ok, so maybe I shouldn't detest it so much, and I wouldn't if it wasn't the only smart pointer the standard had that attempts to do lifetime management for you. Sure if they had a more general purpose one (like boost::shared_ptr, which I hear is the he next draft standard) and presented auto_ptr as a lightweight alternative to use in carefully restricted areas, then, yeah, sure.

    However as the only stab at "no GC for you, try this" it isn't so hot. It can't really be stored in a vector for example (it mostly works, but because of the transfer of ownership semantics mean if an unexpected copy is made of an element it kind of vanishes...and vector doesn't say "and no little bit of leftover debug code takes a peek"). So not only does it not work in STL containers, it actually seems to but fails at random seeming times. Or (I expect) may work on some implementations and fail on others.

    To be honest at one point I thought I knew when I could abuse a vector of auto_ptr, and well, I was only mostly right. That soured me on them. Maybe unfairly because I knew I was abusing them...even so I have seen many people use them where they shouldn't without realizing it. The standard needs better warnings...well, plus an alternative so people don't wander down the garden path just because it seems simpler then writing their own smart_thingie_with_a_cool_policy_ptr.

  22. Re:full C compatability? on C, Objective-C, C++... D! Future Or failure? · · Score: 1
    Indeed, this is possible, especially when you are running low on memory (or your whole process is swapped out). One idea with generational collection is that we only collect the most likely garbage, so there's no need to swap in everything, and since we are usually collecting the youngest objects, those are already most likely to be in memory. But indeed, swap-in can happen. On the other hand, if you use smart-pointers or reference counters, it's likely to be much harder to control what's touched.

    With ref counted smart pointers isn't the thing that is touched the thing that is being deallocated? Even then only if it has a destructor? And since it is deallocated promptly after the last ref goes, isn't that frequently shortly after it has just been used for the last time? (I admit, sometimes it is long after in some of my code, but not normally)

    I can see GC having advantages in packing things, or just plain in not having to bother with calling delete (but boost::shared_ptr gives that, as long as you avoid cycles)

  23. Re:delete object; on C, Objective-C, C++... D! Future Or failure? · · Score: 1
    One can specifically delete a GC-allocated object, and the GC will delete it immediately without running a collection pass.

    Cool! Do any stray pointers to it just dangle, or does something null them out? Are references through them caught, or a quiet error?

    If the GC finds the pointers later does it throw an error, ignore it, or end up doing something wrong?

  24. Re:full C compatability? on C, Objective-C, C++... D! Future Or failure? · · Score: 1
    Not necessary in D, use the gc to manage routine memory.

    That is why I used the example of auto_foo of iostream since an iostream normally has a file descriptor which is allocated out of a limited space and you want a quick release of for other reasons (forcing the final flush).

    Depends on the situation, but one idiom that works well is to create an RAII object that holds the resource, and create that in the user code, not the library.

    Right, but if there is a library that holds objects and does something good with them (hashes look like they are built in, but maybe a OctTree for handling arbitrary shaped regions in 3 space or something). I have some kind of heavy weight object (like the 3D texture stored on a graphics card). I want to use the OctTree lib to manipulate my objects. How do I use the lib, but get prompt deletion of my objects?

    Not having a good answer for that wouldn't stop me from using D, just from using D for some things.

    I assume I can force a GC if I find out I'm out of storage on the 3D card (or out of file descriptors), am I right? (that might be a good workaround for some things)

  25. Re:Shenanigans on C, Objective-C, C++... D! Future Or failure? · · Score: 1
    This is very possible to do with D, and the only reason it isn't doing it right now is I haven't spent the time on the GC to make that happen.

    How will you avoid having things who's addresses were once passed to C code move?