![]() |
| | #1 (permalink) |
| Religious Fanatic | See, I was reading the definition of free software, and I can't help but ask why we can't find a middle ground. The biggest problem we have with Software is that it's data so it's really fuckin easy to copy. Now, for software to be GNU "free", there can't be any restriction on whether or not you can reproduce or modyfy that software and even sell it. Now that would be perfectly fine, except that one could sell dozens of copies of a modified version of your software and you don't get a cut of it, which is total bullshit. But that said, I think commercial software licenses are ridiculously restrictive of what you can do with software you've paid for. And this all comes down to the fact that data is really easy to reproduce. But on the other hand, how big a problem is that? It's easier to get your hands on pirate software now than it ever has been, and there's not one anti-piracy scheme I can think of that hasn't been broken. I have no-cd patches for most of my games (I paid for the games, but who wants to have to put a CD in every time?), I can easily get a keygen for anything I want, yet most companies turn a profit, and most people avoid piracy because they might be prosecuted. The other thing that pisses me off, is that companies don't release the source code for their products, because that would make it even easier to circumvent the security measures they use that only last like two months anyway. But making source code release mandatory would make it easy to spot stolen code and protect software patents. It would also - and this is a big one - open up the market to third party software mods. This would be fantastic, because instead of buying Vista off MS, you could buy an improved version of Vista off...IBM or something, and some of the money goes to MS. People have been doing this with cars forever - a company buys in a BMW, tunes it up, then re-sells it. Fantastic. And that my boys - after 2 days of using Vista as my primary OS - is my dream.
__________________ "Let me tell you something about humans, nephew: They're a wonderful, friendly people - as long as their bellies are full and their holosuites are working. "But take away their creature comforts, deprive them of food, sleep, sonic showers, put their lives in jeopardy over an extended period of time and those friendly, intelligent, wonderful people...will become as nasty and as violent as the most blood-thirsty klingon." |
| | |
| | #2 (permalink) |
| The Awesome One | I think the security measures that large companies put in place have nothing to do with an attempt to stop piracy. Let's face it, as much as we may hate some of these people, they aren't stupid. I think it's more of a balance they're trying to keep. They know as well as we do that software piracy can't be stopped. It's just not going to happen. But if they were to stop trying, then that gives the general public, people who otherwise would purchase the software, a sort of permission to engage in piracy. As many people as there are out there stealing games and apps (I'm one of them) there are alot more people who either couldn't be bothered with cracking them, or just don't have any idea how to do it. These are the people that EA and MS to name a couple big ones, count on. As for the source code, well I can understand the reluctance to release it publicly. It's like Coca Cola releasing the Coke recipe online for all to see. Sure people might be able to mimic it, and get pretty close to the original product, but as a company, you don't want to do anything to encourage that, let alone make it easier. Free software is a gamble. At least for the programmers. I use alot of GNU apps and even some games, and I think when you put the time and effort into making something like that, you do it with the understanding that someone could be making a buck off it later on. Technically that's why people release freebies, for other people to do with as they see fit. Limiting what someone can do with open software defeats the entire purpose.
__________________ "I haven't faced death. I've cheated death. I've tricked my way out of death and patted myself on the back for my ingenuity. I know nothing." --James T. Kirk |
| | |
| | #3 (permalink) | |||
| Religious Fanatic | Quote:
Quote:
It'd basically be the same as the rest of the technology market. If an Engineering company figures out a way to do something, rival companies pay them to use the patent in their products or find a different way of doing the same thing - it's not exactly hard for a qualified individual to reverse engineer something, but it is hard to sell it (or just give it away) on a meaningful scale without someone noticing it's a rip-off and doing something about it. Quote:
__________________ "Let me tell you something about humans, nephew: They're a wonderful, friendly people - as long as their bellies are full and their holosuites are working. "But take away their creature comforts, deprive them of food, sleep, sonic showers, put their lives in jeopardy over an extended period of time and those friendly, intelligent, wonderful people...will become as nasty and as violent as the most blood-thirsty klingon." Last edited by Cymro; 03-23-2008 at 10:40 PM. | |||
| | |
| | #4 (permalink) |
| Religious Fanatic | For instance, the following is a very simple Java program I wrote last year that determines the odds of someone getting all six numbers in the lottery. Code: import java.util.InputMismatchException;//Import Exception Handler for input Mismatches
import java.util.Scanner;//Import Scanner
import java.util.Random;//Import Random number generator
/*
National Lottery Simulator Program with exception handling
Asks user how many draws they would like to simulate
Takes 6 unique numbers between 1 and 49 from the user
Simulates the specified number of draws
If there are matching numbers, it will display how many matches there are and which numbers matched
Stops if all numbers match and informs the user that they have won
Reports how many draws were done and how many were one
Displays statistics on how many draws had how many matches
*/
public class Lab13
{
//begin main method
public static void main( String Args[] )
{
//create Scanner to obtain input from command window
Scanner input = new Scanner( System.in );
//Create Random Number generator
Random randomNumber = new Random();
int noDraws = 0;//Variable for how many draws the user would like.
int userPicks[] = new int[ 6 ];//array variable for the user's choice of numbers
int draw[] = new int[ 6 ];//array for storing the values of each draw
int drawsDone = 0;//counter for how many draws have been done
int matchingNo[] = new int[ 6 ];//array to store numbers that match
int frequencyMatch[] = { 0, 0 , 0 , 0 , 0 ,0, 0 };//Variable used to count how many draws are done where x numbers matched
int drawsWon = 0;//initialize variable to count how many draws were won
int exception = 0;//variable used to repeat question if there is an exception
//Asking the user to input how many draws they would like to run
try
{
System.out.print( "\n\nWelcome to the National Lottery Simulator!\n\n" );
System.out.print( "How many draws would you like?\n\n" );
noDraws = input.nextInt();//user input goes to noDraws
exception = 0;
}//end try
//exception handler should the user attempt to input a non integer value
catch ( InputMismatchException InputMismatchException )
{
exception = 1;
//reports the exception:
System.err.printf( "\nException: %s\n\n",
InputMismatchException );
input.nextLine();//clears the input
System.out.println( "You must enter a whole number between one and 2,147,483,647, please try again.\n\n" );
}//end catch
//if an exception is encountered when obtaining input, this while will repeat the question until a proper input is recieved
while ( exception == 1 )
{
try
{
System.out.print( "How many draws would you like?\n\n" );
noDraws = input.nextInt();//user input goes to noDraws
exception = 0;
}//end try
//exception handler should the user attempt to input a non integer value
catch ( InputMismatchException InputMismatchException )
{
exception = 1;
//reports the exception:
System.err.printf( "\nException: %s\n\n",
InputMismatchException );
input.nextLine();//clears the input
System.out.println( "You must enter a whole number between one and 2,147,483,647, please try again.\n\n" );
}//end catch
}//end while
//Asking the user to pick their numbers
System.out.print( "\n\nPlease choose 6 different numbers between 1 and 49:" );
/*counter will repeat until all 6 elements of array "userPicks" have been filled
with valid data*/
for ( int counter1 = 0; counter1 <= 5; counter1++ )
{
boolean valid = true;//initialize variable for testing if the input is valid
//request user input
try
{
//counter1 is used to help the user track how many numbers they have entered so far
System.out.printf( "\nEnter Number %d: ", ( counter1 + 1 ) );
//counter1 is used to select which part of the array the input is stored in
userPicks[ counter1 ] = input.nextInt();
}//end try
//exception handler should the user attempt to input a non integer value
catch ( InputMismatchException InputMismatchException )
{
//reports the exception:
System.err.printf( "\nException: %s\n\n",
InputMismatchException );
input.nextLine();//clears the input
System.out.println( "You must enter a whole number between 1 and 49, please try again.\n\n" );
}//end catch
//checks if user input is between 1 and 49, if it is not, valid is set to false
if ( userPicks[ counter1 ] <= 0 || userPicks[ counter1 ] >= 50 )
{
valid = false;
}//end if
//This ensures that the program will only check if the input is a unique number if more than one number has been entered
if ( counter1 > 0 )
{
//For statement repeats until all data currently stored in the array has been checked
for ( int counter2 = 0; counter2 < counter1; counter2++ )
{
//Sets "valid" to false if the user attempts to input the same number twice
if ( userPicks[ counter1 ] == userPicks[ counter2 ] )
{
valid = false;
}//end if
}//end for
}//end if
//If user input is not valid, informs the user and reduces counter1 by 1
if ( valid == false )
{
System.out.print( "Invalid input. You must enter a number between 1 and 49," );
System.out.print( "\nyou cannot enter the same number twice, please try again." );
//ensures that the value is asked for again
counter1 = ( counter1 - 1 );
}//end if
}
/*For statement to repeatedly run a random number draw until the user inputted "noDraws" has been satisfied
variable counter3 is used as the counter for this for statement and begins as being equal to "noDraws.*/
for ( int counter3 = noDraws; counter3 > 0; counter3 = ( counter3 - 1 ) )
{
//For statement repeats until 6 random unique numbers have been generated
for ( int counter4 = 0; counter4 <=5; counter4++ )
{
boolean unique = true;//boolean used to check if random numbers are unique
/*Generates a random number to place into the element of array "draw"
counter4 is used to decide which element of the array the number goes to
RandomNumber is scaled to 49 and shifted by 1*/
draw[ counter4 ] = 1 + randomNumber.nextInt( 49 );
//checks if random number is unique only if more than one has been entered
if ( counter4 > 0 )
{
//For statement repeats until each one of the numbers has been checked
for ( int counter5 = 0; counter5 < counter4; counter5++ )
{
/*counter5 is used to select which array element needs checking
The if statement sets unique to false if the number is not unique*/
if ( draw[ counter4 ] == draw[ counter5 ] )
{
unique = false;
}//end if
}//end for
/*if the random number is not unique it will be discarded and another
random number will be generated in it's place*/
if ( unique == false )
{
counter4 = ( counter4 - 1 );
}//end if
}//end if
}//end for
drawsDone++;//increments counter DrawsDone
//Prints the draw number
System.out.printf( "\n\nDraw%d: ", drawsDone );
//for statement repeats until all numbers in the draw printed
for ( int counter6 = 0; counter6 < 6; counter6++ )
{
//counter6 is used to decide which element of array "draw" is to be displayed next
System.out.printf( "%d ", draw[ counter6 ] );
}//end for
int matches = 0;//initializing variable to count how many of the user's numbers match those in draw
/*For statement Checks if the values stored in userPicks match those in the draw
Uses counter7 to decide which element of array "draw" to check*/
for ( int counter7 = 0; counter7 < 6; counter7++ )
{
//For statement uses counter8 to decide which element of array "userPicks" to check
for ( int counter8 = 0; counter8 < 6; counter8++ )
{
//If statement checks if the number matches
if ( draw[ counter7 ] == userPicks[ counter8 ] )
{
/*Stores the matching number into the element of MatchingNo,
selected by the number of matches*/
matchingNo[ matches ] = userPicks[ counter8 ];
matches++;//increments matches
}//end if
}//end for
//Checks if all 6 numbers of the draw match the user's choices
if ( matches == 6 )
{
//Sets counter3 to 0 to end the draws if all 6 numbers match
counter3 = 0;
//Prints out a message informing the user that they have won
System.out.print( "\n\n6 Matches! \n\nCongratulations, you've won an estimated crackpot of 300000000 quatloos!" );
drawsWon = 1;//increments the amount of draws won
}//end if
}//end for
//Prints the number of matching numbers
if ( matches < 6 && matches > 0 )
{
System.out.printf( "\n%d Matches! Matching numbers are:\n", matches );
//for statement to display the element of array 'MatchingNo' determined by the value of 'matches'
for ( int counter9 = 0; counter9 < matches; counter9++ )
{
System.out.printf( "%d ", matchingNo[ counter9 ] );
}//end for
}//end if
//adds 1 to the value of the element of array frequencyMatch selected by the value of variable matches
frequencyMatch[ matches ] = ( frequencyMatch[ matches ] + 1);
}//end for
//reports how many draws were done
System.out.printf( "\n\nYou won %d draw(s) out of %d\n\n", drawsWon, drawsDone );
//For statement to display the data stored in array
for ( int counter10 = 0; counter10 < 7; counter10++ )
{
//Prints out how many draws had x amount of matches
System.out.printf( "There were %d draws with %d matches.\n",
frequencyMatch[ counter10 ], counter10 );
}//end for
}//end method main
}//end class Lab13
__________________ "Let me tell you something about humans, nephew: They're a wonderful, friendly people - as long as their bellies are full and their holosuites are working. "But take away their creature comforts, deprive them of food, sleep, sonic showers, put their lives in jeopardy over an extended period of time and those friendly, intelligent, wonderful people...will become as nasty and as violent as the most blood-thirsty klingon." |
| | |
| | #5 (permalink) | |
| The Awesome One | Quote:
__________________ "I haven't faced death. I've cheated death. I've tricked my way out of death and patted myself on the back for my ingenuity. I know nothing." --James T. Kirk | |
| | |
| | #6 (permalink) | |
| Religious Fanatic | Quote:
I thought of something else too. My Wireless card is working on BETA drivers for Vista. If the manufacturer released the SC for the XP drivers someone would have made something better by now. It's the same story with my graphics card in Ubuntu. The closest I can get to a Linux driver for my graphics card is the official ATI release for the previous model, which doesn't work properly. If the SC was availible for the old Linux and the new Windows drivers, someone would have fixed it by now. And nobody pays for drivers.
__________________ "Let me tell you something about humans, nephew: They're a wonderful, friendly people - as long as their bellies are full and their holosuites are working. "But take away their creature comforts, deprive them of food, sleep, sonic showers, put their lives in jeopardy over an extended period of time and those friendly, intelligent, wonderful people...will become as nasty and as violent as the most blood-thirsty klingon." | |
| | |
| | #7 (permalink) |
| The Awesome One | I understand the practical application of what you're saying, it's just that it's not really a legally viable idea. If the government stepped in and started requiring companies to release or sell SC, it's market interference. And the govt has no business telling me what I should do with my innovations. Even if that leads to consumers getting shoddy product. And yes, most times companies DO allow their tech to be used by other companies, but they are under no obligation to do so, and rightfully so. Think of all the other tech that sony has that they hold onto like a vice. As for BR players, no Sony isn't the only company making them. On the other hand, do you remember Minidisc players? For hardware it makes sense for companies to sell the tech. If they don't, they don't get the market share and die, like the aforementioned MD players. What you're saying leads to a whole new problem though. If MS released the SC to Windows, and another company modified that code significantly and released it as their own, who's to say it's theft. In this day and age, with all the programs out their, you're bound to get code that looks similar amongst different companies. Then we get into patent infringement suits over something as simple as punctuation in code. Where do you draw the line between similarity, and theft? But all of that aside, my basic argument boils down to this. If I invent something, be it software, hardware, or anything else, the government has NO RIGHT WHATSOEVER to dictate what I do with it. That's the ENTIRE basis of a free market. Not to be dramatic, but it's not that long of a path from regulating innovation, to outright communism.
__________________ "I haven't faced death. I've cheated death. I've tricked my way out of death and patted myself on the back for my ingenuity. I know nothing." --James T. Kirk Last edited by Bean; 03-24-2008 at 09:27 AM. |
| | |
| | #8 (permalink) | |||
| Religious Fanatic | Quote:
Quote:
Quote:
And as far as I'm aware, there's nothing Sony can do if Toshiba decides to buy in a few thousand BR players, modify them and re-sell them.
__________________ "Let me tell you something about humans, nephew: They're a wonderful, friendly people - as long as their bellies are full and their holosuites are working. "But take away their creature comforts, deprive them of food, sleep, sonic showers, put their lives in jeopardy over an extended period of time and those friendly, intelligent, wonderful people...will become as nasty and as violent as the most blood-thirsty klingon." Last edited by Cymro; 03-24-2008 at 09:55 AM. | |||
| | |
| | #9 (permalink) | |
| "It's a faaaake!" | Quote:
![]()
__________________ "People should not be afraid of their governments. Governments should be afraid of their people." -V for Vendetta "Don't tell me what I can't do!" -John Locke, Lost Visit me on the web: Hypersyllogistic | Flickr | Twitter ![]() | |
| | |
| | #10 (permalink) | ||
| The Awesome One | Quote:
Quote:
Yeah there is, they can sue the pants off them for patent violations. It's the same as the software model I proposed earlier with Windows. The difference is, it's a hell of alot harder to go through all that code and prove it, than it is to rip open a blue ray player.
__________________ "I haven't faced death. I've cheated death. I've tricked my way out of death and patted myself on the back for my ingenuity. I know nothing." --James T. Kirk | ||
| | |
![]() |
| Thread Tools | |
| Display Modes | |
| |