Slashdot Mirror


User: VortexCortex

VortexCortex's activity in the archive.

Stories
0
Comments
5,203
First seen
Last seen
Profile
(view on slashdot.org)

Comments · 5,203

  1. Re:Murphy's law on IPhone 4 Survives 1,000 Foot Fall From Plane · · Score: 1

    There is some sort of law in electronics that makes a gentle caress the most common cause of electronics death.

    I believe you're referring to Electrostatic Discharge (ESD), the pertinent "law" would be Ohm's.

  2. Re:Specialized graphics h/w may not be useful here on Air Force Supercomputer Made From PS3's · · Score: 2

    From those discussions I also recall that the PS3 is not considered strong in general purpose number crunching work; your run-of-the-mill Intel is doing much better across the board. It's these specific tasks where [specialized] units like the PS3 can shine. Them being marketed as gaming consoles of course helps in keeping volume up and cost down, making them almost disposable and at least easily replaceable in case of hardware failure.

    (emphasis mine) -- There is an issue with this statement. You assume that newly purchased units can actually be used beyond the capacity to run Sony signed code.

    Let's not forget that the PS3 should only be used for gaming according to their manufacturer. As I recall, Sony removed the "other-os" option and are suing those that wish to re-enable that option. Thus, the units that the USAF are using are not disposable because they can not be easily replaced in case of hardware failure...

    ...Unless:

    • A supply cache of units was purchased while Sony had not disabled the other-OS option.
    • You operate above the DMCA, and "cracking" the PS3s is considered a "simple" task.
    • Sony loses their suit against George Hotz, and cracking what you purchase becomes legal.

    In any event the PS3 is not currently a suitable choice for use in a mesh-super-computer, even when only performing the specific calculations that it excels at, given the current legal situation and state of copyright law.

    Interesting to note: Sony won their battle against the movie industry when Sony's Beta Cassettes were targeted as a helping/promoting piracy on the grounds that Beta Cassettes had the capacity for non-infringing uses. The USAF is now using Sony PS3s in a substantial display of non-infringing use, which lends credence to the idea that cracking the PS3 firmware has the capacity for non-infringing uses.

    I hope George Hotz's lawyers site the USAF PS3 supercomputer and the Beta Cassettes ruling and win us all Game Console DMCA exemption in the process. (Ironic that Sony's own favorable legal precedent could now bite them in the ass.)

  3. Re:Jesus Flipping Christ... on Firefox 4, A Day Later · · Score: 4, Insightful

    So, you're saying that the Google funded, closed source, web browser "Chrome" is capable of quickly catching up to the features that the free donation & ads supported Firefox took so long to develop.

    Basically you're saying: more money and developers == Faster Development. Thanks for your input Mr. Obvious.

    P.S. Yeah, that's right: I said, "Chrome is closed source". Chromium is open source, and Chrome may or may not be a direct derivative of the open source Chromium. Needless to say, Google adds their own proprietary bits to Chromium before they ship it as Chrome, ergo: Chrome = Close Source.

    Don't get me wrong, I like Chromium. Chrome is a joke -- Why anyone would want to use the closed / proprietary version (with Google's late-night secret sauce added), when there's a clean open source version available is beyond me.

  4. Re:Developer friendly means what exactly... on Mirah Tries To Make Java Fun With Ruby Syntax · · Score: 2

    If C/C++ were so developer un-friendly you would not find them under the hood of pretty much every new language that claims 'developer friendly,easier,etc etc etc ' that came out in the last 20 or so years. Take Java , .NET etc all have some sort of C under the hood.

    To be perfectly fair -- The first thing you do with a new chipset after you have an assembly compiler is to create a C compiler. Once you've bootstrapped the C compiler, subsequent versions of the C compiler can be written in C. Only then, do you begin building the other languages on top of C (unless you have a good cross-compiler -- in which case I suppose you can compile Ruby, Java, Perl, etc right for that chipset -- but the device drivers on that new hardware won't be written in one of these languages, so you'll still need to be able to compile assembly and C first).

    So, all the other languages are written in C because it's cross platform, and you're pretty much guaranteed to have a C compiler available for any set of hardware. The only alternative to C or C++ for language design is assembly or, Flying Spaghetti Monster forbid, machine code...

    Recently I've had the "fun" of coding up a simple OO language in assembly for x86, then adapting it to take advantage of x64 -- Were the language implemented in C I would have just recompiled it on the x64 machine. (Yes I know about LLVM, but this self-taught man likes to teach himself things like compiler design by thinking through "how would I make a compiler", then implementing the ideas, and finally reading about how others solved / optimized the task -- It's amazing how many similar solution concepts arise given the problem domain even when you have no prior knowledge of the field; Evidence that "inventions" aren't all that unique and idea monopolies are atrocious)

    Perhaps there are so many languages written in C/C++ because those are the low level languages that are commonly compiled into machine code, and are not platform dependent?

  5. Re: Not even about syntax for me. (informative ran on Mirah Tries To Make Java Fun With Ruby Syntax · · Score: 1

    I am a guy who loves computer languages. I had a lot of fun with Ada for gawd's sake. I am pursuing erlang at the moment. Thought about haskell but it was just too big to play with...

    So keeping that in mind?.... Java and the JVM was a non-starter for me.

    I happen to agree, although I've had to learn & use Java for well over a decade. Java's main selling point is that it's cross platform -- Building cross platform C code is just as easy (C was designed to be cross platform).

    Applications more complex than a terminal program have to talk to the APIs available on the platform / OS. Unfortunately Windows & *nix don't offer the same API for things like networking, threading and window management... However, this still doesn't make Java interesting to me in terms of cross-platform portability because of libraries like OpenGL, Qt, GTK+, SDL, etc.

    The fact that Java requires a byte-code interpretor means that it's slower than code compiled into native machine code. The benefit of "write once" code still doesn't remove the "debug everywhere" requirement either. This means I'll have to have the hardware anyway in order to test my Java apps on it... and if that's the case, why not just compile C / C++ code for the hardware?

    You still have to compile Java, so it's not appealing as an embedded user scripting language (if you do, you have to trust that the user has the correct Version of Java installed or include a huge 100+MB JRE tag along).

    The JVM is supposed to be safe because it's a VM, interpreted byte code -- Well, Actually, it's not. For the sake of performance Many JVMs compile the byte-code into machine code and run your program right on the metal...Just In Time (JIT). Is this more secure than a native binary executable? Perhaps, but I wouldn't call it "Safe". Browser JavaScript engines are now doing the same thing for performance. Running untrusted JS or Java as machine code on the CPU fills my guts with dread.

    Don't get me wrong. I like scripting languages such as Perl, Python, etc (not PHP), JavaScript, and interpreted languages like Java. However, each language has a set of use-cases that it excels in. Lisp and (lately) JavaScript are great embeddable scripting languages. Python is a good dynamic language. Perl is wicked fast at handling text and is a great glue language (Perl modules in C == fast).

    Java tries to be the kitchen sink, but that's the role that C / C++ fills. With cross platform C/C++ Application / UI libraries available, Java just doesn't seem the right choice for many of our new projects. Whenever I find a problem that Java can be applied to, something smaller, faster, or easier is also on the list.

  6. Re:My class defs are in .h, you insensitive clod! on RMS On Header Files and Derivative Works · · Score: 1

    Actually, sometimes putting the entire definition in a header file is the right thing to do. Template classes, for example.

    It is never the right thing to do. You should always separate the template implementation from the template interface. This allows you to create a pre-compiled shared library that includes commonly used template instantiations.

    Lets say you have a template class that has a non-trivial amount of implementation code. If all the implementation is in the header files then every program that uses the template must instantiate each template form, even for commonly used forms such as int, float, long, double, char, etc.

    In this case it is better to explicitly instantiate these commonly used template forms in the implementation, and allow programs to link against the shared library binary only using the header file. If you do not separate the implementation from the interface, then this is impossible to achieve and each individual executable will re-instantiate all the commonly used template forms for no good reason (wastes space). For templates that have trivial implementations this is not as big of an issue.

    Search for: "separate template definition declaration", and "explicit template instantiation". These are areas that "noobie" template users fail to take notice of.

    Even if whole program optimization is your goal, it is better to create a .cpp file that includes all the other .h & .cpp files and compile it as a final step in production, than to have to re-compile all the implementations each time one line of code changes.

  7. Re:My class defs are in .h, you insensitive clod! on RMS On Header Files and Derivative Works · · Score: 1

    You can't put method bodies in a separate .cpp file if you use templates. When your library is mostly templates (like Boost), then all its code must necessarily be in the header files.

    This does not mean that the code in the headers can "still be reduced to just the interface facts".

    You are misinfromed. Yes you can, see this example. You can separate the template interface and implementation; However, in order to instantiate a template you must have access to the implementation. Libraries can provide just the template interface and a .so with commonly used instantiations to link against, and as long as you only use the explicit instantiated template forms you will not need the template implementations.

    Lets say you have some LGPL function template that has its implementation in the .h file. I can reduce that to just the interface facts:

    mylib.h
    template <T> int someFunc( T * aVar );

    Here is the .cpp implementation that has been split out (still LGPL) -- A derivative of the original combined template interface / impl.
    mylib.cpp
    #include mylib.h
    template <T> bool someFunc( T * aVar) {
    if ( aVar != NULL ) return true;
    return false;
    }

    // Add Explicit template instantiations commonly needed -- prevents multiple instantiations of these:
    template <int> bool someFunc ( int * aVar );
    template <float> bool someFunc ( float * aVar );
    // etc..

    I can then compile a mylib.so that falls under the LGPL. I can then link NON LGPL programs to it via the sanitized .h file.

    In order to use the template with types other than float or int I must have access to the mylib.h & mylib.cpp and include both. Or, I can use just the .H and recreate my own .CPP implementation to provide a compatible yet non-derivative, non-infringing library that I can license however I choose.

    Once I have created (& possibly extended ) my own non-infringing lib, I am free to distribute the stripped down mylib.h file along with the mylib.so binary and other programs that only use the explicitly instantiated float, int and MyNewClass variants will not need to include the mylib.cpp code.

    In the case of Boost, you'll end up re-creating much of the template implementation, but this does not mean that one can not separate the template implementations and interfaces, and subsequently create a compatible, non-infringing library that is compatible with Boost.

    Or, you can separate the boost interface from its implementation, explicitly instantiate the template forms you will be using in a derivative .so binary (same license as Boost), then create your non-derivative application that simply uses the instantiated template forms and distribute it under a different license.

    TL;DR: You are wrong. My point stands that I can reduce any .h files to their implementation facts then create non infringing .cpp file to link my own non-infringing / separately licensed code against.

  8. Re:My class defs are in .h, you insensitive clod! on RMS On Header Files and Derivative Works · · Score: 1

    I guess people are talking C? I program C++ with the classes in the .h files, using the .cpp files only to determine which root classes get created. Criticize me for not following good practices, but I do this to simplify translation of programs between C++ and Java, where everything is done in terms of classes and there is only the one .java type source file.

    So at least in C++, the header files could just specify interfaces or they could specify the entire program source code.

    Your project must then compile as only one object, and a change to just one line of code triggers a complete re-compile of the object. This prevents you from reusing your unmodified static or shared libraries in a new compilation -- No boundaries exist such as threading library, network library, etc... If so, when the executable binary application is built it must compile all that other code too (single translation unit), each time, even if the none of the classes change. Your everything in the .h method is only practical for smaller application projects, certainly not libraries, and I'm damn grateful that I don't have to compile the entire GNU / Linux stack (or even just X + QT/GTK/OpenGL) into each C or C++ program I write...

    Java allows you to compile against the byte code because the .class files contain the interface definitions. C / C++ .o & .so files do not contain the interface definitions; After compilation / linking of the executable the API interfaces & linking symbols are not needed (unless for debugging or public API purposes).

    However, even with your single translation unit approach I can strip out all of the implementation code from your .h files, leaving only the interface. I can then compile code that provides or uses the interface that your compiled code offers. The stripped down .h files will contain only the facts of how the API is accessed (what function names take which parameters and return what values), and will not contain the details of how the results are achieved.

    If you have an amazing program called DeepThought.h that has a function such as:

    int UltimateAnswerToLifeTheUniverseAndEverything( void ) {
    int answer;
    ... complex calculation here ...
    return answer;
    }

    I can create my own DeepThought.h that looks like this:

    int UltimateAnswerToLifeTheUniverseAndEverything( void );

    And implement the function in my own DeepThought.cpp file. Code that used your DeepThought.h can now use my DeepThought.h, and our implementation details can be totally different, and IMHO, uninfringing.

    int UltimateAnswerToLifeTheUniverseAndEverything( void ) {
    // cache answer to avoid re-calculation.
    static int results( 0 );
    if ( results == 0 ) results = ( (5 << 2) | 1 ) << 1 ;
    return results;
    }

    It is a fact that your DeepThought.h provides a function called "UltimateAnswerToLifeTheUniverseAndEverything" that takes no parameters and returns an integer. The fact that my DeepThought API provides a similar interface that is compatible with your API has nothing to do with how each of our products achieve their results. Your function may return different results than mine, but the way people ask either library to produce results is the same.

    Vehicles have a common interface: steering wheel and accelerate / decelerate pedals. How the body / engine is designed and built can vary widely between manufacturers; Patents / trademarks, etc keep them from duplicating each other's exact designs and implementations. However, the manufacturers can all provide a similar common interface. Every time you buy a new car you don't have to learn a different set of controls (Joystick + hat switches?).

    TL;DR: Even if you put all the code in the .h It can still be reduced to just the interface facts, and re-implemented without infringing.

  9. Re:My Airport Base Station with a Time Machine dri on Dutch Court Rules WiFi Hacking Not a Criminal Offense · · Score: 1

    And you've hacked the router to do all of this. That's not the way a router was intended to be used. By that same definition, my laptop is a dinner plate, and a few of my old LEDs are firecrackers.

    Define "hacked". I used the router's own firmware upgrade feature. My point is that "router" doesn't have to mean embedded device -- Hell, take any computer with more than 2 nics on it and you've got a router. Some of the "factory" firmware upgrades add additional features -- Clearly the functionality is PROGRAMMABLE -- Guess what, that makes it GENERAL PURPOSE.

    Your problem is that you are defining a "computer" by the software that it comes with -- from the factory. I'll have you know that none of the "General Purpose Computers" in my house came assembled from any "factory" I build them from parts -- The Hard Disk Drives I purchased came WITHOUT SOFTWARE. By your definition I "hacked" them into being "general purpose computers" and even "routers" by installing Windows & Linux on them... That's a really rediculous view. All of my PC and (embeded) router HARDWARE are capable, from the "factory", of installing additional 3rd party applications & OSs.

    So, if you're granting that my "hacked" (firmware upgraded) router is a "general purpose computer", and is no longer an "embedded device", and my PC can also be a "router" -- We've just established that the terms "router", "embedded device", and "general purpose computer" all depend on what SOFTWARE is running on the programmable computer... Hint: It's programmable == It has software == It is general purpose, not tied to a set of tasks by the hardware == Yep, routers can be computers. Computers can be routers, some routers are computers, however, not all routers are capable of "general purpose" computing -- Just any that have a "firmware upgrade" option... (that's nearly all consumer routers; Very few are hard-coded non-programmable silicon -- Security flaws can't be updated, bad idea).

    Your "install & run arbitrary applications" definition of a computer does not hold water.

    The purpose of laws against cracking computers is to prevent data and/or identity theft. To the extent that your router contains enough data to steal... maybe... but that's *really* a stretch.

    Perhaps you missed the whole part of my comment about how having access to a router gives you the ability to do a man-in-the-middle attack and thereby STEAL ALL OF MY WEB DATA. (Which is why I had to set up the Y config -- because anyone gaining access to a router can steal all of your web data traversing it via ARP poisoning/spoofing.)

    Besides, nobody is talking about cracking into the device itself anyway, but rather cracking access keys to gain access to the network. I'm sure even you would agree that doing so does not constitute accessing a computer.

    The NETWORK is made of COMPUTERS. Accessing the network gives you access to data that my computers are transmitting -- What, at your house you just have a bunch of "routers" with no "computers" attached? (What's the purpose of a router again? To connect COMPUTERS to other COMPUTERS.

    Even if someone hacks the WIFI and only uses my Internet connection, they are unlawfully accessing the web service that I pay for -- I have a usage cap. If they fill up jugs with my water hose, they are stealing the water I pay for -- If they use my bandwidth they are stealing the service I pay for. I suppose you wouldn't care if someone just siphoned off the fuel in your car -- They didn't actually gain entry to the vehicle itself, they left it right where it was -- It's not stealing then, right? WRONG, it's illegal because they took something (fuel) that was yours.

    If it's not illegal to steal my network bandwidth then it shouldn't be illegal to pull your electric meter can out, and close the gap with copper bars to use free electricity right? You're just using the electri

  10. Re:My Airport Base Station with a Time Machine dri on Dutch Court Rules WiFi Hacking Not a Criminal Offense · · Score: 1

    would beg to differ. However, it still isn't a computer. Embedded devices might be functionally capable of doing many of the same things, but what distinguishes a computer is whether it provides the ability to install and run arbitrary software (not just whatever the manufacturer installed) that allows the user to create and store significant amounts of information without hacking the device in any way.

    Keep begging, I'm not letting you "differ"; Not with that bogus argument anyhow.

    I SSH into my WRT54GL router w/ Tomato Linux firmware. My router runs Linux from the factory and has a "firmware upgrade" option that I used to install the aforementioned Tomato Linux.

    I write my own small C programs, cross compile them for the router scp (copy) them into and run them in the router. It is every bit as much a computer as a web server is -- Hint: you use the HTTP web server interface to configure most every router. My "embedded" router IS a computer. It stores data & programs that processes my data, and transmits information.

    Hell, my wired "router" that is connected to the actual modem is a Linux box with 5 NICs -- each of my WIFI routers (one for my devices only, the other for friends / relatives) are plugged into one of the NICs on the Linux box. This Y router configuration prevents devices on the "friends" router from being able to ARP poison machines on the other wireless router (my small programs running in the wifi router can detect and report ARP poisoning and other funny business, disable the WIFI and alert me).

    Anyone who gains access to my "friends" WIFI router can ARP poison anyone connected to that router, MiTM attack & DoS attack them as well -- This judge is misinformed. Hacking into the "friends" router can actually allow someone to "steal" my own copyrighted software that it STORES and RUNS.

    Anyone who gains access to my wired "firewall" router can subvert the whole system, and screw with my public GIT repositories (thankfully PGP signing exists).

    Something you can do on a computer is play a Tetris clone against multiple live opponents and add to or view the stored high score tables. Well, I created a terminal application that uses Ncurses to do just this -- I run it inside the "embedded" WIFI router (4 players at once actually doesn't kill the router performance too much). Hell, search Ncurses games to find games you can run in your Linux based router and play via SSH. Also checkout OpenWRT, you may prefer it to Tomato Linux.

    Rule of thumb: If you can play & create games on it and it can keep a persistent high score table its a damn computer.

  11. Re:Microsoft helps the internet on Microsoft Conducts Massive Botnet Takedown Action · · Score: 5, Interesting

    Except that you can have as much security as you want, but there'll still always be people who click yes to every message box because they want... I dunno, whatever the craze is these days. 100 free animated cursors or whatever. It's not the fault of people like us, who would know how to spot a botnet, it's the fault of people that don't know, and don't care. The same would happen on *nix if you had huge quantities of people who would give anything and everything root just because it asked. What MS really need to do is educate people - instead of an intimidating dialogue that says "DO YOU WANT TO ALLOW THIS YES | NO" there needs to be an explanation of the consequences.

    Actually, my parents and my neighbor are all all of the ilk that click yes to everything. They constantly infected their machines until I installed Linux for them (I used the Vista is crap FUD wars in my favor). The UI difference between XP and Win7 or Vista is somewhat similar to the difference they encountered on Linux, and there are FOSS replacements for all of the things they need to do: Email, Web, music & video, simple games, Create / Open documents & PDFs (Open office actually opens a few of my mom's MS docs that MS Office wouldn't, and the OS's print to file:PDF is a brilliant built in feature.)

    My neighbor (a 75yr old retired mechanic) has actually commented that he finds the Linux OS prompt dialogs easier to understand & more informative.

    Windows: User Account Control stops unauthorized access to your computer. If you started this action, continue. ____(Program/Action)____
    ____(Publisher)____

    Linux: To install or remove software, you need to authenticate. (An application is attempting to perform an anction that requires privileges. Authentication is required to perform this action.
    Password: ____
    (click here for details)
    Action: ___
    Vendor: ____

    He has less problems using Linux (shaky hands -- Gnome has drag & drop threshold, no more accidental file copy or moves).

    The yes-clickers still click yes to everything, they have tons of software installed from the repositories that they don't really need, just because they never uninstall things after they try them. They have yet to contract a virus. Theoretically they are still at risk, and if the Linux using crowd becomes a large enough target, we may see more viruses in Linux (this theory has yet to be proven, and fails to consider that, unlike Windows, Linux has many different distributions and a better update policy).

    However, right now, Windows is the only OS that has rampant malware problems. If you are concerned with the rampant virus problem, it would be wise to not willfully expose yourself to it by not using the only OS brand with such a problem... It seems like a simple solution, UI difference FUD & incompatible application FUD be damned; I've found that most people who actually give desktop distros of Linux an earnest try have no more problems than people upgrading from XP to Win7.

    Yes, there are people who must use some program that just doesn't have a FOSS replacement or run well in WINE -- These people are not the average user that has been trained to clicks yes to everything and hosts botnets.

  12. Re:Surely he should petition on Judge Lets Sony Access GeoHot's PayPal Account · · Score: 2

    for Sony's encryption key?

    You jest, but how can they claim he infringed their property without disclosing what said property is? It would be like me claiming that Sony is using a huge swath of code they stole from me (protected by encryption & therefore DMCA), but not producing the code that I claim they stole for comparison...

    Well, not really, but it's fun to think that way -- Sony will just claim: He's broken the DMCA, we don't have to disclose our actual keys. At which point I would hope that a sane court would rule his DMCA violation a fair use, and recommend there be an exemption for game systems, and other closed hardware devices (such as tivos)...

    We have a phone unlock exemption... Smart phones are essentially portable computers. Game systems are essentially computers as well... I might want to use my phone on a different carrier -- I might want to use my playstation on a different network other than PSN... Oh well... Golden rule and all that jazz, Sony has big $$, they will probably win, legality and loss of civil rights be damed.

  13. Re:Someone please explain on Does Android Have a Linux Copyright Problem? · · Score: 1

    "Google publishes that code under the Apache licence, but derives it from Linux source protected by the General Public Licence version 2 (GPLv2) claiming to remove all copyrighted components before changing the licence." I don't follow this. They're saying that they take the GPL-ed Linux source, and strip out all copyrighted parts. Wouldn't that be all of it? The GPL only works because the code is copyrighted to the developers.

    No. Consider the following statement: The headers for Linux were created to be compatible with Unix headers.

    If Google is correct, then the headers are not copyrightable, and the GPL does not apply...

    If Google is wrong, and copyright can be asserted over the headers, then Linux would have violated the Unix header copyrights. If Google is wrong, then Linux can't assert GPL against Google because they don't have the copyrights to the headers in the first place (and SCO might have won).

    Now there are BSD licensed Unix headers, if Google (and Linus) are both wrong about the headers, the BSD license would apply. This means that Google could use the headers because the BSD allows re-licensing. It also means that Linux could re-license the headers under the GPL.

    TL;DR: Google is wrong == Linux is wrong == Google can use Unix/Linux headers via BSD and/or do an Apache re-license.
    Google is correct == Google can use the Linux headers via Apache license.

    Either way, this isn't a well thought out line of reasoning wrt the origins of the damn Linux headers on your part.

  14. Re:What the heck? on Does Android Have a Linux Copyright Problem? · · Score: 1

    The point Nimmer, an acknowledged authority on IP law, makes is that when you aggregate such "facts" the resultant text, essentially becomes an expressive description of how a whole system works, and therefore is copyrightable. Otherwise one could argue that each individual word in a book is such a "fact," and that copying a book is just copying a series of facts and therefore not a copyright violation.

    Bad analogy. The description of how the whole system works is patentable & trademarkable not copyrightable. EG: The Hayes book for my Saturn car does not infringe on the copyright or patents of the parts of my car (they may have to license the trademark Saturn if they make extensive use of its logo, otherwise the fact that the book pertains to the construction of a certain year-make-model Saturn car is not copyrightable. If I use such a manual to create and assemble my own parts, I can duplicate my car. The car will not be infringing copyright -- It may be infringing Saturn's trademark on the design, look, logos, or patents pertaining to the system.

    Furthermore, the header in your book analogy would be the table of contents of a book, not the text of a book. I would say that the table of contents of a book is similar to the header files.

    If you take each chapter title of a book and make a blog entry listing each chapter title and rating each one, it's not infringing the book. The actual chapters themselves (the .c code) are not included in the TOC (.h headers).

  15. Re:What the heck? on Does Android Have a Linux Copyright Problem? · · Score: 1

    Whoops, here's the link I was trying to make to the libstdc++ faq.

  16. Re:What the heck? on Does Android Have a Linux Copyright Problem? · · Score: 1

    As a programmer, I have to disagree with this. The header files should be very interesting. They should provide all of the information that I need in order to properly use the C code or library. I really hate looking through an implementation in order to figure out how to use a function (and these functions do not have 'man' pages). Some header files described in the articles contained inline function calls. This makes them a bit more than a standard header.

    I agree. In fact, I make heavy use of doc-comments only within the header files. They most certainly contain my copyrighted detailed descriptions and even ascii/html/svg images/diagrams. Doxygen creates my library's documentation files from my detailed header files.

    The implementation files (.cpp / .c / .asm ) do not repeat the interface documentation, instead they only document the implementation.

    Now, if someone wants to duplicate the functionality of my software for compatibility purposes all they need is the header, but if they copy my headers verbatim along with my diagrams and code examples contained therein (not just the interface code) it is clearly infringement. If I wrote a book about my software, a compatible competitor can't just duplicate my book verbatim and re-distribute it without my permisson. I don't write books, I write code that reads like a manual in the header files, and as such, they carry the full weight of my copyright licenses.

    It is possible to strip out all the comments and just use that non-copyrightable interface code, but not always, due to the shitty implementation of templates in C++ (C++0x hopes to address this). When using a library with C++ templates you must include the template implementation in the header files in order to use them. Since a template implementation is not just an interface that means some of my header files (those with templates) can not simply be stripped of comments and used without infringing my copyrights.

    If such a library is licensed under the LGPL then the use of the templates means that library implementation code will be included in your project, it will be a derivative of the library itself. LGPL is not really compatible with C++ templates, their use makes libraries released under the LGPL equivalent to the GPL.

    For this reason the G++ libstdc++ license is NOT strictly LGPL or GPL.

    Until this template debacle gets sorted out every program that uses a LGPL library with templates should either ensure that the library includes an exemption for templates, or have the program released under the LGPL or GPL.

    A kludge workaround is to place the template implementations in the .CPP file, and only use template explicit template instantiations (instantiated within the .cpp). This, however, limits the usefulness of templates.

  17. Re:Reminds me of ... on EvoMouse Turns Your Digits Digital · · Score: 1

    I have a Das Keyboard, and it is really nice (for 200 bucks it would want to be!) They don't use buckling spring switches though; IBM has a patent on that. They use Cherry MX switches.

    You're correct, however:
    1. All keys are "springy" (you don't have to pull the key back up before you press it down again).
    2. The finger motion/pressure curves are damn near identical to IBM's "buckling springs".

    So here we have a Cherry MX switch: Its resistance buckles (drops off) after a pressure threshold has been reached, and springs back into position when pressure is removed... Call me crazy, but that's a buckling spring action, even if it's not using a coil of metal as it's spring/buckle mechanism.

    Actually, I prefer the MX switch, my old spiral spring keyboards have gone loose over the years, but the mechanical switches stay fresh longer (in my experience), YMMV.

    Also note (since we're being pedantic): Nowhere (perhaps only erroneously in reference to keyboards) is the use of the word "spring" restricted to a coil of metal. Car Analogy: Leaf Springs are Springs even if they don't look like a coil of metal.

    From Wikipedia:

    Depending on the design and required operating environment, any material can be used to construct a spring, so long as the material has the required combination of rigidity and elasticity: technically, a wooden bow is a form of spring.

    Thus, I stand by my assertion that our keyboards do in fact have buckling springs -- Just not the method patented by IBM a long time ago (Isn't that expired yet?!).

  18. Re:Poor Acronym on MIT-Designed Game Used To Train an AI System · · Score: 1

    I would have called it:

    Goal Oriented Action Training System for Entertainment

    I would have called it:
    New and Improved State Machine, now with Function Pointers!
    (some assembly required)

    I don't know about you, but If I'm going to spend my time working for a game company helping to train their AI algorithms then I expect one or more of:

    • Reduced prices for games that use our crowd-sourced labor.
    • A paycheck of some sort -- Even in-game money or some exclusive perks would be better than nothing.
    • Open Source Code (if not AT release, then no more than 10 months afterwards, not 10 years later).
    • My name in the credits.

    Come on people -- No matter how much you are told otherwise, Whitewashing Fences Is Not Fun, and even Jim required something in return for his efforts -- The returned pail full of water (a work trading barter system).

    "So what's in it for me?", What's in it for you!? Well just let me tell you: You get the satisfaction of knowing you helped develop a game AI! That's a Reward in itself! Some people would actually pay for this privilege, but for a limited time we'll let you in on the deal for Free!

    Later: As you stand before the store's game shelves holding a game-box in hand, contemplating purchase, you'll turn the box over. Next to the Havok logo will be this GOAP logo, that adds 10 bucks to the price of the game... That's right, you work for them, they charge you for your work -- Might as well pay you in negative company-store credits.

    What's next? They have us play a new Kinect game where we act out the scenes displayed so they can crowd-source their motion capture too? Hint: I only consider working for free if a project is open source -- All others must pay.

  19. Re:News For Anons - Stuff that's Random on Teen Cancels Party After 200,000 RSVP On Facebook · · Score: 2

    16? Eh, that's really more of a 4chan thing.

    Actually, you're very correct.

    It was on 4chan... I saw this thread float to the top a few times (I'm testing out my "mAny-Feed" project that gives you an RSS feed for any site even if they don't have one; 4chan == good stress test for article deduplication code). That's in-part how she got so many followers. I'm sure it wasn't "just" 4chan, but probably threads posted on multiple online forums specifically to troll the Facebook event -- although, I wouldn't underestimate the number of trolls 4chan can generate.

    IIRC, the OP(s) said: "My friend is having a 16th birthday party, says I can invite some friends. Does /b/ want to come?" followed by the event subscribe URL & including a (possibly unrelated) pic of a 15ish girl.

    The thread ended when the Facebook event was over-flooded and taken down.

    All that is missing is the "We are Anannymoose, we are leejun!" manifesto.

  20. Re:"Art" is a meaningless word on Revisiting Ebert — Games Can Be Art, But Are They? · · Score: 1
  21. Re:"Art" is a meaningless word on Revisiting Ebert — Games Can Be Art, But Are They? · · Score: 1

    So there's an easy way of solving this: somebody just needs to figure a way of getting Tetris exhibited in a gallery, and problem solved.

    Screw Tetris -- I miss loading ANSI.SYS, connecting to various BBSs and watching the terminal scroll all the beautiful ANSI / ASCII (actually CodePage 437) art at 14.4Kbps. I spent months designing artwork & animations in with cp437 + ANSI for my own BBS, clearly some was trash or utilitarian, but many others were beautiful art. Hell, I even created a multi-player Tetris door game for my BBS using ANSI to update the movements (the line noise interspersed randomly created beautiful abstract art that put elephant or even monkey made paintings to shame).

    Just recently I figured out how to change the Linux terminal to codepage 437 & "watched" my old BBS graphics, and tons more art from the archives. (Hint: I Use a small Perl script to read chars from the file and output them to the terminal at the desired bitrate for better emulation -- use an actual VT, not the terminal emulator).

    Yes, ANSI art has been on exhibit (some even with custom built scolling picture frames), so it is indeed (by your definition) art.

    Some links with pics from some of the exhibits: aitek dh foxgirl1 foxgirl2 t12 joe grand skully doug pinguino

    I posit that if some moron converts digital photos to push-pin by number, and manually fills pixels according to the computer's algorithm, and that gets considered "art"; Then ANSI / ASCII graphics (manually filling text cells with color & symbols to make pictures WITHOUT THE COMPUTER TELLING YOU WHAT TO COLOR WHERE) must be art too.

    If novels can be "art", then look no further than old text adventure games, or MUD door games to prove that games can be art.

  22. Re:Reminds me of ... on EvoMouse Turns Your Digits Digital · · Score: 5, Insightful

    Reminds me of the virtual laser keyboard that came out a few years back. Is there anyone out there who actually bought one and used it regularly (or, like, more than 5 minutes)?

    Yeah, I have one. Funny thing about typing is that fingers need a resistance buffer (ala buckling springs) so that you can rest your fingers without triggering a key-press, and get feedback (even, mmm audible clacks) to notify you to stop pressing.

    I have tried using the laser keyboard, and it fails in the same way that all touch-pads & touch-screens do.

    • No resting position
    • No physical response to keypress
    • No pressure buffer

    By "pressure buffer" I mean that pressure goes from none to 100% ALL STOP on each press using any touch surface. This is retarded behavior (seriously, retards my typing speed considerably), and causes more repetitive stress due to the equal/opposite forces slamming into the end of your fingers each time you press.

    Set your keyboard aside, and pretend to type on the desk -- It HURTS after an hour or so. The mechanical keyboards & mice are truly far superior. My normal speed of 80wpm drops to 50wpm with the laser keyboard. Hint: I can touch type, but the laser can't notify me by touch where the damn keys are at...constant readjustments are required.

    On the topic of pointer input...

    Hello touch interface users: Welcome to the next round of: Rub your fingertips off (or alternatively: Really Expensive Writers Cramp).

    Even if you put down a flexible mat in front of the EvoMouse to reduce finger impact strain, and grease it up to reduce the finger friction burns, you still have to deal with either "flying fingers" or "repetitive keyboard to pointer reach" -- No restful position.

    Look where your pointer hand is even when you're reading: Resting on the mouse / trackball / keyboard, ready to scroll past this nonsense at the press of a button or roll of a wheel (Hint: remap Capslock to Ctrl and use ctrl + IJKL (CHTN on Dvorak) as arrow keys... no more arrow key reach stress). Touch users will be hovering their finger above the scroll region, or else will have to reach to scroll.

    I prefer pen-tablets, mice, trackballs, keyboards... Why anyone thinks that an "insubstantial" interface is intuitive is beyond me -- we have nerves tuned for mechanical manipulation and touch feedback. Here's a brilliant Idea: Let's utilize our senses / nerves, not make them less important; Let's also stop labeling input methods that require even more motor skills than finger twitch, wrist move as "innovative".

    The Wacom Intuos4 pen-tablet comes with a "wireless" mouse that doesn't take batteries -- NO, I said NO batteries, not "it's a rechargeable bullshit battery that you have to charge" -- I mean, It works just like the damn pen does, the tablet senses the mouse.

    I just move the mouse aside and begin drawing with the pen to switch back and forth. No wires (except on the pad itself), and Bonus: Gimp recognizes the pen-tip, pen-eraser, and mouse all as separate pointers with their own tool selection auto activated when they are above the pad. Draw, flip pen to erase, grab mouse to arrange & composite.

    I get both: The precision & natural feel of a pressure sensitive "touch" pen-tablet, and the restful comfort & familiarity of a mouse for every day point / click / scrollwheel.

    Touch / Laser input be damned. You're right, it's neat for 5min -- Keep the box & re-gift them; These touch input devices are a toys, not real "work" devices (by this I mean that if you do most of your work by key/pointer input touch devices are horribly inefficient & inaccurate at best -- The touch devices would probably be fine for a manager or C*O who doesn't require comfortable

  23. Re:URL Tetris Source Code on A Game Played In the URL Bar · · Score: 2

    Nice work! Thanks for posting the code.

    Thanks for playing.

    P.S. I didn't hard code the game size... At the start of the source you can change the variables to create whatever size game you want:
    w=10;h=20;s=18;ds=2
    w = Number of cell wide.
    h = Number of cells tall.
    s = Size of each cell in pixels. ds = Drop Slide (Number of drop cycles to wait after the piece has touched down before locking the piece in place).

    Just edit those before you press Enter. If you make the game too big and can't close it, hit the [Esc] (Boss Key).

    P.P.S. The pieces aren't completely hard coded either. The block array "B" contains a 4x4 bitmap (32bit integer) to define the shape, and a CSS color code for each piece. You can add/remove pieces by adding/removing [int, col_str] elements.

    // The relevant code to modify begins @ char column 725 (aprox 1/4th into the code): B=[[0x4460,'#f80'],[0x2260,'#229'],[0x262,'#93d'],[0x462,'#a11'],[0x264,'#091'],[0x660,'#ee3'],[0x2222,'#2ad']];

    As you can see the B[0] (the first piece) is [0x4460, '#f80']
    The integer is given in Hex... Each hex digit is one row of the piece's block bitmap:
    // Least significant bit is in the first row (from top to bottom).
    4 = 0100 = .X..
    4 = 0100 = .X..
    6 = 0110 = .XX.
    0 = 0000 = ....
    As you can see the 1's make up the L piece, and '#f80' is CSS color shorthand for #ff8800 ( #RrGgBb )
    Red=255, Green=136, Blue=0 ( Orange ).

    You can make a big gray hollow wedge piece via:
    F = 1111 = XXXX
    A = 1010 = X.X.
    C = 1100 = XX..
    8 = 1000 = X...

    // The element would be:
    [0xFAC8, '#888']
    (However, I find just adding one block to any of the standard pieces provides more interesting / lest "FFFFFUUUUUUU--" game play; Big solid pieces and a larger grid is fun too.)

  24. URL Tetris Source Code on A Game Played In the URL Bar · · Score: 2

    (please excuse the self-reply)
    In case anyone wanted to see the source code:
    Here's the unencoded version of the URL Tetris.

  25. Re:Hmm... MOAR! -- OK (Warning: Huge JS blob) on A Game Played In the URL Bar · · Score: 5, Interesting

    Amusing for a few seconds, this uses JS?

    Yep.

    Here, I wrote a JavaScript: URL that creates a Tetris game at the top of whatever page you're on.

    URL Tetris

    Protip: Create a Bookmark, set the Location of the bookmark to the tetris code... Click the bookmark and play tetris on any web page.