Sunday, 12 January 2014
Sunday, 8 December 2013
How to write a virus
Question
How do I create a computer virus?
Answer
If you are interested in creating a computer virus, Trojan, worm, malware, or other malicious program as revenge, payback, or as a prank we suggest you rethink. Creating a virus that deletes files or causes other issues resolves nothing and will result in prosecution by the law. In other words, you could be fined or sent to prison.
Instead of creating computer viruses or other malware consider learning a computer programming language. You'll learn a lot more by learning one or more programming languages and become more qualified in getting hired at a company that designs programs or analyzes viruses. No one ever got hired because they wrote a computer virus.
Below is additional questions and answers that relate to this same subject.
I only want to write a virus to learn how they work.
You will learn a lot more about how computer programs and viruses work by learning to program than you ever will by writing and tinkering with computer viruses. A computer virus is only a program designed to do malicious tasks on the computer such as deleting files, inserting its code into other files, and copying itself to other places and computers accessible to the computer that is running the virus. By learning to program, you'll not only know how these tasks are possible, but also learn much more.
I need to test my virus scanner.
You can create test virus files that can be used to test your computers anti-virus scanner without having to create your own virus. See the below link for additional information and code on how to create a test virus.
If I create a good computer virus, I will be famous.
No, the only fame you may get is a brief news article or a picture of you being handcuffed and sent to prison. Once incarcerated it will go on your record and make it next to impossible to get hired at any respectable computer company and impossible to get hired by any government agency.
If you were to write a computer virus that was successful you would want to remain anonymous in fear of being prosecuted by the law. Also, if you think about it, almost everyone knows who is and what he has done for computers but have no clue about .
If I write a good virus, I'll get hired at a security firm or antivirus company.
False, no respectable security firm or antivirus company wants to affiliated with a virus or malware creator that infected potential customer computers. If you're interested in getting a job with a security firm or antivirus company you'll have a much better chance by learning to programming, becoming a participant in security discussions, being a beta tester, or finding vulnerabilities in programs and reporting them to the developers. Companies such as Google will even pay good money to anyone who reports bugs or security vulnerabilities about any of their products.
Can Computer Hope send me additional details, examples, or other information about creating viruses?
No, Computer Hope will not send anyone any other additional information about creating computer viruses, worms, or Trojans. This document was only created to help deter people from creating computer viruses and learn computer programming instead.
What programming languages should I learn?
Programming language such as C, C++, C#, Java, Perl, PHP, and Python are all good programming languages for new computer programmers. See the below link if you're not exactly sure what language to start learning first.
Fundamental of computer programming
Fundamental of Computer Programming
Objective
Functions, Pointers
Functions:
A function is a self-contained block of statements that perform a task of some kind.
Arguments are passed to the function, the function performs a task using the arguments, and the function returns a value back to the main program. Functions break a program into multiple parts, with each part performing a specific task.
Parts of a Function
The program multiplies two integers. Although multiplying two integers in C is very easy, a function is used here to demonstrate their use with a simple code example. The different parts of a function are commented.
Code Example:
#include <stdio.h>
#include<conio.h>
int mult(int n1, int n2); // function declaration (function prototype)
int main()
{
int a,b,output;
printf("Enter integer a: ");
scanf("%d",&a);
printf("Enter integer b: ");
scanf("%d",&b);
output = mult(a,b); // function call
printf("a*b = %d\n",output);
getch();
return 0;
}
int mult(int n1, int n2) // function definition
{
int result;
result=n1*n2;
return result; // function return value
}
Declaration:
The function declaration informs the compiler about relevant properties of the function (much like a variable declaration). The declaration includes the type of value it returns (such as int or float), the function name, and a list of input parameters it expects.
It is possible for a function to not return a value. Such a function must use the "void" type. In a void function, the "return" statement is optional.
void message( ); //function declaration which return no value and takes no parameters
Call:
The function call is where the main ( ) calls the mult function. The variable input is passed to the function. Note that input is an int, which is what mult was expecting (as seen in the function declaration). The main ( ) becomes the “calling” function and mult becomes the “called” function.
Definition:
This is where the actual code for the function is located. Note that the first line in the definition of function matches the function declaration except for the semicolon.
Return Value:
This is the result that is passed back to the caller function. The return value must have the same type as the function; in this case the function mult has type int, so the return value must be of type int.
Pointers:
‘&’ is called address operator. Pointer operator available in C is “*”, called ‘value at address’ operator. It gives the value stored at a particular address. The “value at address” operator is also called “indirection” operator.
int main( )
{
int i = 3 ;
printf ( "\nAddress of i = %u", &i ) ;
printf ( "\nValue of i = %d", i ) ;
printf ( "\nValue of i = %d", *( &i ) ) ;
getch( );
return 0;
}
The output of the above program would be:
Address of i = 65524
Value of i = 3
Value of i = 3
Note that printing the value of *(&i) is same as printing the value of i.
The expression &i gives the address of the variable i. This address can be collected in a variable, by saying,
int *j;
j = &i ;
But remember that j is not an ordinary variable like any other integer variable. It is a variable that contains the address of other variable (i in this case). Since j is a variable the compiler must provide it space in the memory.
Pass by reference and pass by value
Whenever we called a function and passed something to it we have always passed the ‘values’ of variables to the called function. Such function calls are called ‘calls by value’. By this we mean is, on calling a function we are passing values of variables to it. The examples of call by value are shown below:
sum = calsum ( a, b, c ) ;
Instead of passing the value of a variable, pass the location number (also called address) of the variable to a function. Such functions calls are called ‘call by reference’.
Code Example:
//Call by value
void swapv(int x , int y);
int main( )
{
int a = 10, b = 20 ;
swapv ( a, b ) ;
printf ( "\na = %d b = %d", a, b ) ;
getch( );
return 0;
}
void swapv ( int x, int y )
{
int t ;
t = x ;
x = y ;
y = t ;
printf ( "\nx = %d y = %d", x, y ) ;
}
The output of the above program would be:
x = 20 y = 10
a = 10 b = 20
Note that values of a and b remain unchanged even after exchanging the values of x and y.
//call by reference
void swapv(int x , int y);
int main( )
{
int a = 10, b = 20 ;
swapr ( &a, &b ) ;
printf ( "\na = %d b = %d", a, b ) ;
getch( );
return 0;
}
swapr( int *x, int *y )
{
int t ;
t = *x ;
*x = *y ;
*y = t ;
}
The output of the above program would be:
a = 20 b = 10
Note that this program manages to exchange the values of a and b using their addresses stored in x and y.
TASKS:
Write a function to calculate the factorial value of any integer entered through keyboard. Function receive integer value in main ( ) and prints results in function.
Create a simple calculator using functions. Write separate functions for addition, multiplication, subtraction, division, modulus and power function. Each function takes three arguments, two of the arguments are integers and third argument is an integer pointer argument which stores the result of operation on first two arguments. Each function declaration and definition contain return-type void.
Game in c language code
Mini project snake game in c
codeblock
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include<time.h>
#include<ctype.h>
#include <time.h>
#include <windows.h>
#include <process.h>
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
int length;
int bend_no;
int len;
char key;
void record();
void load();
int life;
void Delay(long double);
void Move();
void gotoxy(int x, int y);
void GotoXY(int x,int y);
void Bend();
void Boarder();
void Down();
void Left();
void Up();
void Right();
void ExitGame();
int Scoreonly();
struct coordinate{
int x;
int y;
int direction;
typedef struct coordinate coordinate;
coordinate head, bend[500],food,body[30];
int main()
char key;
Print();
system("cls");
load();
length=5;
head.x=25;
head.y=20;
head.direction=RIGHT;
Boarder();
Food(); //to generate food coordinates initially
life=3; //number of extra lives
bend[0]=head;
Move(); //initialing initial bend coordinate
return 0;
void Move()
int a,i;
do{
Food();
fflush(stdin);
len=0;
for(i=0;i<30;i++)
body[i].x=0;
body[i].y=0;
if(i==length)
break;
Delay(length);
Boarder();
if(head.direction==RIGHT)
Right();
else if(head.direction==LEFT)
Left();
else if(head.direction==DOWN)
Down();
else if(head.direction==UP)
Up();
ExitGame();
}while(!kbhit());
a=getch();
if(a==27)
system("cls");
exit(0);
key=getch();
if((key==RIGHT&&head.direction!=LEFT&&head.direction!=RIGHT)||(key==LEFT&&head.direction!=RIGHT&&head.direction!=LEFT)||(key==UP&&head.direction!=DOWN&&head.direction!=UP)||(key==DOWN&&head.direction!=UP&&head.direction!=DOWN))
bend_no++;
bend[bend_no]=head;
head.direction=key;
if(key==UP)
head.y--;
if(key==DOWN)
head.y++;
if(key==RIGHT)
head.x++;
if(key==LEFT)
head.x--;
Move();
else if(key==27)
system("cls");
exit(0);
else
printf("\a");
Move();
void gotoxy(int x, int y)
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
void GotoXY(int x, int y)
HANDLE a;
COORD b;
fflush(stdout);
b.X = x;
b.Y = y;
a = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(a,b);
void load(){
int row,col,r,c,q;
gotoxy(36,14);
printf("loading...");
gotoxy(30,15);
for(r=1;r<=20;r++){
for(q=0;q<=100000000;q++);//to display the character slowly
printf("%c",177);}
getch();
void Down()
int i;
for(i=0;i<=(head.y-bend[bend_no].y)&&len<length;i++)
GotoXY(head.x,head.y-i);
if(len==0)
printf("v");
else
printf("*");
body[len].x=head.x;
body[len].y=head.y-i;
len++;
Bend();
if(!kbhit())
head.y++;
void Delay(long double k)
Score();
long double i;
for(i=0;i<=(10000000);i++);
void ExitGame()
int i,check=0;
for(i=4;i<length;i++) //starts with 4 because it needs minimum 4 element to touch its own body
if(body[0].x==body[i].x&&body[0].y==body[i].y)
check++; //check's value increases as the coordinates of head is equal to any other body coordinate
if(i==length||check!=0)
break;
if(head.x<=10||head.x>=70||head.y<=10||head.y>=30||check!=0)
life--;
if(life>=0)
head.x=25;
head.y=20;
bend_no=0;
head.direction=RIGHT;
Move();
else
system("cls");
printf("All lives completed\nBetter Luck Next Time!!!\nPress any key to quit the game\n");
record();
exit(0);
void Food()
if(head.x==food.x&&head.y==food.y)
length++;
time_t a;
a=time(0);
srand(a);
food.x=rand()%70;
if(food.x<=10)
food.x+=11;
food.y=rand()%30;
if(food.y<=10)
food.y+=11;
else if(food.x==0)/*to create food for the first time coz global variable are initialized with 0*/
food.x=rand()%70;
if(food.x<=10)
food.x+=11;
food.y=rand()%30;
if(food.y<=10)
food.y+=11;
void Left()
int i;
for(i=0;i<=(bend[bend_no].x-head.x)&&len<length;i++)
GotoXY((head.x+i),head.y);
if(len==0)
printf("<");
else
printf("*");
body[len].x=head.x+i;
body[len].y=head.y;
len++;
Bend();
if(!kbhit())
head.x--;
void Right()
int i;
for(i=0;i<=(head.x-bend[bend_no].x)&&len<length;i++)
//GotoXY((head.x-i),head.y);
body[len].x=head.x-i;
body[len].y=head.y;
GotoXY(body[len].x,body[len].y);
if(len==0)
printf(">");
else
printf("*");
/*body[len].x=head.x-i;
body[len].y=head.y;*/
len++;
Bend();
if(!kbhit())
head.x++;
void Bend()
int i,j,diff;
for(i=bend_no;i>=0&&len<length;i--)
if(bend[i].x==bend[i-1].x)
diff=bend[i].y-bend[i-1].y;
if(diff<0)
for(j=1;j<=(-diff);j++)
body[len].x=bend[i].x;
body[len].y=bend[i].y+j;
GotoXY(body[len].x,body[len].y);
printf("*");
len++;
if(len==length)
break;
else if(diff>0)
for(j=1;j<=diff;j++)
/*GotoXY(bend[i].x,(bend[i].y-j));
printf("*");*/
body[len].x=bend[i].x;
body[len].y=bend[i].y-j;
GotoXY(body[len].x,body[len].y);
printf("*");
len++;
if(len==length)
break;
else if(bend[i].y==bend[i-1].y)
diff=bend[i].x-bend[i-1].x;
if(diff<0)
for(j=1;j<=(-diff)&&len<length;j++)
/*GotoXY((bend[i].x+j),bend[i].y);
printf("*");*/
body[len].x=bend[i].x+j;
body[len].y=bend[i].y;
GotoXY(body[len].x,body[len].y);
printf("*");
len++;
if(len==length)
break;
else if(diff>0)
for(j=1;j<=diff&&len<length;j++)
/*GotoXY((bend[i].x-j),bend[i].y);
printf("*");*/
body[len].x=bend[i].x-j;
body[len].y=bend[i].y;
GotoXY(body[len].x,body[len].y);
printf("*");
len++;
if(len==length)
break;
void Boarder()
system("cls");
int i;
GotoXY(food.x,food.y); /*displaying food*/
printf("F");
for(i=10;i<71;i++)
GotoXY(i,10);
printf("!");
GotoXY(i,30);
printf("!");
for(i=10;i<31;i++)
GotoXY(10,i);
printf("!");
GotoXY(70,i);
printf("!");
void Print()
//GotoXY(10,12);
printf("\tWelcome to the mini Snake game.(press any key to continue)\n");
getch();
system("cls");
printf("\tGame instructions:\n");
printf("\n-> Use arrow keys to move the snake.\n\n-> You will be provided foods at the several coordinates of the screen which you have to eat. Everytime you eat a food the length of the snake will be increased by 1 element and thus the score.\n\n-> Here you are provided with three lives. Your life will decrease as you hit the wall or snake's body.\n\n-> YOu can pause the game in its middle by pressing any key. To continue the paused game press any other key once again\n\n-> If you want to exit press esc. \n");
printf("\n\nPress any key to play game...");
if(getch()==27)
exit(0);
void record(){
char plname[20],nplname[20],cha,c;
int i,j,px;
FILE *info;
info=fopen("record.txt","a+");
getch();
system("cls");
printf("Enter your name\n");
scanf("%[^\n]",plname);
//************************
for(j=0;plname[j]!='\0';j++){ //to convert the first letter after space to capital
nplname[0]=toupper(plname[0]);
if(plname[j-1]==' '){
nplname[j]=toupper(plname[j]);
nplname[j-1]=plname[j-1];}
else nplname[j]=plname[j];
nplname[j]='\0';
//*****************************
//sdfprintf(info,"\t\t\tPlayers List\n");
fprintf(info,"Player Name :%s\n",nplname);
//for date and time
time_t mytime;
mytime = time(NULL);
fprintf(info,"Played Date:%s",ctime(&mytime));
//**************************
fprintf(info,"Score:%d\n",px=Scoreonly());//call score to display score
//fprintf(info,"\nLevel:%d\n",10);//call level to display level
for(i=0;i<=50;i++)
fprintf(info,"%c",'_');
fprintf(info,"\n");
fclose(info);
printf("wanna see past records press 'y'\n");
cha=getch();
system("cls");
if(cha=='y'){
info=fopen("record.txt","r");
do{
putchar(c=getc(info));
}while(c!=EOF);}
fclose(info);
int Score()
int score;
GotoXY(20,8);
score=length-5;
printf("SCORE : %d",(length-5));
score=length-5;
GotoXY(50,8);
printf("Life : %d",life);
return score;
int Scoreonly()
int score=Score();
system("cls");
return score;
void Up()
int i;
for(i=0;i<=(bend[bend_no].y-head.y)&&len<length;i++)
GotoXY(head.x,head.y+i);
if(len==0)
printf("^");
else
printf("*");
body[len].x=head.x;
body[len].y=head.y+i;
len++;
Bend();
if(!kbhit())
head.y--;
Google voice
Google Voice Search, part of the Google Search app for Android and iOS, can now respond to many queries in French, German, and Japanese in the language that they were originally asked.
Google did not immediately respond to questions about what languages are planned next, or why these three languages were chosen. However, given how many people speak Hindi, Spanish, Mandarin, and Cantonese, it would stand to reason that they would be high on Google's list for upcoming support.
Friday, 23 August 2013
Don't buy a new PC or Mac before you read this
Editors' note: article was originally published June 27, 2013, and was updated August 22, 2013, to reflect that many more systems are now available with Intel's latest processors, with still more to come later this year.
Before swiping your credit card on a new ultrabook, all-in-one, or convertible, you're going to want to dive a little deeper into the spec sheets. That's because the latest Intel CPU upgrade, introduced in June and code named Haswell (but officially known as "fourth-generation Core i series") offers significant battery life improvements in the laptops we've tested so far. So, unlike the more ho-hum Intel updates we've seen in years past, there's a real-world payoff in seeking out a Haswell-equipped laptop.
But, many popular laptops, such as the Lenovo Yoga 13 and Apple MacBook Pro with Retina Display, still use third-generation Intel CPUs, with no official upgrade plans yet announced. If better battery life isn't a big concern, for example if you're going for a desktop PC, or if you have a "desktop replacement" laptop that you don't tend to disconnect from the power cord, this could work in your favor, and you could score a nice discount as more pre-Haswell PCs make their way to the discount bin.
How do you tell which is which? That's the tricky part.
The current laptop landscape
As we move into the Haswell era, the market is in flux. Many "new" laptops and hybrids, such as the Lenovo IdeaPad Yoga 11S or the Toshiba Kirabook, all still ship with processors from Intel's third-generation Core i series, the same parts that have been found in most PCs since spring 2012. On the bright side, some popular systems, including the Acer Aspire S7, have added Haswell parts.
Normally this wouldn't be a big deal, because any current laptop will have more than enough processing power for everyday tasks, such as Web surfing, HD video playback, social media networking, and working on basic office documents. For that reason, in years past, having the latest and greatest processors wasn't especially high on my priorities list. Frankly, the average consumer wouldn't feel much of a difference in surfing the Web on a laptop with a budget-minded Intel Core i3 versus one with a high-end Core i7.
But with a growing number of Haswell PCs (and Macs) tested, the battery life results from them so far has been very impressive. The Haswell-equipped PCs also offer Intel's better integrated graphics, either the HD 5000, HD 4600, or HD 4400, rather than the now-outdated Intel HD 4000 graphics found in third-gen Core i-series systems.
Case in point: the 2012 version of Apple's 13-inch MacBook Air ran for 7 hours and 27 minutes in our video playback battery drain test. The 2013 version of the 13-inch Air, with a Haswell CPU, blows that out of the water, with an astonishing 14 hours and 25 minutes on the same test. Sony's Haswell-powered Vaio Pro 13 ran for nearly 9 hours, and even the gaming-oriented Razer Blade, ran for more than 7 hours.
How to choose
The natural question this raises is: should you hold off on buying a particular PC if it still has a third-generation Intel Core i-series processor and wait for the Haswell version? Some popular systems, including the Lenovo Yoga line, the Microsoft Surface Pro, and Apple's MacBook Pro have not publicly announced street date for updated versions with the newest Intel CPUs.
This new Acer Aspire S7 looks the same as the previous model, but its new Intel CPU ran for about 1 hour longer.
I suggest approaching with caution, although I'm not ruling out buying a non-Haswell system altogether. Below are some guidelines that represent my current thinking on the subject; feel free to add your own suggestions and ideas in the comments section below.
Desktops and larger laptops: Buy now
Considering the modest gains in actual application performance (including the HD 5000 graphics), if you're holding off for performance reasons, don't. For a traditional desktop or all-in-one with no battery, the last-gen processor isn't a big deal. The same goes, to a lesser extent, for 15-inch and larger laptops, which by their nature spend most of their time tethered to a desk and power outlet. On the bright side, some gaming laptops, such as the Alienware 14 and Toshiba Qosmio X75, have already moved to Haswell.
Ultrabook-style systems: Seek out a Haswell version
Some of the best ultrathin laptops, namely the Apple MacBook Air, Sony's new Vaio Pro (both of which are available in 11- and 13-inch models), and Acer's Aspire S7 now have the new Intel CPUs. Battery life on these is amazing, and I'd be hard-pressed to buy a premium ultrabook (or faux-trabook) with shorter non-Haswell battery life. It would certainly be painful to spend more than $1,600 on a Toshiba Kirabook or Lenovo Helix and not get the latest processors (and the resulting boost in battery life).
Budget shoppers: Wait if you can, or seek out bargains if you can't
Some of our favorite reasonably priced laptops, such as the Dell Inspiron 14z and Sony's Vaio Fit 14, are not available with fourth-gen Intel Core i-series CPUs yet, nor is there an estimated date for them. The new Core i3 CPUs for budget and midprice systems are the last item on Intel's priority list (the highest-end quad-core Core i7 chips came out first, followed by Core i5 versions), and more-modest battery life expectations are built into buying a sub-$800 laptop. That said, we're already seeing some good deals on pre-Haswell PCs, as retailers and manufacturers begin blowing out inventory to make room for those new Haswell models. Keep an eye on those Sunday newspaper circulars and Internet deals.
Dell's XPS 12 hybrid is now available with a new Haswell-generation CPU.
Tablet/hybrids: Wait for Haswell
Tablets are designed for all-day on-the-go use, but to date, many Windows models -- from the Lenovo Yoga to the Microsoft Surface Pro -- haven't yet hit that battery life sweet spot. Well, it's time to stop compromising. Every Windows 8 device that's either a slate-style tablet or laptop/tablet hybrid could benefit from the extended battery life offered by Haswell. (That also goes for Intel's next-gen Atom CPU, dubbed Bay Trail -- also due soon.) The 14-hour battery life on the new MacBook Air proves it: it's possible to get much better battery life on tablets than we're getting now, and we should demand it. In other words, if you like the look and feel of a current Windows tablet, hold out for the Haswell version. Fortunately, some hybrids, such as the Dell XPS 12, are now shipping with Haswell CPUs.
Bonus advice: Don't worry about Windows 8.1 or Mac OS X 10.9 Mavericks
Savvy tech shoppers know that Microsoft and Apple are both updating their operating systems before the end of the year, to Windows 8.1 (due October 17) and Mac OS X 10.9 Mavericks. The good news is that the Microsoft upgrade will be free (for existing Windows 8 users), and the Mac upgrade is likely to be very cheap (Apple hasn't announced dates or pricing, but the last few Mac versions have been only $20). Any computer running the current OSes should be easily upgradable to the forthcoming versions; there's no reason to wait for them to be released before buying.
Research may lead to inexpensive, flexible solar cells
Work by a team of chemical engineers at Penn State and Rice University may lead to a new class of inexpensive organic solar cells.
"Imagine if you could make solar cells as easily as you can print posters or newspapers—you could make sheets of this," said Enrique Gomez, assistant professor of chemical engineering. "It represents a fundamental shift in the way in which we make solar cells."
Most solar cells today are inorganic and made of crystalline silicon. The problem with these, Gomez explained, is that inorganic solar cells tend to be expensive, rigid and relatively inefficient when it comes to converting sunlight into electricity.
But organic solar cells offer an intriguing alternative that's flexible and potentially less expensive.
Not many organic solar cells currently exist. He said, "There are a bunch of prototypes floating around. You see them in places like in solar-powered laptop bags and on the top of some bus depots."
The problem is that the bulk of organic solar cells employ fullerene acceptors—a carbon-based molecule that's extremely difficult to scale up for mass production.
Gomez's approach skips the fullerene acceptor altogether and seeks to combine molecules in a solution.
The idea of utilizing molecular self-assembly for solar cells isn't new, but Gomez said, "It's not been well executed."
He continued, "It's like trying to mix oil and water." The issue is that weak intermolecular interactions and disorder at junctions of different organic materials limited the performance and stability of previous organic solar cells.
But by controlling the nanostructure and morphology, the team essentially redesigned the molecules to link together in a better way.
The engineers were able to control the donor-acceptor heterojunctions through microphase-separated conjugated block copolymers.
"We have not only demonstrated control of the microstructure, but also control of the interface responsible for the initial steps in charge photogeneration in a way never achieved before," Gomez said.
The result, which was detailed in a recent issue of the American Chemical Society's Nano Letters journal, is an organic solar cell made of block copolymers that's three percent efficient.
The team included Penn State chemical engineering graduate student Changhe Guo; undergraduate student Matt Witman; Rafael Verduzco, the Louis Owen Assistant Professor of Chemical and Biomolecular Engineering at Rice University; Joseph Strzalka, research scientist at Argonne National Laboratory; and research scientists Cheng Wang and Alexander Hexemer of Lawrence Berkeley National Laboratory.
Though the team's prototype is not as efficient as some solar cells that are commercially available, Gomez explained the work shows flexible organic solar cells are indeed possible.
"Our cells right now don't capture a lot of light. We need to look back and redesign the molecule. We think we can do better than 3 percent," he said.
What Are the Weirdest Driving Laws in Your State?
Driving laws aren't always easy to keep up with. We all know to stop at red lights, but how do you handle turning when a bike lane is present? Transportation laws can vary by state and you may know better than we do.
In general, driving laws are fairly standard for most situations. Drive on the right side of the road, don't exceed the speed limit, red means stop, green means go. However, there are some laws that are either only present in a certain area, or have atypical applications. For example:
In California, touching your maps app while driving is legally as bad as texting. You can, however, set up your route before you leave and place your phone in a holster within a 5"x5" area in the lower-left or 7"x7" area in the lower right of your windshield. Anywhere else is also against the law.
In Alaska, Florida, Hawaii, Kansas, Louisiana, and Massachusetts, it is illegal for any vehicle in motion to use its hazard lights. Other states allow hazard lights in emergency situations or to indicate a traffic hazard (like heavy rain), while others—such as Georgia, Kentucky, Pennsylvania, and others—allow hazard light usage at any time.
In California (again), bike lanes are treated as full lanes for the purposes of turning right. That is, if you are in the right-most car lane, but there's a bike lane next to you, it is illegal to turn right from the car lane by crossing over the bike lane. You must first merge into the bike lane before the intersection, then make your turn.
For most driving situations, we all know the basics. However, when you're traveling, chances are you'll pass through a state that has some weird laws you had no idea about. So, what are the things that a visitor driving in your state should know about?
Google's Newest Play Store Confirms Manual Updates When Updating All
Google's Play Store offers a lot of options for keeping your apps updated. However, if you've updated to the newest version, you may have noticed a new alert like the one above under certain circumstances.P
Here's how the new reminders work: if you allow the Play Store to automatically update apps in the background, but have disabled automatic updates for specific apps, you'll be prompted to confirm each one of those whenever you press the "Update All" button on your My Apps page. If you have the global setting turned off for automatic updates altogether, however, you won't ever see this prompt. It's a little confusing at first, but basically if you told Google that you always want to manually update a certain app, it will always give you a prompt to confirm for that app.
Android Open Source Project now has latest 4.3.1 fixes for most Nexus hardware
The latest Android 4.3 updates brought a slate of unfortunate software bugs to the party and to Google's own Nexus devices, ironically enough. Thankfully, the Mountain View crew is hard at work patching things up, as evidenced by the Nexus 7 update earlier today that resolved its multi-touch and GPS issues. Now those fixes are up on AOSP as well, not only with the aforementioned JSS15Q build for the 7-inch tablet, but also the JWR66Y for the rest of the recent Nexus clan. The reasoning behind having two fixes instead of one was the addition of an extra bit of code unique to the Nexus 7; they'll be incorporated into one patch as soon as the devs work out the kinks. Aside from patching those aforementioned bugs, the update resolved a clipboard crash issue, tweaked App Opps permissions and fixed a few extra bits of errata. If you're not afraid of a bit of tinkering, head on over to the source to update your Nexus hardware now, or just wait for Google to release Android 4.3.1.