Of course it looks rearranged. It's a header file. Some of the ELF constants come straight from the ELF spec. The #ifndef stuff is bog standard code, there are a finite number of ways of writing that and the one presented happens to be the most common. The #include is another "duh" - of course you have to #include the right header, that doesn't mean it's copied. The header file is presumably deliberately compatible with the original, hence the function definitions are prototype-compatible (while being considerably different in style).
There is nothing indicative of code copying in that PDF. The Linux header is just about as different as it can be while remaining source-compatible, as it should be.
Commenting further on that, here is a link to the System V Reference Specs, one of which is the ELF Tool Interface Standard Specification. This contains not only several constants, structures, and function names, but suggests function prototypes and programming style.
Like you said, any author wishing to build an ELF-capable system would almost have to have that exact same code. There are only so many ways to build an enum or struct following the exact TIS specifications, and there is no virtue in paraphrasing C code.
Much of the rest of the code is libc and POSIX prototypes (and more headers), all of which are covered in the System V ABI specification. Anybody wishing to build a POSIX-compatible system would have to define those prototypes.
Several of the function implementations with similarities are very basic functions. Most of the similarities are in the constant names (rather than the specific implementation of those simple functions), and the constant names are defined by... the TIS spec. The remainder is a no-brainer. See, for example, Tab 422. This is a simple accessor method. There are only so many ways to retrieve a value from a structure...
So, he created a plugin that let him do what the plugin architecture is designed to allow him to do? I'm not sure how this is newsworthy...
Yeah, combined with the Android rootkit it seems like Google has no concept of security.
These "security researchers" need to understand that there is neither respect nor prestige creating software that asks permissions to do something and then does it. They are merely pointing at various faces of a larger system flaw: that people who don't understand computers will not understand what any type of software can do to their computers. There really is no "best case" solution for this problem. Either choose a vendor who will lock you into their idea of secure, or go for an open market and be smart about it.
Other Slashdot threads are pointing out that people don't understand their browsers / phones / etc. can get viruses from third-party code. If it hasn't been drilled into people that anything you do on your computer can be a virus, and that they should only do things at respectful places, there's no saving them.
You can go further:
tabs are a hack by applications to make up for the failure of the traditional WM model and it's inability to handle large numbers of windows.
For what it's worth, KDE4 attempts to address that issue by enabling tabbedwindows. I think it's a good example of what you're referencing, and a good perspective of what WM-based tabs look like.
That said, tabs in browsers also make more sense than WM-sponsored window tabbing. Browsers, for better or worse, have become an operating system in and of themselves, and thus are a special case. Most applications neither need nor would benefit from having tabbed support. Those that do (e.g., chat clients, document editors, browsers, etc.) typically have some form of tabs streamlined to their use cases and audiences. A WM-based solution would likely result in less usability on a per-application basis, since the overall use case wouldn't be tailored to a specific application.
I think we have a good model right now. Each application introduces tabs as necessary, which may or may not take advantage of tab support in either WM or UI toolkit (QT, GTK, SWT, etc.). Having WM support as a failsafe like KDE does is certainly nice, too!
Nothing useful. It's eye candy, like a turbo-charged Aero Glass with 3D effects.
I use the cube desktop switcher and that's it. For some reason I find the idea of a cube easier to map out my mind when I have several windows open than a chain of 4 desktops.
So in other words, you find at least one aspect of it to be very useful. While some window effects are just pure eye-candy (e.g., wobbly windows), many of the added desktop effects provide various degrees of enhanced functionality. This includes:
Desktop presentation, be it cube, zooming, or task switching, can be molded and animated to allow the user to better understand and utilize the multiple desktops.
Transparency allows information to be literally overlayed, decreasing the intrusiveness of upper-stratum menus and windows.
Various effects can tag and categorize different applications or application states (active, inactive, shaded, etc.)
The added capabilities allow enhanced usability tools, like magnifiers and mouse location, to be well-integrated and seamless.
Don't dismiss the suite as just eye-candy; if the main perception of Compiz is that it exists only to make things more fun and prettier, then its overall value to the desktop is understated.
I'll venture a guess: I have noticed on my HTC Incredible that the built-in browser displays a small graphical thumbnail of my bookmarked sites, presumably as a user interface enhancement. When scrolling through my bookmarks, I can see a picture of what the page looked like the last time I visited it. My guess is that these pictures are stored and used to generate those thumbnails.
If that is truly the usage, I have no issues whatsoever with the practice. If those pictures are leaving my phone, however, then this is really unacceptable.
Anything fancier than a fill-in-the-blank form has no place in a document format.
That's a slippery slope you're walking there. The second that you open the document up to interaction and editing, you open the platform up to issues like editing capabilities, content type, content validation, and each of those opens up their own can-of-worms.
In my opinion, PDF should do exactly what most people use it for: it should render content in a consistent, platform-independent, and read-only manner. If you need to provide a form to fill out, there are many technologies to solve that problem, but across all of them, Web/HTML stands out as the most appropriate. Web/HTML has numerous different approaches for allowing a user to fill out a form, each richer and more flexible than Adobe's PDF will (er, should) ever be. If you want the fields that are filled out to appear in a read-only document, have the web service generate a PDF document containing your answers when you complete the HTML form.
A perfect example of this is how Google's Spreadsheets can present a form view, which is capable of reproducing a significant amount of the capabilities that Adobe's executable content is used for with a concise user interface, and producing a PDF at the end of it.
(I guess it wouldn't work for multiplayer due to the rampant cheating that would ensue...)
This isn't necessarily true. Adding or changing features in the game client may be easier with open-source, but current game cheats / hacks / mods frequently just operate by modifying the binary (static or runtime), netting the same effect. Any well-designed multiplayer game will have sanity checks built into either the central server (if there is one) or by client consensus that will reject (and ban / blacklist) a client that attempts to perform an impossible action.
Merely being open source doesn't really increase the potential for cheating or the capabilities of those cheats; it just makes it easier to figure out how to create them.
So this is a pretty clever thing to do. The issues here are that it's sneaky, remarkably effective (even against those who are security-aware), and difficult to stop, since tabbed browsing is generally regarded as a good thing.
One possible solution would be to have browser support for user-opted website whitelisting. When you visit a site where you require security (banking, etc.) for the first time, you can configure your browser to add the domain to a security-aware whitelist. Every time, from then on, when you visit that page, your browser visually (and obviously) marks that page (gold border, animated lock, etc.) if its SSL credentials check out. As a user, I would simply have to know "always check for those visual effects before you enter your banking information", which is not a hard thing to remember.
Another would be to have a browser-supplied interface for entering credentials that can be invoked by the site. You click the log-in button, your browser supplies a "Guaranteed Secure" login modal dialog, you enter your information, and your browser then forwards it to the page and logs you in. You can then add important domains to the list, and your browser will never pop-up that dialog for a page that isn't on that list. Same as above, you would elect to whitelist sites that are important in advance, and because it's a browser-supplied login, no fake tab (or fake SSL certificate) will be able to induce that dialog.
At some point, people will figure out clever ways around things. The browser needs to be able to accommodate the idea that every page on the Internet is not equal from the point of view of the user. There must be a mechanism by which the browser can allow a user to easily (visually) differentiate between a legit page and one that has made itself look legit.
Parody but don't *use* the original work. When Weird Al makes a song parody (ignore for the moment that he gets permission and probably shares in royalties) he and his team don't just take the original music and sing over it. It's RE-RECORDED. That's the key. You can get away with the similarities and same song composition but you have to at least lift a finger and do the work yourself. You wanna be lazy, then the consequences are paying someone else, either for use of the work or as damages in a lawsuit later.
Weird Al actually parodies the song itself, so he could talk over it karaoke-style if he wanted to. He's probably re-recording it because it gives his parody a more professional polish and gives him some musical creative freedom. He really doesn't have to do that in order to be parodying the song. I also heard in an interview with him on NPR that, even then, he still seeks permission from every artist he parodies just to avoid any potential legal conflicts (citation needed).
As I understand it, however, even if you re-record someone's music, it's still subject to copyright. The first case that comes to mind is the Coldplay vs. Joe Satriani lawsuit, where Joe alleged that Coldplay stole some of the melody from one of his songs. In this case, even though Coldplay clearly physically played the music, it was still potentially subject to copyright.
It really depends. PowerPoint (and presentation applications in general) offer a very flexible and powerful method for imparting information. You can collect disparate pieces of information together, present it in numerous forms (text, pictures, animations, etc.), and emphasize and accent, among other things. These are all very useful things to do for a variety of situations. The issue with PowerPoint (and office software in general) is the misconceived perception that it should be used by everybody. Some people know how to present, and others do not. Those who do not will make a mess out of anything, including presentation software.
With great power comes great responsibility -- Spider Man
Presentation applications, like any other flexible development environment, carry with them a responsibility that it be used intelligently and purposefully. The ability to display all sorts of information also increases the overall potential complexity of the information. The same generic set of guidelines applies, just like it always has, be it with books, technical papers, charts, graphics, code comments, or any other medium:
Know your audience - One single presentation cannot effectively address an audience with a wide variety of purposes and backgrounds. The presentation cannot be broken down into chunks that are interesting to only one group at a time. It's a performance, and it should be performed to a captivated audience. It's very easy to cram too much stuff into a single presentation, when multiple targeted presentations would have been effective and clear.
Use the tool appropriately - A presentation isn't a book club. Anybody can read text, and chances are most of then can read it faster than you can speak it. The presentation software should complement an overall presentation, providing supplemental points, overviews, summaries, accents, and emphasis. If you are going to read the slides verbatim, write a document. Furthermore, slides are not meant to be lingered on. Your audience cannot be expected to stare at a projection for 30 minutes to absorb things, nor should you ask that of them. If such deep supplemental material is needed for your presentation, distribute it beforehand or offer printouts so the audience can take it at their own pace.
Be purposeful - Every element of a presentation should have a purpose. Additional effects are (minimally) distracting and (potentially) disruptive to your overall mission of imparting information. If a slide transition doesn't increase the clarity of your message, it should not be there.
etc...
... I could go on, but you get the point. When used correctly, presentation software can be very powerful and useful. There is no inherent aspect of it that dumbs down presentations or people. The compulsion to "mutilate data" is something that only stems from a lack of understanding of how to present that data in the first place. Give an stupid person a tool, and he'll use it stupidly.
Just wait until this becomes a cosmetic procedure for the rich. A few years of refinement and advances in microsurgery, and then they'll be raising clones of rich people in jungle compounds down in Brazil...
That and/or having attractive poor people selling their faces on the black market...
We should take the next logical step and blame the pornographers for the economic failure. What's scary is that such a move may actually end up getting traction...
This type of thing happened to a friend of mine. At 1 in the morning I got an e-mail from him advertising Viagra. After some decent analysis we concluded that his illegal copy of Windows 7 was probably to blame. My belief is that the ISO came with a rootkit gratis.
I'm writing this half as a "me-too" and half as a note of caution... illegal operating system downloads are probably the easiest way someone can infect you. If you're running under such a configuration, I'd re-evaluate the cost... or consider a better option:)
Sanitization has been on by default since WebOS 1.1.
It's up to the individual developers to make sure their app is secure -- which it is by default if they don't disable the security features provided by WebOS.
This suggests that the developer of the SMS app in question (which is still Palm, I think) explicitly declined to utilize WebOS's sanitization support. While I'll give basic kudos to the WebOS developers for foreseeing this issue and negating it by default, it still stands that Palm released a live operating system with a vulnerable (at its own request) SMS application. The WebOS developers might have been smart, but the SMS application developers ruined the party for everyone.
So anyone want to brainstorm why an SMS application would want to manually opt-out of input sanitization? Seriously... I can't think of any...:-/
Could someone post an actual stong password you have in use?
I'll volunteer: 11111. I figure it's such a terrible password that brute-force software, giving humanity the benefit of the doubt, will have removed it as an option for the purposes of optimization. Thus it is the strongest password.
Reasonable-quality audio/video recording equipment is becoming nearly ubiquitous, being embedded in cell phones.
Yet the only "footage" that is available is grainy and poor quality.
As the quality and availability of audio/video recording equipment grows, one would expect the quality of "sighting" recordings to increase, but they aren't.
The aliens and ghosts are clearly reacting to advancing and increasingly-available technology by reducing their exposure and appearing in locations that whose obscurity is proportional to our gains in sensor clarity. Those bastards.
I think that's very telling.
They're clearly way smarter than we originally thought. Spooky!
I think the idea is that you'd run different domains to protect different sets of files. You'd run your tax software in a "tax" domain, and if any PDF software got infected, it wouldn't be able to touch the "tax" domain information.
Versus locked-down operating systems, you have a valid point (and my personal issue with this approach). However, it's not without its advantages. In a standard Linux system, every userspace process has access to around 330 system calls. Each one of these is an interface into the kernel, and a bug in even one of them is enough to take over the kernel. Furthermore, any application that can load kernel modules can potentially dominate the kernel.
In the Qubes system, each domain is protected by a virtualization layer. It does have domainhypervisor interfaces (similar to system calls) to allow I/O, graphics, and the copy-paste subsystem to run, but there are a lot fewer of them. They are oriented around a finite functionality - the aforemented I/O, graphics, etc., while system calls must exist for all userspace functionality. Therefore, as userspace applications get more complex and system calls (per-domain) increase in number and complexity, the domainhypervisor interface will be more or less static. This hopefully leads to them being easier to secure and lock down.
Let me begin by saying that this sounds like a truly interesting approach to security. Virtualization technology defines very clear hardware-enforced boundaries between software domains. In the standard case, those domains contain different operating systems, each of which are provided privilege level-based sub-domains. In this particular case, each domain is dedicated to running sets of user-space applications, and the hardware boundary is used for userspace isolation, as opposed to virtual machine OS isolation.
So my "home" domain is infected, but my intellectual property is in my "work" domain. The virtualization boundary means that a virus can get Ring 0 access and still not be able to touch those IP files. Hurray... except wait. There must be an interface between the "home" domain and the hypervisor, else things like copy-and-paste and hardware resource arbitration can't work. Here's what some infection paths would look like:
Standard XP Install: (Firefox)
Standard Vista / Linux Install: Firefox -> (Kernel)
Qubes Install: Firefox -> Home Kernel -> (Hypervisor)
Maybe the paths can be locked down better, but a vulnerability is a vulnerability. It's clearly harder for a virus to get full control, but that's just throwing another obstacle in the way. If one is bad, and two is better, maybe three is even better, but nothing's perfect. Why is the domain-to-hypervisor path considered any more secure than the userspace-to-kernel path? If it's not, you're just adding more complexity, which could mean more potential for vulnerabilities! If you're locking down privilege boundaries, kernels like FreeBSD (jails) and even userspace execution environments like Java (JVM) have been working on that for years.
What are you smoking? Windows kernel itself hasn't really been vulnerable to anything, it's the third party software like Flash, Adobe PDF Reader, internet browsers, and previously some services.
For the lazy reader, almost every article here has the phrase "An attacker who successfully exploited this vulnerability could run arbitrary code in kernel mode." For the even lazier, allow me to summarize: "That's a Bad Thing"
Indeed, like any long-lasting public multi-version kernel, the Windows kernel has had a hefty share of vulnerabilities. What you said is just plain false. However, to the OP:
So this means your hypervisor can get infected? Is it really such a great idea to use the largest individual security risk in computers as a hypervisor?
You may want to think a little harder about what you mean by kernel. Every hypervisor is a type of kernel. Some things that perform hypervisor-like roles are full-fledged kernels. However, if you actually click the link in the article that you're quoting, you'd see that they're not talking even remotely about what you think they are. The article details how Microsoft is investigating changing some fundamental (read: legacy, UNIXy, etc.) kernel models and roles to take a shot at getting more successful multicore performance and a better user experience. It's less about "zomg Windows is a hypervisor" and more about "what traditional Kernel roles can we modify?"
If you understood even fundamental systems architecture concepts, you'd realize that Windows as a hypervisor is a lot less scary than Windows as a standalone OS, as the latter is not only handed full system control, but is also responsible for arbitrating userspace execution.
Granted, the (sandboxed code execution) could only be provided through a JRE of some sort, but security controls ?. What the hell is that? If you are referring to bytecode verification, then why not say so.
Because that was a sentence in a long post, and it was off-topic enough already:)
To answer your questions: plenty of the things you said are true, but they are not part of the language. Libraries that add them are a poor and spotty replacement for native language / runtime support. They work, and they can work well, but Java has them integrated deeply into the language, runtime, and semantics, and used by default.
And by "security controls" I was brain-farting over the name of the SecurityManager classes and their fundamental integration into the sandboxed environment model.
Really, it was a bear of a post I was pretty sure would be modded Offtopic anyway. Responding to an AC over a tangentially-relevant topic often is. Rereading it, I don't think I got very condescending until the end. I have to admit I was put off a bit by the OP's usage of phrases like "failure", "idiots", and "clearly". That, being almost 100% incorrect, and drumming up Java 1.1 grievances are just a short-circuit to my bad side.
When the industry as a whole moved from C and C++ to Java in the late 1990s, one of our main problems was the bloat that Java brought to the table. Memory consumption was a real issue, as was its slow nature. Things have improved somewhat, mainly driven by vast hardware advances.
Interesting take - unfortunately incorrect. Java's performance issues were almost entirely due to the interpreted nature of its code. When it was originally released, all Java code was interpreted by the JVM. The result is similar to running code through an emulator... often usable, but certainly not competitive with native applications. The introduction of Just-in-time compilation to Java (via HotSpot and similar runtime engines) made all the difference in the world. By Java 1.2 (1998), the JRE came equipped with HotSpot and basic performance became an (often inappropriately cited) non-issue. Hardware advances played as much a role in speeding up Java as it did any other language.
Now, when we moved from C and C++ to Java, we did get a huge productivity boost, even if our apps themselves were more bloated and ran slower. Apps that would've taken us a year to develop using C++ could be finished in a couple of months using Java. We could also develop much more complex software than we could using C++. So Java did offer some real benefits, and that's why it became popular.
Most of the benefits offered by Java are those bestowed upon an application by virtue of running in the Java Runtime Environment (JRE), including automatic memory management (garbage collection), strong exception handling, cross-platform portability, sandboxed code execution, security controls, dynamic class generation, to name a few. Java's syntax is also familiar and effective, and caters to many newer programming models and paradigms. Nothing about Java allows applications to be more complex than they were before... I dare you to find something as complex as the Linux Kernel, or something whose complexity is handled better in Java than via a C++ toolkit like QT. Java's advantages have always been related to its abilities to simplify coding challenges, allowing more effective, secure, and functional code to be produced faster (and with a lower learning curve).
We can't say the same for Flash and HTML5, however. They both suffer from far worse bloat than Java ever did. For instance, take watching videos on YouTube. I just did that using Firefox on Linux, and the Firefox process is now using 3966 MB of RAM. That's its resident usage, not virtual usage, as well. Its virtual usage is currently 4512 MB.
This is certainly a bit subjective. For example, my Firefox running on Linux watching YouTube is only using 80MB of memory, with Flash's "npviewer.bin" adding another 10MB. However, RAM usage is not a bad thing. Traditionally, when RAM came in far smaller quantities than it did now, developers frequently traded extra CPU cycles and disk I/O to conserve memory. Now, it's almost the opposite. A good application, especially a foreground application like a web browser, will use RAM liberally to conserve bottleneck resources like CPU, bandwidth, and I/O. Most of the time, the application profiles the environment that it is running in and chooses how much RAM it will use for optimization based on that profile. A system with 1GB of RAM will likely have big applications like Firefox use significantly less memory than one with 8
Of course, the problem is that a web site or chat forum has relatively little visibility of the user's typing pattern, so unless you force all forums to be accessed by special software that can monitor typing (AND you prevent the use of cut-and-paste so that you type in one window, then paste into the chat window, or detect such matters and flag THAT) then this won't be very useful at all.
It can certainly be implemented via a Javascript-hooked message box and periodic AJAX messages. Look at how Google implements chat in GMail or Wave. Hell, in Wave they can show you typing letter-by-letter. Granted there is some latency and blocking, but heuristics could certainly work to smooth that out. Data may be lossy, but it also may not be so lossy that nothing useful can be extracted.
There will always be ways around (Javascript blocking, copy/pasting, etc.), but your average Internet forum poser will probably not be aware enough to take those measures, especially if they result in user interface inconvenience.
Nice national ID cards for our safety and you know just to be on the safe side we need a DNA database too, to prevent people from misusing this program...and hey we need to start monitoring your internet usage to prevent people from pretending to be you and setting up appoitments or chaning your information.
Yeah its nothing to be worried about, Im sure it will be all OK.
So you're against the idea on account of that other things are bad?
Of course it looks rearranged. It's a header file. Some of the ELF constants come straight from the ELF spec. The #ifndef stuff is bog standard code, there are a finite number of ways of writing that and the one presented happens to be the most common. The #include is another "duh" - of course you have to #include the right header, that doesn't mean it's copied. The header file is presumably deliberately compatible with the original, hence the function definitions are prototype-compatible (while being considerably different in style).
There is nothing indicative of code copying in that PDF. The Linux header is just about as different as it can be while remaining source-compatible, as it should be.
Commenting further on that, here is a link to the System V Reference Specs, one of which is the ELF Tool Interface Standard Specification. This contains not only several constants, structures, and function names, but suggests function prototypes and programming style.
Like you said, any author wishing to build an ELF-capable system would almost have to have that exact same code. There are only so many ways to build an enum or struct following the exact TIS specifications, and there is no virtue in paraphrasing C code.
Much of the rest of the code is libc and POSIX prototypes (and more headers), all of which are covered in the System V ABI specification. Anybody wishing to build a POSIX-compatible system would have to define those prototypes.
Several of the function implementations with similarities are very basic functions. Most of the similarities are in the constant names (rather than the specific implementation of those simple functions), and the constant names are defined by ... the TIS spec. The remainder is a no-brainer. See, for example, Tab 422. This is a simple accessor method. There are only so many ways to retrieve a value from a structure...
So, he created a plugin that let him do what the plugin architecture is designed to allow him to do? I'm not sure how this is newsworthy...
Yeah, combined with the Android rootkit it seems like Google has no concept of security.
These "security researchers" need to understand that there is neither respect nor prestige creating software that asks permissions to do something and then does it. They are merely pointing at various faces of a larger system flaw: that people who don't understand computers will not understand what any type of software can do to their computers. There really is no "best case" solution for this problem. Either choose a vendor who will lock you into their idea of secure, or go for an open market and be smart about it.
Other Slashdot threads are pointing out that people don't understand their browsers / phones / etc. can get viruses from third-party code. If it hasn't been drilled into people that anything you do on your computer can be a virus, and that they should only do things at respectful places, there's no saving them.
You can go further: tabs are a hack by applications to make up for the failure of the traditional WM model and it's inability to handle large numbers of windows.
For what it's worth, KDE4 attempts to address that issue by enabling tabbed windows. I think it's a good example of what you're referencing, and a good perspective of what WM-based tabs look like.
That said, tabs in browsers also make more sense than WM-sponsored window tabbing. Browsers, for better or worse, have become an operating system in and of themselves, and thus are a special case. Most applications neither need nor would benefit from having tabbed support. Those that do (e.g., chat clients, document editors, browsers, etc.) typically have some form of tabs streamlined to their use cases and audiences. A WM-based solution would likely result in less usability on a per-application basis, since the overall use case wouldn't be tailored to a specific application.
I think we have a good model right now. Each application introduces tabs as necessary, which may or may not take advantage of tab support in either WM or UI toolkit (QT, GTK, SWT, etc.). Having WM support as a failsafe like KDE does is certainly nice, too!
Nothing useful. It's eye candy, like a turbo-charged Aero Glass with 3D effects. I use the cube desktop switcher and that's it. For some reason I find the idea of a cube easier to map out my mind when I have several windows open than a chain of 4 desktops.
So in other words, you find at least one aspect of it to be very useful. While some window effects are just pure eye-candy (e.g., wobbly windows), many of the added desktop effects provide various degrees of enhanced functionality. This includes:
Don't dismiss the suite as just eye-candy; if the main perception of Compiz is that it exists only to make things more fun and prettier, then its overall value to the desktop is understated.
I'll venture a guess: I have noticed on my HTC Incredible that the built-in browser displays a small graphical thumbnail of my bookmarked sites, presumably as a user interface enhancement. When scrolling through my bookmarks, I can see a picture of what the page looked like the last time I visited it. My guess is that these pictures are stored and used to generate those thumbnails.
If that is truly the usage, I have no issues whatsoever with the practice. If those pictures are leaving my phone, however, then this is really unacceptable.
Anything fancier than a fill-in-the-blank form has no place in a document format.
That's a slippery slope you're walking there. The second that you open the document up to interaction and editing, you open the platform up to issues like editing capabilities, content type, content validation, and each of those opens up their own can-of-worms.
In my opinion, PDF should do exactly what most people use it for: it should render content in a consistent, platform-independent, and read-only manner. If you need to provide a form to fill out, there are many technologies to solve that problem, but across all of them, Web/HTML stands out as the most appropriate. Web/HTML has numerous different approaches for allowing a user to fill out a form, each richer and more flexible than Adobe's PDF will (er, should) ever be. If you want the fields that are filled out to appear in a read-only document, have the web service generate a PDF document containing your answers when you complete the HTML form.
A perfect example of this is how Google's Spreadsheets can present a form view, which is capable of reproducing a significant amount of the capabilities that Adobe's executable content is used for with a concise user interface, and producing a PDF at the end of it.
(I guess it wouldn't work for multiplayer due to the rampant cheating that would ensue ...)
This isn't necessarily true. Adding or changing features in the game client may be easier with open-source, but current game cheats / hacks / mods frequently just operate by modifying the binary (static or runtime), netting the same effect. Any well-designed multiplayer game will have sanity checks built into either the central server (if there is one) or by client consensus that will reject (and ban / blacklist) a client that attempts to perform an impossible action.
Merely being open source doesn't really increase the potential for cheating or the capabilities of those cheats; it just makes it easier to figure out how to create them.
So this is a pretty clever thing to do. The issues here are that it's sneaky, remarkably effective (even against those who are security-aware), and difficult to stop, since tabbed browsing is generally regarded as a good thing.
One possible solution would be to have browser support for user-opted website whitelisting. When you visit a site where you require security (banking, etc.) for the first time, you can configure your browser to add the domain to a security-aware whitelist. Every time, from then on, when you visit that page, your browser visually (and obviously) marks that page (gold border, animated lock, etc.) if its SSL credentials check out. As a user, I would simply have to know "always check for those visual effects before you enter your banking information", which is not a hard thing to remember.
Another would be to have a browser-supplied interface for entering credentials that can be invoked by the site. You click the log-in button, your browser supplies a "Guaranteed Secure" login modal dialog, you enter your information, and your browser then forwards it to the page and logs you in. You can then add important domains to the list, and your browser will never pop-up that dialog for a page that isn't on that list. Same as above, you would elect to whitelist sites that are important in advance, and because it's a browser-supplied login, no fake tab (or fake SSL certificate) will be able to induce that dialog.
At some point, people will figure out clever ways around things. The browser needs to be able to accommodate the idea that every page on the Internet is not equal from the point of view of the user. There must be a mechanism by which the browser can allow a user to easily (visually) differentiate between a legit page and one that has made itself look legit.
Parody but don't *use* the original work. When Weird Al makes a song parody (ignore for the moment that he gets permission and probably shares in royalties) he and his team don't just take the original music and sing over it. It's RE-RECORDED. That's the key. You can get away with the similarities and same song composition but you have to at least lift a finger and do the work yourself. You wanna be lazy, then the consequences are paying someone else, either for use of the work or as damages in a lawsuit later.
Weird Al actually parodies the song itself, so he could talk over it karaoke-style if he wanted to. He's probably re-recording it because it gives his parody a more professional polish and gives him some musical creative freedom. He really doesn't have to do that in order to be parodying the song. I also heard in an interview with him on NPR that, even then, he still seeks permission from every artist he parodies just to avoid any potential legal conflicts (citation needed).
As I understand it, however, even if you re-record someone's music, it's still subject to copyright. The first case that comes to mind is the Coldplay vs. Joe Satriani lawsuit, where Joe alleged that Coldplay stole some of the melody from one of his songs. In this case, even though Coldplay clearly physically played the music, it was still potentially subject to copyright.
But was it the best way?
It really depends. PowerPoint (and presentation applications in general) offer a very flexible and powerful method for imparting information. You can collect disparate pieces of information together, present it in numerous forms (text, pictures, animations, etc.), and emphasize and accent, among other things. These are all very useful things to do for a variety of situations. The issue with PowerPoint (and office software in general) is the misconceived perception that it should be used by everybody. Some people know how to present, and others do not. Those who do not will make a mess out of anything, including presentation software.
With great power comes great responsibility -- Spider Man
Presentation applications, like any other flexible development environment, carry with them a responsibility that it be used intelligently and purposefully. The ability to display all sorts of information also increases the overall potential complexity of the information. The same generic set of guidelines applies, just like it always has, be it with books, technical papers, charts, graphics, code comments, or any other medium:
... I could go on, but you get the point. When used correctly, presentation software can be very powerful and useful. There is no inherent aspect of it that dumbs down presentations or people. The compulsion to "mutilate data" is something that only stems from a lack of understanding of how to present that data in the first place. Give an stupid person a tool, and he'll use it stupidly.
Just wait until this becomes a cosmetic procedure for the rich. A few years of refinement and advances in microsurgery, and then they'll be raising clones of rich people in jungle compounds down in Brazil...
That and/or having attractive poor people selling their faces on the black market...
Would the economy be OK now? Just asking.....
We should take the next logical step and blame the pornographers for the economic failure. What's scary is that such a move may actually end up getting traction...
This type of thing happened to a friend of mine. At 1 in the morning I got an e-mail from him advertising Viagra. After some decent analysis we concluded that his illegal copy of Windows 7 was probably to blame. My belief is that the ISO came with a rootkit gratis.
I'm writing this half as a "me-too" and half as a note of caution ... illegal operating system downloads are probably the easiest way someone can infect you. If you're running under such a configuration, I'd re-evaluate the cost ... or consider a better option :)
Sanitization has been on by default since WebOS 1.1.
It's up to the individual developers to make sure their app is secure -- which it is by default if they don't disable the security features provided by WebOS.
This suggests that the developer of the SMS app in question (which is still Palm, I think) explicitly declined to utilize WebOS's sanitization support. While I'll give basic kudos to the WebOS developers for foreseeing this issue and negating it by default, it still stands that Palm released a live operating system with a vulnerable (at its own request) SMS application. The WebOS developers might have been smart, but the SMS application developers ruined the party for everyone.
So anyone want to brainstorm why an SMS application would want to manually opt-out of input sanitization? Seriously ... I can't think of any... :-/
Microsoft spends almost twice as much as Apple as a percentage of revenue on marketing. Apple spends about the same amount as Dell.
Jerry Seinfeld isn't cheap! Then again, I'm guessing from previous examples that Microsoft gets nowhere near as much bang for their buck.
Could someone post an actual stong password you have in use?
I'll volunteer: 11111. I figure it's such a terrible password that brute-force software, giving humanity the benefit of the doubt, will have removed it as an option for the purposes of optimization. Thus it is the strongest password.
Reasonable-quality audio/video recording equipment is becoming nearly ubiquitous, being embedded in cell phones. Yet the only "footage" that is available is grainy and poor quality. As the quality and availability of audio/video recording equipment grows, one would expect the quality of "sighting" recordings to increase, but they aren't.
The aliens and ghosts are clearly reacting to advancing and increasingly-available technology by reducing their exposure and appearing in locations that whose obscurity is proportional to our gains in sensor clarity. Those bastards.
I think that's very telling.
They're clearly way smarter than we originally thought. Spooky!
Rogue Brown Dwarf Lurks In Our Cosmic Neighborhood
Fortunately, we Humans have Perception, so he's not that big of a threat.
I think the idea is that you'd run different domains to protect different sets of files. You'd run your tax software in a "tax" domain, and if any PDF software got infected, it wouldn't be able to touch the "tax" domain information.
Versus locked-down operating systems, you have a valid point (and my personal issue with this approach). However, it's not without its advantages. In a standard Linux system, every userspace process has access to around 330 system calls. Each one of these is an interface into the kernel, and a bug in even one of them is enough to take over the kernel. Furthermore, any application that can load kernel modules can potentially dominate the kernel.
In the Qubes system, each domain is protected by a virtualization layer. It does have domainhypervisor interfaces (similar to system calls) to allow I/O, graphics, and the copy-paste subsystem to run, but there are a lot fewer of them. They are oriented around a finite functionality - the aforemented I/O, graphics, etc., while system calls must exist for all userspace functionality. Therefore, as userspace applications get more complex and system calls (per-domain) increase in number and complexity, the domainhypervisor interface will be more or less static. This hopefully leads to them being easier to secure and lock down.
Let me begin by saying that this sounds like a truly interesting approach to security. Virtualization technology defines very clear hardware-enforced boundaries between software domains. In the standard case, those domains contain different operating systems, each of which are provided privilege level-based sub-domains. In this particular case, each domain is dedicated to running sets of user-space applications, and the hardware boundary is used for userspace isolation, as opposed to virtual machine OS isolation.
So my "home" domain is infected, but my intellectual property is in my "work" domain. The virtualization boundary means that a virus can get Ring 0 access and still not be able to touch those IP files. Hurray ... except wait. There must be an interface between the "home" domain and the hypervisor, else things like copy-and-paste and hardware resource arbitration can't work. Here's what some infection paths would look like:
Maybe the paths can be locked down better, but a vulnerability is a vulnerability. It's clearly harder for a virus to get full control, but that's just throwing another obstacle in the way. If one is bad, and two is better, maybe three is even better, but nothing's perfect. Why is the domain-to-hypervisor path considered any more secure than the userspace-to-kernel path? If it's not, you're just adding more complexity, which could mean more potential for vulnerabilities! If you're locking down privilege boundaries, kernels like FreeBSD (jails) and even userspace execution environments like Java (JVM) have been working on that for years.
It's cool, but I doubt it will be game-changing.
What are you smoking? Windows kernel itself hasn't really been vulnerable to anything, it's the third party software like Flash, Adobe PDF Reader, internet browsers, and previously some services.
So here's what Google has to say on the subject:
For the lazy reader, almost every article here has the phrase "An attacker who successfully exploited this vulnerability could run arbitrary code in kernel mode." For the even lazier, allow me to summarize: "That's a Bad Thing"
Indeed, like any long-lasting public multi-version kernel, the Windows kernel has had a hefty share of vulnerabilities. What you said is just plain false. However, to the OP:
So this means your hypervisor can get infected? Is it really such a great idea to use the largest individual security risk in computers as a hypervisor?
You may want to think a little harder about what you mean by kernel. Every hypervisor is a type of kernel. Some things that perform hypervisor-like roles are full-fledged kernels. However, if you actually click the link in the article that you're quoting, you'd see that they're not talking even remotely about what you think they are. The article details how Microsoft is investigating changing some fundamental (read: legacy, UNIXy, etc.) kernel models and roles to take a shot at getting more successful multicore performance and a better user experience. It's less about "zomg Windows is a hypervisor" and more about "what traditional Kernel roles can we modify?"
If you understood even fundamental systems architecture concepts, you'd realize that Windows as a hypervisor is a lot less scary than Windows as a standalone OS, as the latter is not only handed full system control, but is also responsible for arbitrating userspace execution.
Granted, the (sandboxed code execution) could only be provided through a JRE of some sort, but security controls ?. What the hell is that? If you are referring to bytecode verification, then why not say so.
Because that was a sentence in a long post, and it was off-topic enough already :)
To answer your questions: plenty of the things you said are true, but they are not part of the language. Libraries that add them are a poor and spotty replacement for native language / runtime support. They work, and they can work well, but Java has them integrated deeply into the language, runtime, and semantics, and used by default.
And by "security controls" I was brain-farting over the name of the SecurityManager classes and their fundamental integration into the sandboxed environment model.
Really, it was a bear of a post I was pretty sure would be modded Offtopic anyway. Responding to an AC over a tangentially-relevant topic often is. Rereading it, I don't think I got very condescending until the end. I have to admit I was put off a bit by the OP's usage of phrases like "failure", "idiots", and "clearly". That, being almost 100% incorrect, and drumming up Java 1.1 grievances are just a short-circuit to my bad side.
When the industry as a whole moved from C and C++ to Java in the late 1990s, one of our main problems was the bloat that Java brought to the table. Memory consumption was a real issue, as was its slow nature. Things have improved somewhat, mainly driven by vast hardware advances.
Interesting take - unfortunately incorrect. Java's performance issues were almost entirely due to the interpreted nature of its code. When it was originally released, all Java code was interpreted by the JVM. The result is similar to running code through an emulator ... often usable, but certainly not competitive with native applications. The introduction of Just-in-time compilation to Java (via HotSpot and similar runtime engines) made all the difference in the world. By Java 1.2 (1998), the JRE came equipped with HotSpot and basic performance became an (often inappropriately cited) non-issue. Hardware advances played as much a role in speeding up Java as it did any other language.
Now, when we moved from C and C++ to Java, we did get a huge productivity boost, even if our apps themselves were more bloated and ran slower. Apps that would've taken us a year to develop using C++ could be finished in a couple of months using Java. We could also develop much more complex software than we could using C++. So Java did offer some real benefits, and that's why it became popular.
More info can be found with Google.
Most of the benefits offered by Java are those bestowed upon an application by virtue of running in the Java Runtime Environment (JRE), including automatic memory management (garbage collection), strong exception handling, cross-platform portability, sandboxed code execution, security controls, dynamic class generation, to name a few. Java's syntax is also familiar and effective, and caters to many newer programming models and paradigms. Nothing about Java allows applications to be more complex than they were before... I dare you to find something as complex as the Linux Kernel, or something whose complexity is handled better in Java than via a C++ toolkit like QT. Java's advantages have always been related to its abilities to simplify coding challenges, allowing more effective, secure, and functional code to be produced faster (and with a lower learning curve).
We can't say the same for Flash and HTML5, however. They both suffer from far worse bloat than Java ever did. For instance, take watching videos on YouTube. I just did that using Firefox on Linux, and the Firefox process is now using 3966 MB of RAM. That's its resident usage, not virtual usage, as well. Its virtual usage is currently 4512 MB.
This is certainly a bit subjective. For example, my Firefox running on Linux watching YouTube is only using 80MB of memory, with Flash's "npviewer.bin" adding another 10MB. However, RAM usage is not a bad thing. Traditionally, when RAM came in far smaller quantities than it did now, developers frequently traded extra CPU cycles and disk I/O to conserve memory. Now, it's almost the opposite. A good application, especially a foreground application like a web browser, will use RAM liberally to conserve bottleneck resources like CPU, bandwidth, and I/O. Most of the time, the application profiles the environment that it is running in and chooses how much RAM it will use for optimization based on that profile. A system with 1GB of RAM will likely have big applications like Firefox use significantly less memory than one with 8
Of course, the problem is that a web site or chat forum has relatively little visibility of the user's typing pattern, so unless you force all forums to be accessed by special software that can monitor typing (AND you prevent the use of cut-and-paste so that you type in one window, then paste into the chat window, or detect such matters and flag THAT) then this won't be very useful at all.
It can certainly be implemented via a Javascript-hooked message box and periodic AJAX messages. Look at how Google implements chat in GMail or Wave. Hell, in Wave they can show you typing letter-by-letter. Granted there is some latency and blocking, but heuristics could certainly work to smooth that out. Data may be lossy, but it also may not be so lossy that nothing useful can be extracted.
There will always be ways around (Javascript blocking, copy/pasting, etc.), but your average Internet forum poser will probably not be aware enough to take those measures, especially if they result in user interface inconvenience.
Nice national ID cards for our safety and you know just to be on the safe side we need a DNA database too, to prevent people from misusing this program...and hey we need to start monitoring your internet usage to prevent people from pretending to be you and setting up appoitments or chaning your information.
Yeah its nothing to be worried about, Im sure it will be all OK.
So you're against the idea on account of that other things are bad?