I've done some work with both PhysX and the things that AMD is pushing for. I try to keep with the Physics Abstraction Layer, which lets me plug in whatever physics engine as the backend, which gives a pretty damn good apples-to-apples performance metric. Personally, my ultimate choice of physics engine is the one which exhibits the best performance. My experience may differ from others, but I generally get the best performance from PhysX on with an nVidia GPU and BulletPhysics with an AMD GPU. Sometimes, the software version of PhysX outstrips the competition, but I have never seen anything beat PhysX in performance with GPU acceleration turned on. And with PAL, it is easy to check if there is GPU support on the machine and swap in the physics engine with the best performance (PAL is awesome).
Here's the thing: GPU-accelerated physics are just plain faster. Why? Because collision detection is a highly parallelizable problem. Guess what hardware we have that can help? The GPU. Another great part of using the GPU is that it frees the CPU to do more random crap (like AI or parsing the horribly slow scripting language).
AMD is working on both BulletPhysics and Havok so they can do GPU acceleration. But I have a feeling that PhysX performance will remain faster for a while: PhysX was designed to natively run on the GPU (technically, a GPU-like device), while these other libraries are not. Furthermore, nVidia has quite a head start in performance tuning, optimization and simple experience. In five years, that shouldn't matter, but I'm just saying that it will take a while.
So here is my message to AMD: If you want people to use your stuff, make something that works and let me test it out in my applications. You've released a demo of Havok with GPU acceleration. PhysX has been and continues to work with GPU acceleration on nVidia GPUs and will frequently outperform the software implementation. I'm all for open alternatives, but in this case, the open alternatives aren't good enough.
One idea would be to use the many available cloud services like EC2, Google App Engine and Azure. The IP blocks those services come in are going to remain fairly regular, but they are so common that it might not be acceptable for a site to block everything from ghs.l.google.com (and whatever EC2 and Azure live on). It is still blockable, though, so it probably would have been better for them (from a technical standpoint) if they hadn't announced their existence and these sites had been slowly indexed by their service before anybody knew what was happening.
Another (better) idea would be to use a service like Tor. Sure, their latency is going to skyrocket, but that's not a big deal since interactivity isn't a primary concern of an indexing service. It's still blockable, if infringing site admins block Tor nodes. This may or may not be doable, as I would imagine many users of said infringing sites use anonymizing networks for their normal traffic.
Sure, either of the solutions I've come up with in five minutes can be circumvented, but the idea isn't to totally eliminate piracy, its to make it inconvenient enough to make getting the legitimate version easier.
These guys make a decent point: 10GUI. The keyboard is a pretty nice thing -- we can express quite a wide range of things to the computer. The mouse, however, sucks. An entire hand and we're limited to a position on the screen and binary "clicks." I use an 11-button mouse to help with this, but most applications are not built to support such interaction, so I'm limited to setting them for global commands (back center is reveal, left and swipe is change desktop), save for some special cases (which is pretty lame). The overall theory is that once you establish a better system of interaction with the computer, your everyday tasks become easier. Ultimately, it would be best if we just wired our brains into the computer, but until that is practical, we'll have to work with what we have.
Don't learn OpenGL, learn graphics and software engineering first. Assuming you want to learn OpenGL for games, I would recommend David Eberly's 3D Game Engine Design. It is extremely comprehensive and presents an incredibly well-designed engine, WildMagic (which has inspired many other engines, like jMonkey), for which you are given the full source on CD. If you're not looking for games, then you probably don't need to know the latest OpenGL stuff, because scientific visualization usually doesn't require it. And if you DO need the latest stuff from OpenGL, you're probably not actually doing graphics and you probably shouldn't use OpenGL, but CUDA or some other platform (CUDA = awesome).
In any case, you need to know that OpenGL is just a specification, so you rely on other multiplatform libraries like GLUT, GLFW or SDL. I would personally recommend SDL, since it is awesome. GLFW is nice, easier to use than SDL, but harder to tweak the small things for performance. GLUT development died many years ago, so don't use it.
Re:The guys behind EXTJS are terrible
on
Learning Ext JS
·
· Score: 1
I believe this is relevant:
The "source code" for a work means the preferred form of the work for making modifications to it.
The company I work for uses a system called Document Locator. It is a Windows-shell integrated document management system. Basically, if you took Subversion and gave yourself extremely fine-grained control of repositories, folders and the like. It scales decently, too -- we have millions of documents spread across 25 major repositories, many of which include AutoCAD, Bentley Microstation, Smartplant 3D and other sizable files. The system is also fairly extensible, as we've built quite a few internal applications off of the DL system and there are plenty of third-party plug-ins available (a notable one being Brava, an application that allows adding QC and other markup to repository files). And if you don't want to be constrained to Windows, there is a web client available, which works decently. While it is not without its problems, the overall experience has been pretty good.
Full disclosure: My company is ColunbiaSoft's largest customer and, as such, we know a good deal of the development team.
Karma be damned, but the use of Windows in a secure system is nowhere near as bad as not sanitizing your inputs on any system. No platform can just make up for bad practice. FreeBSD will happily allow someone to guess 'PASSWORD' as the login password (from TFA: "Software configuration involves setting up a software system for one's particular uses, such as changing a factory-set default password of "PASSWORD" to one less easily guessed."). If you're using Oracle DB, MS SQL or MySQL, if you store passwords as plaintext instead of hashes and secure data in plaintext, you will run into problems (TFA: "...hackers had the ability to obtain more than 40,000 FAA user IDs, passwords, and other information used to control a portion of the FAA mission-support network."). Microsoft may not patch in a timely manner, but it doesn't matter what platform you're running if you don't apply the patches (TFA: "...software with known vulnerabilities was not corrected in a timely manner by installing readily available security software patches released to the public by software vendors."). PHP, JSP, ASP, ASP.NET, Ruby, Perl or whatever, if you program poorly, you're going to have problems.
Larrabee is expected to at least be competitive with nVidia/AMD's stuff, although it might not be until the second generation product before they're on equal footing.
Competitiveness is not a quality of generation number. Still: What statistics have you seen that compare Larrabee and something people use right now (ATI/nVidia)? There is this presentation (PDF) they made at SIGGRAPH, which shows that performance increases as you add more Larrabee cores. Here's a graph which may mean something. The y-axis is "scaled performance" What might that mean?
Graphs show how many 1 GHz Larrabee cores are required to maintain 60 FPS at 1600x1200 resolution in several popular games. Roughly 25 cores are required for Gears of War with no antialiasing, 25 cores for F.E.A.R with 4x antialiasing, and 10 cores for Half-Life 2: Episode 2 with 4x antialiasing.
Sounds neat. I guess that's why they're going to promote the 32-core Larrabee. How much will something to run these cost and how much power will it consume? They're still developing this thing, so why do I keep hearing that it will BLOW MY MIND? I have no doubt that Intel has an army of capable engineers that could build something to render graphics great, but if it costs more than the consumer can possibly pay, there's no real point. Intel is gunning for 2 TFLOPs. I'm pretty sure the Radeon HD 4870 passes that mark already (and you can purchase it for less than $500). Sure, it's a cool technology, but I'd like to see some more facts and figures.
What have I heard? Power usage/heat: 300W TDP. That's pretty horrific. Cost: 12-layer PCB. That's twice the typical graphics card and four more than the high-end Radeon and nForce cards. That doesn't directly translate into cost, but generally more complicated equals more expensive.
But back to the PS4 -- Sony's real mistake with the PS3 was expecting the Cell processor to be the most incredible computing device ever. Original plans for the PS3 included 2 Cell processors, but they changed to the RSX when they realized the Cell wasn't capable of rendering graphics like they wanted to (whereas the XBox 360's architecture was designed with the GPU and CPU co-existing from the start). You can't build a bunch of fast parts and stick them together, you have to build a fast system. Perhaps Sony has learned their lesson.
Not to throw down, but do we even have a definition for "perfect" software? Because I could quite easily argue that not only does the definition not exist, but it is impossible to create a consistent definition for all potential users. The field of MP3 players is a good example: The iPod dominates the market for some strange reason, but many people view other MP3 players as "worse." More buttons would break the "perfect simplicity" of the system, but the inability to arbitrarily build and shuffle playlists is quite obnoxious.
Internet browsers are another interesting domain. My company uses a web-based MIS designed with Internet Explorer 6 in mind. One could blame the system for poor design for reliance on proprietary ActiveX controls, but we're stuck with it. That said, IE6 is the "best" browser can offer to our employees, because Firefox, Opera and Chrome will not function. We're not even touching "perfect" yet.
But I haven't really address the question of the cost of developing "perfect" software, so let's make some assumptions. Let's view "perfect" from a security standpoint (accessibility, confidentiality and integrity) and use Common Criteria as the metric of software goodness.
The first EAL of CC are pretty easy to come by, since the basic definition is that the software works are doesn't crash. The next levels require discretionary (optional) protection, followed by mandatory object protection. That's nothing too interesting, as software of any importance should be doing this stuff anyway. Top-tier perfect software development involves formal verification of the software - as in, developing a description and proving that it will always work. More work is involved proving that your software actually matches the mathematical description of your software, which costs money. If you've ever tried to formally verify software, you will quickly realize that it takes AT LEAST the same amount of time to verify the software as it did to initially develop the software. There are shortcuts such as Automated Theorem Proving, but it's an NP-complete problem and you're going to need to pay (at least) a person who understands it.
So what if we don't want to formally verify our software, but at least check it until it's "good enough." You could hire some hackers to independently test your software, but that costs money. You could internally check it, but that takes time (read: money).
What we really need is a testing facility that integrates well into and speeds up development, which is pretty much what unit testing is for. I can say a lot of good things about unit testing, but they're certainly far from perfect. They take time to develop, but if they help catch glitches, then you're actually speeding along development. Honestly, I couldn't tell you if the net result is time savings, but I can tell you that you can only catch the errors that you are looking for.
In conclusion: I disagree with your statement that developing "zero defect" software costs the same as developing and shipping software with defects. Formal verification is nice, but completely unreasonable to ask for. Independent testing will always cost more money and internal unit testing lacks the independent thought that really finds errors. I would love for software to be perfect, but it is simply too much to ask for out of developers today.
Not quite. CUDA looks a lot like C in that it has C-family syntax but the biggest limitation it has is that there is no application stack - which means no recursion. CUDA also lacks the idea of a pointer, although you can bypass this by doing number to address translation (as in, the number 78 means look up tex2D(tex, 0.7, 0.8)). The GPU also has other shortcomings, in that most architectures like to have all their shaders running the same instruction at the same time. For this code
if (pixel.r < pixel.g){ //do stuff A }else if (pixel.g < pixel.b){ //do stuff B }else{ //do stuff C }
The GPU will slow down a ton if the pixel color causes different pixels to branch in different directions. Basically, the three sets of shaders following different branches of that code will be inactive 2/3 of the time.
In the Cell, you really do just program in C with a number of extensions added onto it like the SPE SIMD intrinsics and the DMA transfer commands (check it out). The Cell really is 9 (10 logical) processors all working together in a single chip (except in PS3, where there are only 7 working SPEs). Furthermore, your 8 SPEs can be running completely different programs -- they're just little processors. Granted, you have to be smart when you program them to deal with race conditions and all the other crap you have to deal with for multithreaded programming. The Cell takes about 14 times longer to calculate a double precision floating point than a single (and there aren't SPE commands to do four at once like you can with singles).
So which is more powerful? It really depends what you're doing. If your task is ridiculously parallellizable and doesn't require the use of recursion, pointers or multiple branches, the GPU is most likely your best bet. If your program falls into any of those categories, use a Cell.
"Procedural" refers to the fact that content is being generated on-the-fly, rather than stored in giant texture files. It is derived from the procedural scripts used to define the parameters for the object to be created (although with the power of scripting languages today, one could argue that this no longer applies).
One of the coolest procedurally-generated demonstrations I have seen is.kkrieger, which is a first-person shooter whose content is almost entirely procedurally generated. The effect of this is that the entire game fits into a 96 kilobyte executable (as in: you could fit 15 copies of this on a 1.44 MB floppy). Pretty cool stuff.
Personally, I'm working on a procedural map generation algorithm for a real-time strategy game.
An image is random enough, but you can take a cryptographic hash of anything you want to - a password, a phone number, a song, an image, etc. How many ticks the processor has made in it's lifetime or the total value of all the bytes added up (modulus something) currently in memory will also be quite random, so the "using a picture" thing isn't really solving any problems. However, it does provide the basis of a framework that would allow you to move that picture (along with the one of yourself) to other devices in order to keep the shared secret key so you can continue to verify the person you're communicating with, since you can re-generate that key. Although there was nothing preventing you from just moving a keyfile in the first place. Don't forget - the more places the key is, the easier it will be for attackers to obtain.
As for the secure transmission of those keys - it's called the Diffie-Hellman Key Exchange and it has been around for over 3 decades and remains unbroken. Alice and Bob communicate some numbers which allow them to generate the same key, but Eve has no way of generating the same number.
I also replied here, so if you think this post is unclear, read there, too.
That's generally not an issue, as there are enough algorithms (such as the Diffie-Hellman Key Exchange) which can generate a secret shared key. These processes can be done at any time, over any channel and require transmitting around a kilobyte of information between Alice and Bob. Since this can be done at any time, what is the point of taking the pictures? Most of the key-agreement protocols are anonymous, so there is no good way to verify that Bob is actually Bob, which is what this intends to solve.
So, two users get together and associate the key which they make at the time with the photos they take of each other. The photos become the out-of-band channel that links Alice and Bob and allows for some level of authentication. This is basically a simpler solution to the key distribution problem we've already experienced with RSA - one that doesn't require a company like Verisign or a complicated "web of trust" solution. Alice trusts that Bob is Bob because Alice associated this shared secret key when she saw him AND she can see his picture when she receives the communication.
Potential hacks? Since we're talking about mobile phones, the retrieval of the shared secret key would be almost trivial if we came into contact with the device. Even if it's not, we can associate Bob's photo with someone else and masquerade as Bob. What if we don't have possession of the device? Well, then the vulnerabilities are the same as any other symmetric-key encryption system...and AES has yet to be broken.
A Nintendo DS will run any code compiled for the ARM processors it is built on. Aside from memory and time constraints, there is nothing preventing you from writing a Java or.NET Runtime Environment built specifically for the DS and running Java or.NET code on it. There is nothing preventing you from writing a JRE for the XBox 360 using the XNA Framework and running your Java code on the 360 that way. No, you wouldn't WANT to do that, but that is different from saying that you CAN'T.
That isn't necessarily what running managed C++ or any other language is limited to. Remember, even managed languages are full-fledged programming languages -- just because you're constrained to making verifiably type-safe code doesn't mean you're restricted (ANSI C, anyone?). Given the scope of the XNA project, a use would be embedding a Lua engine or Python runtime within a game.
However, if you want to go all the way and claim that the backing model and controller aspects should be identical for all platforms that a game should run on...there is nothing preventing you from doing that, save the wrath of a thousand #ifdefs. The reason why you really don't hear about this is because nobody is really trying to do it. Don't forget that the XNA Framework is intended for indie games and that real game developers can make unsafe calls and use unsafe pointers.
They may claim that, but you can get XNA to run any language that will compile to MSIL, such as VB.NET or IronPython (although the main program has to be a C# XNA game). You can even get C++ working if you compile it with/clr:safe. Beyond that, you can program shaders in Cg, HLSL or your own code if you write a content loader for it (this same idea applies to music, models or any other content). XNA is quite powerful and is expanding to the Zune with the next release.
Barack Obama wasn't actually in the Senate when the joint resolution was discussed and eventually passed on 2 October 2002. However, he was busy making an excellent speech at a Chicago anti-war rally. Barack wasn't elected until 2004. Still, had he been in Congress at the time, he would have voted against it and he has repeatedly supported withdrawal from Iraq.
Amazing you can find McCain supporters anywhere, let alone in Slahsdot.
I've asked this question many times: Where are all the McCain supporters? Apparently, 45 percent of the nation is voting for John McCain -- I don't know why they feel that way or who they are. Granted, I am in college and we young people really like this Obama character, but I have yet to talk to a McCain supporter. Sure, some feel that Obama is not to be trusted (should anyone be given the level of trust we give the president?) or that he lacks experience (does anyone have the right experience for the unknown?), but all of these people are still voting for him, because they see McCain as far worse.
When it comes down to it, I can't see myself voting for someone that supports teaching creationism as a science -- I've talked in front of the Kansas School Board against doing so. I can't see myself voting for someone who does not support net neutrality. I can't see myself voting for someone with a vice president who doesn't know what a VP does. I can't see myself voting with a party that has a ridiculous double-standard. Conveniently, all these shortcomings lay with one candidate. </logicalFallacy:paradeOfHorrors>
You're absolutely right. My company uses Google Earth to manage the construction of transmission lines, which lets people know when and where the towers are going to be put up and helps our clients keep track of how close we are to schedule.
Google Earth Used to Construct Power Lines
Google Earth Used to Cure Cancer
Google Earth Used to Find the Closest White Castle
What you're hearing is called "Computational Media" and there is still quite a bit of programming involved. My roommate is a CM major, and he has to get up through a Data Structures class (after learning Python, MATLAB and Java). After that, it's a whole lot of scripting languages (okay, so those I've already mentioned are pretty much scripting) which focus on media development for games and special effects. It's actually a pretty cool field and they don't slack on the math that much.
As far as attracting more women...if they're trying, I sure haven't seen it as I have yet to see a single female in any of my 3000-level courses. We're certainly not slacking on the programming, theoretical math and number theory, either. I spend a lot of my time programming in either C or Lisp.
(b) Examples of Facebook Site Information. The Facebook Site Information may include, without limitation, the following information, to the extent visible on the Facebook Site: your name, your profile picture, your gender, your birthday, your hometown location (city/state/country), your current location (city/state/country), your political view, your activities, your interests, your musical preferences, television shows in which you are interested, movies in which you are interested, books in which you are interested, your favorite quotes, the text of your "About Me" section, your relationship status, your dating interests, your relationship interests, your summer plans, your Facebook user network affiliations, your education history, your work history, your course information, copies of photos in your Facebook Site photo albums, metadata associated with your Facebook Site photo albums (e.g., time of upload, album name, comments on your photos, etc.), the total number of messages sent and/or received by you, the total number of unread messages in your Facebook in-box, the total number of "pokes" you have sent and/or received, the total number of wall posts on your Wall(TM), a list of user IDs mapped to your Facebook friends, your social timeline, and events associated with your Facebook profile.
That's from Facebook's "privacy" statement. That said, I'm not sure the lady has any right to this lawsuit, as it is fairly explicitly stated that there are no rules.
This is what I love about going to school at Georgia Tech - we work with embedded systems where performance is absolutely critical. For an introduction to real programming class, we started with transistors, built processors, memory and a bus architecture from there, wrote assembly code for that processor architecture and eventually wrote in C for the Gameboy Advance. Performance was a big deal. In the snake game, for example, you were fully capable of drawing each pixel of the snake one at a time, but using the DMA would make your game playable. You didn't have to double-buffer, but you would get a horrible tearing effect if you didn't. Working with a 16 MHz processor where there is no operating system doing any "magic" for you is something every CS major should have to deal with.
Artificial intelligence is another example of a place where performance matters. Even on a quad-core 3.2GHz machine, solving np-hard problems is quite a task - the method of solution matters much more than individual implementations. For example, in the n-Queens problem, solving with a search takes quite a bit of time, yet the constraint satisfaction solution can solve huge boards in less than a second. In path finding, adding a single operation to an evaluation function can greatly increase the amount of time it takes to solve the problem.
Coming back on topic - we never really study C++. C++ is the first real language I learned back in middle school when I really wanted to study computing. Sure, I'm fully capable of using C++'s dynamic polymorphism, but the more I used "vanilla"-style C, the more I realized that, even when programming in C++, there is no real need for the vast majority of C++'s features. I could open an ofstream - but what was wrong with a simple fopen? The one thing C really lacks is a try/catch system, but there are alternatives to everything (if ((int*)0 == iArray = (int*)malloc(10 * sizeof(int)))). For systems programming, I'd rather just use C, where I can almost see how the compiler would write the assembly code. For intelligence programming, I'd rather use Lisp, where the reflection is incredibly inherent to the language itself. For almost everything else, where performance is not absolutely critical and a good UI means a lot, I would rather use C# or Java, as the languages prevent me from mucking everything up (Java is much better at it than C#, but C# is more fun to develop in) and polling the user is simple.
So, what is the best language to teach new computer science students? Well, here, all the CS majors learn Python and all the engineers learn Matlab (the CS majors eventually learn Matlab, too). Is this the right thing to do? My personal experience in the matter is teaching two of my friends Java (one of whom knew Matlab, the other knew Python). There were many issues that came up from what I call a "fundamental misunderstanding of the way computers actually work." Sure, there were minor syntactic things like putting a semicolon at the end of each line as well as more advanced concepts such as real object-oriented programming. However, things like references and scoping, the difference between a "value-type" and "reference-type" completely went over their heads. Is this something people should have to worry about when they're first starting? I think so.
In my opinion, Java is the best language to teach people who are just starting. Sure, it has its issues, but it manages to hide all the really messy memory-related stuff while ingraining important things like scope and type into a programmer's head. The ability to write your own quicksort and binary tree is much more important than making sure you clean up every single variable as it falls out of scope. Besides, memory management is a logical extension to what someone already knows about the language.
The modern industrial economy has become dependent on computers in general, and select AI programs in particular. For example, much of the economy, especially in the United States, depends on the availability of consumer credit. Credit card applications, charge approvals, and fraud detection are now done by AI programs. One could say that thousands of workers have been displaced by these AI programs, but in fact if you took away the AI programs these jobs would not exist, because human labor would add an unacceptable cost to the transactions. So far, automation via AI technology has created more jobs than it has eliminated, and has created more interesting, higher-paying jobs. Now that the canonical AI program is an "intelligent agent" designed to assist a human, loss of jobs is less of a concern than it was when AI focused on "expert systems" designed to replace humans. (Russell, Stewart and Peter Norvig, Artificial Intelligence: A Modern Approach p960-1)
We're so incredibly far from developing Strong AI right now - people aren't seriously trying. In sit-down restaurants (I know the Cheesecake Factory for sure), there is an AI system which prints your tickets out to the kitchen at the right times so that all the food arrives at your table nice and hot. Voice recognition software is an AI system to increase productivity, as are intelligent routing services. The air conditioning in your house is an AI system (not a very smart one, but it simulates thinking nonetheless), as is the Roomba, as is that little thing you put in your pool. MySQL uses an AI system to actively cache your most-used tables into RAM and Windows Vista pre-loads your frequently used applications. None of these are taking jobs away from humans, just improving the efficiency of them.
All the e-mail formatting seems to come from the "Mr-Brain.php" file. I'm not sure about how this Mr-Brain character licenses his software, but I figure it is some form of creative commons or (L)GPL, so I should be fine with attribution. So: the following source code was created by Mr-Brain and last updated 2008-Jan-07. If you would like to contact him, please send an e-mail to al-brain@hotmail.fr or albrain08@yahoo.fr.
Never mind, I ran into the lameness filter of Slashdot for this guy's source code. Seems fitting. Messages are sent to the e-mail al-brain@hotmail.fr and the e-mail albrain08@yahoo.fr with the subject "BankofAmerica ReZulT | $ccno | $ip" send with the header "From: Mr-Brain". If you want the exact format, just go to his site (thebadboys[dot]org[slash]Brain and download the source (Mr-Brain.php).
This is for a Bank of America scam, but I'm assuming that the file is identical for the majority of the scams (which involve personal information), so the e-mail format will work everywhere. Anybody who feels the need to send personalized e-mail to Mr-Brain, please send them to the email address al-brain@hotmail.fr or the email address albrain08@yahoo.fr. Hopefully, he'll be very interested in free v1agra.
I've done some work with both PhysX and the things that AMD is pushing for. I try to keep with the Physics Abstraction Layer, which lets me plug in whatever physics engine as the backend, which gives a pretty damn good apples-to-apples performance metric. Personally, my ultimate choice of physics engine is the one which exhibits the best performance. My experience may differ from others, but I generally get the best performance from PhysX on with an nVidia GPU and BulletPhysics with an AMD GPU. Sometimes, the software version of PhysX outstrips the competition, but I have never seen anything beat PhysX in performance with GPU acceleration turned on. And with PAL, it is easy to check if there is GPU support on the machine and swap in the physics engine with the best performance (PAL is awesome).
Here's the thing: GPU-accelerated physics are just plain faster. Why? Because collision detection is a highly parallelizable problem. Guess what hardware we have that can help? The GPU. Another great part of using the GPU is that it frees the CPU to do more random crap (like AI or parsing the horribly slow scripting language).
AMD is working on both BulletPhysics and Havok so they can do GPU acceleration. But I have a feeling that PhysX performance will remain faster for a while: PhysX was designed to natively run on the GPU (technically, a GPU-like device), while these other libraries are not. Furthermore, nVidia has quite a head start in performance tuning, optimization and simple experience. In five years, that shouldn't matter, but I'm just saying that it will take a while.
So here is my message to AMD: If you want people to use your stuff, make something that works and let me test it out in my applications. You've released a demo of Havok with GPU acceleration. PhysX has been and continues to work with GPU acceleration on nVidia GPUs and will frequently outperform the software implementation. I'm all for open alternatives, but in this case, the open alternatives aren't good enough.
One idea would be to use the many available cloud services like EC2, Google App Engine and Azure. The IP blocks those services come in are going to remain fairly regular, but they are so common that it might not be acceptable for a site to block everything from ghs.l.google.com (and whatever EC2 and Azure live on). It is still blockable, though, so it probably would have been better for them (from a technical standpoint) if they hadn't announced their existence and these sites had been slowly indexed by their service before anybody knew what was happening.
Another (better) idea would be to use a service like Tor. Sure, their latency is going to skyrocket, but that's not a big deal since interactivity isn't a primary concern of an indexing service. It's still blockable, if infringing site admins block Tor nodes. This may or may not be doable, as I would imagine many users of said infringing sites use anonymizing networks for their normal traffic.
Sure, either of the solutions I've come up with in five minutes can be circumvented, but the idea isn't to totally eliminate piracy, its to make it inconvenient enough to make getting the legitimate version easier.
These guys make a decent point: 10GUI. The keyboard is a pretty nice thing -- we can express quite a wide range of things to the computer. The mouse, however, sucks. An entire hand and we're limited to a position on the screen and binary "clicks." I use an 11-button mouse to help with this, but most applications are not built to support such interaction, so I'm limited to setting them for global commands (back center is reveal, left and swipe is change desktop), save for some special cases (which is pretty lame). The overall theory is that once you establish a better system of interaction with the computer, your everyday tasks become easier. Ultimately, it would be best if we just wired our brains into the computer, but until that is practical, we'll have to work with what we have.
Don't learn OpenGL, learn graphics and software engineering first. Assuming you want to learn OpenGL for games, I would recommend David Eberly's 3D Game Engine Design . It is extremely comprehensive and presents an incredibly well-designed engine, WildMagic (which has inspired many other engines, like jMonkey), for which you are given the full source on CD. If you're not looking for games, then you probably don't need to know the latest OpenGL stuff, because scientific visualization usually doesn't require it. And if you DO need the latest stuff from OpenGL, you're probably not actually doing graphics and you probably shouldn't use OpenGL, but CUDA or some other platform (CUDA = awesome).
In any case, you need to know that OpenGL is just a specification, so you rely on other multiplatform libraries like GLUT, GLFW or SDL. I would personally recommend SDL, since it is awesome. GLFW is nice, easier to use than SDL, but harder to tweak the small things for performance. GLUT development died many years ago, so don't use it.
The company I work for uses a system called Document Locator. It is a Windows-shell integrated document management system. Basically, if you took Subversion and gave yourself extremely fine-grained control of repositories, folders and the like. It scales decently, too -- we have millions of documents spread across 25 major repositories, many of which include AutoCAD, Bentley Microstation, Smartplant 3D and other sizable files. The system is also fairly extensible, as we've built quite a few internal applications off of the DL system and there are plenty of third-party plug-ins available (a notable one being Brava, an application that allows adding QC and other markup to repository files). And if you don't want to be constrained to Windows, there is a web client available, which works decently. While it is not without its problems, the overall experience has been pretty good.
Full disclosure: My company is ColunbiaSoft's largest customer and, as such, we know a good deal of the development team.
Karma be damned, but the use of Windows in a secure system is nowhere near as bad as not sanitizing your inputs on any system. No platform can just make up for bad practice. FreeBSD will happily allow someone to guess 'PASSWORD' as the login password (from TFA: "Software configuration involves setting up a software system for one's particular uses, such as changing a factory-set default password of "PASSWORD" to one less easily guessed."). If you're using Oracle DB, MS SQL or MySQL, if you store passwords as plaintext instead of hashes and secure data in plaintext, you will run into problems (TFA: "...hackers had the ability to obtain more than 40,000 FAA user IDs, passwords, and other information used to control a portion of the FAA mission-support network."). Microsoft may not patch in a timely manner, but it doesn't matter what platform you're running if you don't apply the patches (TFA: "...software with known vulnerabilities was not corrected in a timely manner by installing readily available security software patches released to the public by software vendors."). PHP, JSP, ASP, ASP.NET, Ruby, Perl or whatever, if you program poorly, you're going to have problems.
Competitiveness is not a quality of generation number. Still: What statistics have you seen that compare Larrabee and something people use right now (ATI/nVidia)? There is this presentation (PDF) they made at SIGGRAPH, which shows that performance increases as you add more Larrabee cores. Here's a graph which may mean something. The y-axis is "scaled performance" What might that mean?
Sounds neat. I guess that's why they're going to promote the 32-core Larrabee. How much will something to run these cost and how much power will it consume? They're still developing this thing, so why do I keep hearing that it will BLOW MY MIND? I have no doubt that Intel has an army of capable engineers that could build something to render graphics great, but if it costs more than the consumer can possibly pay, there's no real point. Intel is gunning for 2 TFLOPs. I'm pretty sure the Radeon HD 4870 passes that mark already (and you can purchase it for less than $500). Sure, it's a cool technology, but I'd like to see some more facts and figures.
What have I heard? Power usage/heat: 300W TDP. That's pretty horrific. Cost: 12-layer PCB. That's twice the typical graphics card and four more than the high-end Radeon and nForce cards. That doesn't directly translate into cost, but generally more complicated equals more expensive.
But back to the PS4 -- Sony's real mistake with the PS3 was expecting the Cell processor to be the most incredible computing device ever. Original plans for the PS3 included 2 Cell processors, but they changed to the RSX when they realized the Cell wasn't capable of rendering graphics like they wanted to (whereas the XBox 360's architecture was designed with the GPU and CPU co-existing from the start). You can't build a bunch of fast parts and stick them together, you have to build a fast system. Perhaps Sony has learned their lesson.
Not to throw down, but do we even have a definition for "perfect" software? Because I could quite easily argue that not only does the definition not exist, but it is impossible to create a consistent definition for all potential users. The field of MP3 players is a good example: The iPod dominates the market for some strange reason, but many people view other MP3 players as "worse." More buttons would break the "perfect simplicity" of the system, but the inability to arbitrarily build and shuffle playlists is quite obnoxious.
Internet browsers are another interesting domain. My company uses a web-based MIS designed with Internet Explorer 6 in mind. One could blame the system for poor design for reliance on proprietary ActiveX controls, but we're stuck with it. That said, IE6 is the "best" browser can offer to our employees, because Firefox, Opera and Chrome will not function. We're not even touching "perfect" yet.
But I haven't really address the question of the cost of developing "perfect" software, so let's make some assumptions. Let's view "perfect" from a security standpoint (accessibility, confidentiality and integrity) and use Common Criteria as the metric of software goodness.
The first EAL of CC are pretty easy to come by, since the basic definition is that the software works are doesn't crash. The next levels require discretionary (optional) protection, followed by mandatory object protection. That's nothing too interesting, as software of any importance should be doing this stuff anyway. Top-tier perfect software development involves formal verification of the software - as in, developing a description and proving that it will always work. More work is involved proving that your software actually matches the mathematical description of your software, which costs money. If you've ever tried to formally verify software, you will quickly realize that it takes AT LEAST the same amount of time to verify the software as it did to initially develop the software. There are shortcuts such as Automated Theorem Proving, but it's an NP-complete problem and you're going to need to pay (at least) a person who understands it.
So what if we don't want to formally verify our software, but at least check it until it's "good enough." You could hire some hackers to independently test your software, but that costs money. You could internally check it, but that takes time (read: money).
What we really need is a testing facility that integrates well into and speeds up development, which is pretty much what unit testing is for. I can say a lot of good things about unit testing, but they're certainly far from perfect. They take time to develop, but if they help catch glitches, then you're actually speeding along development. Honestly, I couldn't tell you if the net result is time savings, but I can tell you that you can only catch the errors that you are looking for.
In conclusion: I disagree with your statement that developing "zero defect" software costs the same as developing and shipping software with defects. Formal verification is nice, but completely unreasonable to ask for. Independent testing will always cost more money and internal unit testing lacks the independent thought that really finds errors. I would love for software to be perfect, but it is simply too much to ask for out of developers today.
Not quite. CUDA looks a lot like C in that it has C-family syntax but the biggest limitation it has is that there is no application stack - which means no recursion. CUDA also lacks the idea of a pointer, although you can bypass this by doing number to address translation (as in, the number 78 means look up tex2D(tex, 0.7, 0.8)). The GPU also has other shortcomings, in that most architectures like to have all their shaders running the same instruction at the same time. For this code
if (pixel.r < pixel.g){
//do stuff A
//do stuff B
//do stuff C
}else if (pixel.g < pixel.b){
}else{
}
The GPU will slow down a ton if the pixel color causes different pixels to branch in different directions. Basically, the three sets of shaders following different branches of that code will be inactive 2/3 of the time.
In the Cell, you really do just program in C with a number of extensions added onto it like the SPE SIMD intrinsics and the DMA transfer commands (check it out). The Cell really is 9 (10 logical) processors all working together in a single chip (except in PS3, where there are only 7 working SPEs). Furthermore, your 8 SPEs can be running completely different programs -- they're just little processors. Granted, you have to be smart when you program them to deal with race conditions and all the other crap you have to deal with for multithreaded programming. The Cell takes about 14 times longer to calculate a double precision floating point than a single (and there aren't SPE commands to do four at once like you can with singles).
So which is more powerful? It really depends what you're doing. If your task is ridiculously parallellizable and doesn't require the use of recursion, pointers or multiple branches, the GPU is most likely your best bet. If your program falls into any of those categories, use a Cell.
"Procedural" refers to the fact that content is being generated on-the-fly, rather than stored in giant texture files. It is derived from the procedural scripts used to define the parameters for the object to be created (although with the power of scripting languages today, one could argue that this no longer applies).
One of the coolest procedurally-generated demonstrations I have seen is .kkrieger, which is a first-person shooter whose content is almost entirely procedurally generated. The effect of this is that the entire game fits into a 96 kilobyte executable (as in: you could fit 15 copies of this on a 1.44 MB floppy). Pretty cool stuff.
Personally, I'm working on a procedural map generation algorithm for a real-time strategy game.
An image is random enough, but you can take a cryptographic hash of anything you want to - a password, a phone number, a song, an image, etc. How many ticks the processor has made in it's lifetime or the total value of all the bytes added up (modulus something) currently in memory will also be quite random, so the "using a picture" thing isn't really solving any problems. However, it does provide the basis of a framework that would allow you to move that picture (along with the one of yourself) to other devices in order to keep the shared secret key so you can continue to verify the person you're communicating with, since you can re-generate that key. Although there was nothing preventing you from just moving a keyfile in the first place. Don't forget - the more places the key is, the easier it will be for attackers to obtain.
As for the secure transmission of those keys - it's called the Diffie-Hellman Key Exchange and it has been around for over 3 decades and remains unbroken. Alice and Bob communicate some numbers which allow them to generate the same key, but Eve has no way of generating the same number.
I also replied here, so if you think this post is unclear, read there, too.
That's generally not an issue, as there are enough algorithms (such as the Diffie-Hellman Key Exchange) which can generate a secret shared key. These processes can be done at any time, over any channel and require transmitting around a kilobyte of information between Alice and Bob. Since this can be done at any time, what is the point of taking the pictures? Most of the key-agreement protocols are anonymous, so there is no good way to verify that Bob is actually Bob, which is what this intends to solve.
So, two users get together and associate the key which they make at the time with the photos they take of each other. The photos become the out-of-band channel that links Alice and Bob and allows for some level of authentication. This is basically a simpler solution to the key distribution problem we've already experienced with RSA - one that doesn't require a company like Verisign or a complicated "web of trust" solution. Alice trusts that Bob is Bob because Alice associated this shared secret key when she saw him AND she can see his picture when she receives the communication.
Potential hacks? Since we're talking about mobile phones, the retrieval of the shared secret key would be almost trivial if we came into contact with the device. Even if it's not, we can associate Bob's photo with someone else and masquerade as Bob. What if we don't have possession of the device? Well, then the vulnerabilities are the same as any other symmetric-key encryption system...and AES has yet to be broken.
A Nintendo DS will run any code compiled for the ARM processors it is built on. Aside from memory and time constraints, there is nothing preventing you from writing a Java or .NET Runtime Environment built specifically for the DS and running Java or .NET code on it. There is nothing preventing you from writing a JRE for the XBox 360 using the XNA Framework and running your Java code on the 360 that way. No, you wouldn't WANT to do that, but that is different from saying that you CAN'T.
That isn't necessarily what running managed C++ or any other language is limited to. Remember, even managed languages are full-fledged programming languages -- just because you're constrained to making verifiably type-safe code doesn't mean you're restricted (ANSI C, anyone?). Given the scope of the XNA project, a use would be embedding a Lua engine or Python runtime within a game.
However, if you want to go all the way and claim that the backing model and controller aspects should be identical for all platforms that a game should run on...there is nothing preventing you from doing that, save the wrath of a thousand #ifdefs. The reason why you really don't hear about this is because nobody is really trying to do it. Don't forget that the XNA Framework is intended for indie games and that real game developers can make unsafe calls and use unsafe pointers.
They may claim that, but you can get XNA to run any language that will compile to MSIL, such as VB.NET or IronPython (although the main program has to be a C# XNA game). You can even get C++ working if you compile it with /clr:safe. Beyond that, you can program shaders in Cg, HLSL or your own code if you write a content loader for it (this same idea applies to music, models or any other content). XNA is quite powerful and is expanding to the Zune with the next release.
Barack Obama wasn't actually in the Senate when the joint resolution was discussed and eventually passed on 2 October 2002. However, he was busy making an excellent speech at a Chicago anti-war rally. Barack wasn't elected until 2004. Still, had he been in Congress at the time, he would have voted against it and he has repeatedly supported withdrawal from Iraq.
I've asked this question many times: Where are all the McCain supporters? Apparently, 45 percent of the nation is voting for John McCain -- I don't know why they feel that way or who they are. Granted, I am in college and we young people really like this Obama character, but I have yet to talk to a McCain supporter. Sure, some feel that Obama is not to be trusted (should anyone be given the level of trust we give the president?) or that he lacks experience (does anyone have the right experience for the unknown?), but all of these people are still voting for him, because they see McCain as far worse.
When it comes down to it, I can't see myself voting for someone that supports teaching creationism as a science -- I've talked in front of the Kansas School Board against doing so. I can't see myself voting for someone who does not support net neutrality. I can't see myself voting for someone with a vice president who doesn't know what a VP does. I can't see myself voting with a party that has a ridiculous double-standard. Conveniently, all these shortcomings lay with one candidate. </logicalFallacy:paradeOfHorrors>
You're absolutely right. My company uses Google Earth to manage the construction of transmission lines, which lets people know when and where the towers are going to be put up and helps our clients keep track of how close we are to schedule.
What you're hearing is called "Computational Media" and there is still quite a bit of programming involved. My roommate is a CM major, and he has to get up through a Data Structures class (after learning Python, MATLAB and Java). After that, it's a whole lot of scripting languages (okay, so those I've already mentioned are pretty much scripting) which focus on media development for games and special effects. It's actually a pretty cool field and they don't slack on the math that much.
As far as attracting more women...if they're trying, I sure haven't seen it as I have yet to see a single female in any of my 3000-level courses. We're certainly not slacking on the programming, theoretical math and number theory, either. I spend a lot of my time programming in either C or Lisp.
Cheers!
That's from Facebook's "privacy" statement. That said, I'm not sure the lady has any right to this lawsuit, as it is fairly explicitly stated that there are no rules.
He wears a red cape and blogs from a high-altitude balloon.
This is what I love about going to school at Georgia Tech - we work with embedded systems where performance is absolutely critical. For an introduction to real programming class, we started with transistors, built processors, memory and a bus architecture from there, wrote assembly code for that processor architecture and eventually wrote in C for the Gameboy Advance. Performance was a big deal. In the snake game, for example, you were fully capable of drawing each pixel of the snake one at a time, but using the DMA would make your game playable. You didn't have to double-buffer, but you would get a horrible tearing effect if you didn't. Working with a 16 MHz processor where there is no operating system doing any "magic" for you is something every CS major should have to deal with.
Artificial intelligence is another example of a place where performance matters. Even on a quad-core 3.2GHz machine, solving np-hard problems is quite a task - the method of solution matters much more than individual implementations. For example, in the n-Queens problem, solving with a search takes quite a bit of time, yet the constraint satisfaction solution can solve huge boards in less than a second. In path finding, adding a single operation to an evaluation function can greatly increase the amount of time it takes to solve the problem.
Coming back on topic - we never really study C++. C++ is the first real language I learned back in middle school when I really wanted to study computing. Sure, I'm fully capable of using C++'s dynamic polymorphism, but the more I used "vanilla"-style C, the more I realized that, even when programming in C++, there is no real need for the vast majority of C++'s features. I could open an ofstream - but what was wrong with a simple fopen? The one thing C really lacks is a try/catch system, but there are alternatives to everything (if ((int*)0 == iArray = (int*)malloc(10 * sizeof(int)))). For systems programming, I'd rather just use C, where I can almost see how the compiler would write the assembly code. For intelligence programming, I'd rather use Lisp, where the reflection is incredibly inherent to the language itself. For almost everything else, where performance is not absolutely critical and a good UI means a lot, I would rather use C# or Java, as the languages prevent me from mucking everything up (Java is much better at it than C#, but C# is more fun to develop in) and polling the user is simple.
So, what is the best language to teach new computer science students? Well, here, all the CS majors learn Python and all the engineers learn Matlab (the CS majors eventually learn Matlab, too). Is this the right thing to do? My personal experience in the matter is teaching two of my friends Java (one of whom knew Matlab, the other knew Python). There were many issues that came up from what I call a "fundamental misunderstanding of the way computers actually work." Sure, there were minor syntactic things like putting a semicolon at the end of each line as well as more advanced concepts such as real object-oriented programming. However, things like references and scoping, the difference between a "value-type" and "reference-type" completely went over their heads. Is this something people should have to worry about when they're first starting? I think so.
In my opinion, Java is the best language to teach people who are just starting. Sure, it has its issues, but it manages to hide all the really messy memory-related stuff while ingraining important things like scope and type into a programmer's head. The ability to write your own quicksort and binary tree is much more important than making sure you clean up every single variable as it falls out of scope. Besides, memory management is a logical extension to what someone already knows about the language.
Just my 3 cents (inflation).
We're so incredibly far from developing Strong AI right now - people aren't seriously trying. In sit-down restaurants (I know the Cheesecake Factory for sure), there is an AI system which prints your tickets out to the kitchen at the right times so that all the food arrives at your table nice and hot. Voice recognition software is an AI system to increase productivity, as are intelligent routing services. The air conditioning in your house is an AI system (not a very smart one, but it simulates thinking nonetheless), as is the Roomba, as is that little thing you put in your pool. MySQL uses an AI system to actively cache your most-used tables into RAM and Windows Vista pre-loads your frequently used applications. None of these are taking jobs away from humans, just improving the efficiency of them.
Pirates would simply specify a bit in the IP header. Logically, it would be implemented like RFC 3514
All the e-mail formatting seems to come from the "Mr-Brain.php" file. I'm not sure about how this Mr-Brain character licenses his software, but I figure it is some form of creative commons or (L)GPL, so I should be fine with attribution. So: the following source code was created by Mr-Brain and last updated 2008-Jan-07. If you would like to contact him, please send an e-mail to al-brain@hotmail.fr or albrain08@yahoo.fr.
Never mind, I ran into the lameness filter of Slashdot for this guy's source code. Seems fitting. Messages are sent to the e-mail al-brain@hotmail.fr and the e-mail albrain08@yahoo.fr with the subject "BankofAmerica ReZulT | $ccno | $ip" send with the header "From: Mr-Brain". If you want the exact format, just go to his site (thebadboys[dot]org[slash]Brain and download the source (Mr-Brain.php).
This is for a Bank of America scam, but I'm assuming that the file is identical for the majority of the scams (which involve personal information), so the e-mail format will work everywhere. Anybody who feels the need to send personalized e-mail to Mr-Brain, please send them to the email address al-brain@hotmail.fr or the email address albrain08@yahoo.fr. Hopefully, he'll be very interested in free v1agra.
And, uh
email: al-brain@hotmail.fr
email: albrain08@yahoo.fr