Wednesday, April 29, 2009

People who look exactly the same in all pictures (5 gifs) » Izismile.com - In fun we trust! Pictures, photos, videos, flash, games, celebs, hot stuff

People who look exactly the same in all pictures (5 gifs)

17 Apr 2009  / views: 348501




Do you remember the video with a girl who has the same pose on all her pictures? Well, I thought it was a one in a million case, but there are plenty of people who do this. O_o It seems that they think there’s only one side which looks good )
You can look through the photo album of your friends, maybe you'll notice the same thing winked


People who look exactly the same in all pictures (5 gifs)
People who look exactly the same in all pictures (5 gifs)
People who look exactly the same in all pictures (5 gifs)
People who look exactly the same in all pictures (5 gifs)
People who look exactly the same in all pictures (5 gifs)

Chance of keeping your job if you’re WRONG more than 75% of the time




song chart memes


Chance of keeping your job if you’re WRONG more than 75% of the time


Graph by jpblue87, via our GraphJam builder.





Sunday, April 19, 2009

Qcon

Shared by Madhu


Facebook architecture

Facebook Architecture Aditya Agarwal Director of Engineering 11/22/2008

The road to professional web development

http://www.slideshare.net/cheilmann/the-road-to-professional-web-development#

Sunday, March 22, 2009

Facebook | Engineering @ Facebook's Notes

Scaling memcached at Facebook
by Paul Saab (notes) Saturday, December 13, 2008 at 1:13am
If you've read anything about scaling large websites, you've probably heard about memcached. memcached is a high-performance, distributed memory object caching system. Here at Facebook, we're likely the world's largest user of memcached. We use memcached to alleviate database load. memcached is already fast, but we need it to be faster and more efficient than most installations. We use more than 800 servers supplying over 28 terabytes of memory to our users. Over the past year as Facebook's popularity has skyrocketed, we've run into a number of scaling issues. This ever increasing demand has required us to make modifications to both our operating system and memcached to achieve the performance that provides the best possible experience for our users.

Because we have thousands and thousands of computers, each running a hundred or more Apache processes, we end up with hundreds of thousands of TCP connections open to our memcached processes. The connections themselves are not a big problem, but the way memcached allocates memory for each TCP connection is. memcached uses a per-connection buffer to read and write data out over the network. When you get into hundreds of thousands of connections, this adds up to gigabytes of memory-- memory that could be better used to store user data. To reclaim this memory for user data, we implemented a per-thread shared connection buffer pool for TCP and UDP sockets. This change enabled us to reclaim multiple gigabytes of memory per server.

Although we improved the memory efficiency with TCP, we moved to UDP for get operations to reduce network traffic and implement application-level flow control for multi-gets (gets of hundreds of keys in parallel). We discovered that under load on Linux, UDP performance was downright horrible. This is caused by considerable lock contention on the UDP socket lock when transmitting through a single socket from multiple threads. Fixing the kernel by breaking up the lock is not easy. Instead, we used separate UDP sockets for transmitting replies (with one of these reply sockets per thread). With this change, we were able to deploy UDP without compromising performance on the backend.

Another issue we saw in Linux is that under load, one core would get saturated, doing network soft interrupt handing, throttling network IO. In Linux, a network interrupt is delivered to one of the cores, consequently all receive soft interrupt network processing happens on that one core. Additionally, we saw an excessively high rate of interrupts for certain network cards. We solved both of these by introducing “opportunistic” polling of the network interfaces. In this model, we do a combination of interrupt driven and polling driven network IO. We poll the network interface anytime we enter the network driver (typically for transmitting a packet) and from the process scheduler’s idle loop. In addition, we also take interrupts (to keep latencies bounded) but we take far fewer network interrupts (typically by setting interrupt coalescing thresholds aggressively). Since we do network transmission on every core and since we poll for network IO from the scheduler’s idle loop, we distribute network processing evenly across all cores.

Finally, as we started deploying 8-core machines and in our testing, we discovered new bottlenecks. First, memcached's stat collection relied on a global lock. A nuisance with 4 cores, with 8 cores, the lock now accounted for 20-30% of CPU usage. We eliminated this bottleneck by moving stats collection per-thread and aggregating results on-demand. Second, we noticed that as we increased the number of threads transmitting UDP packets, performance decreased. We found significant contention on the lock that protects each network device’s transmit queue. Packets are enqueued for transmission and dequeued by the device driver. This queue is managed bv Linux’s “netdevice” layer that sits in-between IP and device drivers. Packets are added and removed from the queue one at a time, causing significant contention. One of our engineers changed the dequeue algorithm to batch dequeues for transmit, drop the queue lock, and then transmit the batched packets. This change amortizes the cost of the lock acquisition over many packets and reduces lock contention significantly, allowing us to scale memcached to 8 threads on an 8-core system.

Since we’ve made all these changes, we have been able to scale memcached to handle 200,000 UDP requests per second with an average latency of 173 microseconds. The total throughput achieved is 300,000 UDP requests/s, but the latency at that request rate is too high to be useful in our system. This is an amazing increase from 50,000 UDP requests/s using the stock version of Linux and memcached.

We’re hoping to get our changes integrated into the official memcached repository soon, but until that happens, we’ve decided to release all our changes to memcached on github.

Strategy: Facebook Tweaks to Handle 6 Time as Many Memcached Requests | High Scalability

Strategy: Facebook Tweaks to Handle 6 Time as Many Memcached Requests

Todd Hoff's picture
Sat, 12/13/2008 - 21:19 — Todd Hoff

Our latest strategy is taken from a great post by Paul Saab of Facebook, detailing how with changes Facebook has made to memcached they have:


...been able to scale memcached to handle 200,000 UDP requests per second with an average latency of 173 microseconds. The total throughput achieved is 300,000 UDP requests/s, but the latency at that request rate is too high to be useful in our system. This is an amazing increase from 50,000 UDP requests/s using the stock version of Linux and memcached.

To scale Facebook has hundreds of thousands of TCP connections open to their memcached processes. First, this is still amazing. It's not so long ago you could have never done this. Optimizing connection use was always a priority because the OS simply couldn't handle large numbers of connections or large numbers of threads or large numbers of CPUs. To get to this point is a big accomplishment. Still, at that scale there are problems that are often solved.

Some of the problem Facebook faced and fixed:

  • Per connection consumption of resources. What works well at low number of inputs can totally kill a system as inputs grow. Memcached uses a per-connection buffer which adds up to a lot of memory that could be used to store data. Nothing wrong with this design choice, but Facebook made changes to use a per-thread shared connection buffer and reclaimed gigabytes of RAM on each server.
  • Kernel lock contention. Facebook discovered under load there was lock contention when transmitting through a single UDP socket from multiple threads. Sockets are data structures too and they are subject to the usual lock contention issues. Facebook got around this issue by maintaining separate reply sockets in different threads so they would not contend with the receive sockets. They found another bottleneck in Linux’s “netdevice” layer that sits in-between IP and device drivers. They changed the dequeue algorithm to batch dequeues so more work was done when they had the CPU.
  • Application lock contention. Nothing brings out lock issues like moving to more cores. Facebook found when they moved to 8 core machines a global lock protecting stats collection used 20-30% of CPU usage. In application that require little processing per request, as does memcached, this is not unexpected, but doing real work with your CPU is a better idea. So they collected stats on a per thread basis and then calculated a global view on demand.
  • Interrupt floods and starvation. With so much traffic directed at a single server the hardware can flood the CPU(s) with interrupts and keep the CPU from doing "real" work. To get around this problem Facebook implements some complicated strategies to load balance IO across all the cores. As I am less clever I might try more network cards with a TCP Offload engine.

    When you read Paul's article keep in mind all the incredible number of man hours that went into profiling the system, not just their application, but the entire software hardware stack. Then add in the research, planning, and trying different solutions to see if anything changed for the better. It's a lot of work. Notice using a nifty new parallel language or moving to a cloud wouldn't have made a bit difference. It's complete mastery of their system that made the difference.

    A summary of potential strategies:

  • Profile everything. Problems are always specific. The understanding of the problem must be specific. The fix must be specific.
  • Burn profiling into your regression tests. Detect when and where performance tanks as a regular part of your build.
  • Use resources in proportion to what grows slowest. This requires multiplexing, but at least your resource usage is more predictable and bounded.
  • Batch work. When you have the CPU do all the work you possibly can in the quantum or the whole system grinds to a halt in processing overhead.
  • Do work and maintain resources per task. Otherwise locking for shared resources takes more and more time when there's less and less time to do the work that needs to be done.
  • Change algorithms. Sometimes you simply need to do things differently. Tweaking will only get you so far.

    You can find their changes on github, the hub that says "git."


  • Friday, March 6, 2009

    Strategy: In Cloud Computing Systematically Drive Load to the CPU

    Update: What are Amazon EC2 Compute Units?. Cloud providers charge for CPU time in voodoo units like "compute units" and "core hours." Geva Perry takes on the quest of figuring out what these mean in real life.


    read more


    Friday, February 27, 2009

    Only His Only Grammarian Can Only Say Only What Only He Only Means.

    Shared by Madhu


    Placing the word "only" in 15 different places in the sentence results in over 20 different interpretations!

    Only His Only Grammarian Can Only Say Only What Only He Only Means.

    Peter G. Neumann, SEN Editor (1976-1994)
    ACM SIGSOFT Software Engineering Notes 9, 1, Jan 1986, p. 6.
    Copyright Peter G. Neumann, 1986,1997 [with slight revision in the placement of an italicized only -- see Note 2]

    In response to the apparently rampant rage of the misplaced only,and perhaps also inspired by some of William Safire's columns in The NewYork Times Sunday Magazine, I offer the following annotated examples.(Italics indicate spoken stress, and parentheses indicate the presence ofsomething that would be implicit even when spoken.) Please bear with me onthis one. You may have to devote a little patience to each case. However,a conclusion you should be able to reach with no trouble at all is that theextent of ambiguity in the written English is awesome, but that wecan hide some of it in speaking the same words -- through suitable placementof emphasis (and with the help of a tolerance or ambivalence on the part ofthe listener). May you learn to put the only ``only'' only in thecorrect place. Note that the other places that you might put theitalicized only in the previous sentence (e.g., before the first,second, third, fourth, or tenth words) also result in different meanings.

    1. Only(,) I said he thought secret users may write secret data.
    2. Only I said he thought secret users may write secret data.
    3. I only said he thought secret users may write secret data.
    4. I said only (that) he thought secret users may write secret data.
    5. I said only he thought secret users may write secret data.
    6. I said he only thought secret users may write secret data.
    7. I said he thought only (that) secret users may write secret data.
    8. I said he thought only secret users may write secret data.
    9. I said he thought only secret users may write secret data.
    10. I said he thought secret users only may write secret data.
    11. I said he thought secret users only may write secret data.
    12. I said he thought secret users may only write secret data.
    13. I said he thought secret users may write only secret data.
    14. I said he thought secret users may write secret data only.
    15. I said he thought secret users may write secret data only.

    Note that ignoring the added stress and implicit parentheticals (as onewould in written English), various of these cases would appearindistinguishable from one another, reflecting inherent ambiguity in thewritten language; these cases are 1 and 2; 4 and 5; 8 and 9; 10 and 11; 14and 15. If you are still with me, here are some suggestions to help youinterpret at least one possible meaning in each of the above cases. Evenwith stress added, some of these cases are still ambiguous. And I have completely ignored the ambiguity between Secret-level usersand users of secrets, assuming the former for simplicity.

    1. But I didn't say what you said I said. What I really said was ...
    2. No one else said so. Only I did.
    3. I didn't really mean it. I just said it.
    4. I didn't say anything else.
    5. I don't think anyone else thought so!
    6. But he wasn't really sure.
    7. He thought only that, and did not think anything else.
    8. But not Unclassified or Top-Secret users.
    9. But not Secret daemon processes or administrators.
    10. Ambiguous! Depending on whether there is an unspoken pause or not after only, we have one of two cases:
    The writer must be a user, and a Secret user at that, to write Secret data; OR
    The only thing secret users may do is write Secret data (and nothing else -- not even breathe).
    11. They are permitted to write, but perhaps they are unable to.
    12. But they may not read such data.
    13. But they many not write Top-Secret or Unclassified data.
    14. They may not write secret procedures.
    15. Ambiguous! Several of the above interpretations are possible, depending on substresses, pauses, and facial expressions.

    ========================================

    NOTE 1, inspired by an Op-Ed piece,
    Proposition 22 Author Didn't Take Grammar 101:
    Improperly placed `only' opens Defense of Marriage Initiative to court challenge,

    by Leo Kanowitz in the San Francisco Chronicle, 31 March 2000,
    which cites the wording of Proposition 22 in the April 1999 statewideprimary election:

    ``Only marriage between a man and a woman will be valid or recognizedin California.''

    Literally interpreted, that means that anything else between a man and awoman will not be valid or recognized, for example, legal contracts,spoken agreements, children, and a myriad of other things.It says nothing at all about the other relationships it was intended tomake invalid and unrecognized, such as same-sex partners, unions withanimals, etc. Very sloppy. The framers of Prop 22 should have readmy above discourse. PGN

    ========================================

    NOTE 2, 19 April 2000: Many thanks to Julie Sussman, P.P.A., for noting theerroneous placement of the italicized ``only'' in the penultimate sentenceof the first paragraph, which has now been fixed above.

    ========================================



    Monday, February 23, 2009

    Explanations to common Java exceptions

    Explanations of common Java exceptions

    java.lang
    ArithmeticException You are trying to use your computer to solve a mathematical problem that you cannot solve yourself. Read up on your arithmetics and try again.
    ArrayIndexOutOfBoundsException See IndexOutOfBoundsException. The difference is that this exception refers to more than one finger.
    ArrayStoreException You have used all your arrays and need to buy more from the array store.
    ClassCastException You need to stay in the class or caste you were born into. Java will not accept dailits acting as kshatriyas or noblemen pretending to be working class. Note the spelling mistake (of caste) that was introduced in Java 1.0 and has not been corrected for backwards compatability reasons.
    ClassNotFoundException You seem to have invented your own class. There are also caste systems that are not yet implemented in Java, most notibly the balinese caste system. For example, if you are a wesia, use the indian counterpart vaishya.
    CloneNotSupportedException You are a clone. Find the original you, tell him what you want to do and then kill yourself.
    IllegalAccessException You are a burgler that are running a Java program during a burglery. Please finish stealing the computer, leave the premises and try again.
    IllegalArgumentException You have tried to protest against a previous exception.
    IllegalMonitorStateException Please turn your computer screen back on.
    IllegalStateException You come from a state that is not yet recognized by the UN, possibly Kurdistan or Palestine. Get a real citizenship, recompile your java code and try again.
    IllegalThreadStateException One of the screws in your computer is threaded the wrong way. Please contact your hardware vendor.
    IndexOutOfBoundsException You have put your index finger in an unacceptable place. Reposition it and try again.
    InstantiationException Not everything can happen instantly. Please be more patient.
    InterruptedException Tell your colleagues, room-mates etc. to leave you alone while you are working.
    NegativeArraySizeException You have created an array with negative size. This can cause information to be lost and in the long run the Universe will be destroyed. Be happy that Java noticed what you were doing and DON'T DO IT AGAIN.
    NoSuchFieldException You are trying to have a picknick on a field that does not exist. You can also get this exception if you try to visit an airfield that in fact does exist, but has been classified as top-secret. I'd give you examples, but then I'd have to kill you.
    NoSuchMethodException Don't use that method! Please, do things like we have always done.
    NullPointerException You do not own a dog. Get one, for example a brittany spaniel, and try again.
    NumberFormatException You are using outdated units of measurement, for example inches or pints. Convert to SI. There is a known bug that causes this exception to be thrown if you are very short or tall.
    RuntimeException You cannot run fast enough, possibly due to obesity. Turn off your computer and go out and get som exercise.
    SecurityException You have been deemed a threat to nationaly security. Please sit still and wait for the authorities to come and get you.
    StringIndexOutOfBoundsException Your panties have shiften out of place. Adjust them and try again. You can also get this exception if you are not wearing any panties at all.
    UnsupportedOperationException You are trying to have an operation that for som reason, ethical or otherwise, is not supported by Java. Examples of this include unneeded amputations, for example circumcisions. Please stop abusing your body and do not remove pieces of you child, damn it!
     

    java.util
    ConcurrentModificationException Someone else has modified your Java code. You should probably change your password.
    EmptyStackException In order for Java to work, you must have a stack of Java books on your desk. Actually, one is enough if it is really thick.
    MissingResourceException You are too poor to be using Java. Switch to a cheaper language (such as Whitespace, Shakespeare, Cow, Spaghetti or C#).
    NoSuchElementException There are only four elements (earth, water, air, fire). The Fifth Element is just a movie.
    TooManyListenersException You are bugged by too many secret organizations. Expect a SecurityException soon.
     

    java.awt
    AWTException You are using AWT, which means your GUI will be ugly. This exception is only a warning and can be ignored.
    FontFormatException Your layout is ugly, or you have selected a bad font, or too many fonts. Please consult a professional designer.
    HeadlessException Java thinks you are too stupid to be a programmer.
    IllegalComponentStateException One of your hardware components (e.g. harddrive, CPU, RAM) is broken. Please contact your hardware vendor.
     

    java.awt.color
    CMMException Your CMM is broken. What ever the hell that is. I usually burn my house down and move to a new city to start over.
    ProfileDataException Your personal profile contains suspicious information. If you are not a communist, terrorist, atheist etc., please contact the CIA to correct the mistake.
     

    java.awt.datatransfer
    MimeTypeParseException You are a bad mime. Noone can understand what you are trying to express. Try something simpler, like walking-against-the-wind och being-trapped-in-an-invisible-box.
    UnsupportedFlavorException You are trying to use a flavor that is unknown to Java. Most people seem to get by using only vanilla and cherry.
     

    java.beans
    IntrospectionException You are too introverted. Be more extroverted. Stop being such a nerd and go out and meet some people!
    PropertyVetoException One of your properties has been vetoed. The message should inform you of who did it and why. If it does not, you probably shouldn't ask.
     

    java.io
    CharConversionException You have been trying to incinerate something noncombustible. It is also possible that you have tried turning yourself into a fish, but that rare.
    EOFException You get this exception because you don't know what EOF stands for. Well, I'm not going to tell you, Mr Ignoramus.
    FileNotFoundException A carpenter should always know where his tools are.
    InterruptedIOException You have been using IO despite of an earlier IOException and your activities have been interrupted.
    InvalidClassException See ClassNotFoundException.
    InvalidObjectException Objection overruled, as they say in court.
    IOException IO stands for input/output and has to do with sending and recieving data. IO is a security problem and should not be used.
    NotActiveException This can mean two things. Either something is inactive and needs to be active, or something is active and needs to be inactive. Activate and inactivate things randomly until things work.
    NotSerializableException You are trying to make a TV series based on a movie.
    ObjectStreamException You have issued a stream of objections. Please limit yourself to one at a time and wait for the judge to make a ruling before issuing a new one. See InvalidObjectException.
    OptionalDataException You seem to think that some optional data is required. Don't make things harder than they are.
    StreamCorruptedException Your data stream is corrupted, which means that it has been stealing packages and selling them on the black market.
    SyncFailedException You have tried to synchronize your failures with someone else and you have turned out to be a bigger failure that that person. Try to find someone on your own level.
    UnsupportedEncodingException If you want to send something coded over the network, you have to file your encryption key with the NSA. If you don't, you will be regarded as a terrorist and dealt with in the appropriate way. If you get this exception, you should run away very fast indeed.
    UTFDataFormatException UTF stands for Universal Transmission Format and is a way of transmitting data that works regardless of which format you use. You have tried to transmit data over UTF using the wrong format.
    WriteAbortedException You need to write the word "aborted" somewhere in your program. It usually doesn't matter where, you just have to do it.
     

    java.net
    BindException Java programming and bondage don't mix.
    ConnectException You are trying to connect something to something it cannot be connected to. Try to connect it to something else. Perhaps it is possible to connect your things to eachother via a special connection object that connects to both ends of your desired connection.
    MalformedURLException You are making an urn and either it has the wrong shape (e.g. an "L" shape) or you have misspelled the word "urn" (e.g. "url").
    NoRouteToHostException There is no route to the host. Contact the Road Administration.
    PortUnreachableException Ports and harbors must be placed right next to a water body. If placed inland, they will be unreachable.
    ProtocolException This is the result of a serious breach of etiquette (such as pukíng on your host). The solution is simple: Don't do that!
    SocketException You have connected your computer to a power outlet of the wrong kind. Most of the times you have to find another outlet, but some computers have a switch on the back where you can set the power outlet type.
    SocketTimeoutException You have connected your computer a power outlet with a timer and the time has run out. Such outlets should only be used for flat-irons and similar things.
    UnknownHostException Didn't your parents teach you to not talk to strangers?
    UnknownServiceException You are trying to access an unknown service. The most known unknown service is perhaps Secret Service.
    URISyntaxException The sentence "You are I" is not syntactically correct. Change it to "You are me". What ever the hell that means.
     

    java.rmi
    AccessException You are using Microsoft Access. Please don't.
    AlreadyBoundException Despite what is stated in the description of java.net.BindException, RMI does support bondage. However, you cannot tie up someone that is already bound.
    ConnectException You are trying to connect something to something it cannot be connected to. Try to connect it to something else. Perhaps it is possible to connect your things to eachother via a special connection object that connects to both ends of your desired connection.
    ConnectIOException You are trying to connect something that has to do with IO to something it cannot be connected to. Try to connect it to something else. Perhaps it is possible to connect your things to eachother via a special connection object that connects to both ends of your desired connection.
    MarshalException Something is wrong with your marshal. What you should do depends on what kind of marshal we are talking about. It can be a field marshal, police, firefighter or just your ordinary basic marshal. Note that this exception has nothing to do with the Republic of the Marshall Islands, a.k.a. RMI.
    NoSuchObjectException You are trying to use an object that does not exist. Create it or don't use it, Einstein!
    NotBoundException If you are using bondage, please make sure that at least one person is tied up.
    RemoteException This is a special exception that is thrown remotely. If someone else's application has become so instable that it can't even produce an exception, then you may get the exception instead. Please find the source and inform that programmer of the error.
    RMISecurityException The Republic of the Marshall Islands has become instable. If you live there, you should probably leave and don't come back until your security can be guaranteed. If you live elsewhere, you can ignore this exception.
    ServerException Second serve. (Or double fault if applicable.)
    ServerRuntimeException Tennis matches are long enough as it is. You will get this exception if you take too long to serve.
    StubNotFoundException When you go to the movies, you should always keep your stub. If you don't, and also leave the theater, you will not be let back in and you may have to buy a new ticket. So, KEEP YOUR STUB!
    UnexpectedException This exception should come as a total surprise to you. If it did, everything is as it should be.
    UnknownHostException Didn't your parents teach you to not talk to strangers?
    UnmarshalException You have not fullfilled your duties as an officer of the law (or whatever marshal you used to work as). Note that the correct term is "used to". You have been fired (which is really ironic if you were a firefighter).
     

    java.security
    AccessControlException You have lost control of Microsoft Access. If you cannot regain control or stop the program in some other way, you should cut the power to your computer as fast as possible.
    DigestException You should be careful with what you eat. Indigestion can be a serious problem.
    GeneralSecurityException Something somewhere appears to be unsafe. If you have the power to do so, you should invade a random country (preferably in the middle east). If you do not have such power, you should at least get a gun.
    InvalidAlgorithmParameterException You have explained your algorithm to a disabled person in a way that is not suited to that person's level of understanding. Keep it simple!
    InvalidKeyException There are two rather different reasons for this exception: 1. You are using the wrong key. My advice is to paint small dots in different colors on your keys to help you remember which one is for which lock. 2. You are not allowed to lock up disabled people without giving them a key. If they are smart enough to figure out how to use it, they have a right to move freely.
    InvalidParameterException You have used a disparaging term to describe a disabled person.
    KeyException Do not try to unlock locks without a key.
    KeyManagementException You have lost your key. Most likely you left it at the office (if you're trying to enter your home) or at home (if you're trying to enter the office).
    KeyStoreException The explanation for the previous KeyManagementException is that there is a hole in your pocket.
    NoSuchAlgorithmException You are trying to solve a problem in a previously unknown way. Stop being so damn creative and rewrite your program using old algorithms. You can also patent your idea and wait for it to be incorporated into a future Java release.
    NoSuchProviderException If you are a single mom, you cannot be a housewife. First, you need to get a provider for your family.
    PrivilegedActionException You have tried to take an action that you do not have the privilege to take. For example, getting away with murder is something that only famous people can do, child molestation is only for catholic priests and high ranking jehova's witnesses, and only people with managerial positions in private corporations are allowed to steal money.
    ProviderException You are a woman and are trying to be the provider of a family. Obviously, your husband cannot be a housewife, so you need to let him do the providing. Thinking that Java is old-fashioned will not change reality. This is how things work. Deal with it.
    SignatureException Either you have forged someone else's signature, or your signature unacceptable. A signature cannot be too ugly, too readable or too large.
    UnrecoverableKeyException Damn. You dropped your key down a drain. The only comfort I can offer is that the key should be unrecoverable for other people as well, so it may not be necessary to change your locks.
     

    java.text
    ParseException You are not making any sense. Calm down and try again.
     

    Copyright © 2005 Björn Andersson


    Tuesday, February 17, 2009

    Inhabitat » Samsung Releases Solar Powered Phone!

    Samsung Releases Solar Powered Phone!

    by Jorge Chapa

    http://www.inhabitat.com/wp-content/uploads/samsungblueearth1.jpg" alt="samsung blue earth, samsung solar powered phone, samsung solar phone, solar powered phone, recycled plastic water bottles, solar power, green power

    Green Gadget fans have been waiting for the holy green grail of gadgets for awhile now: the solar-powered mobile phone. And now it seems that Samsung has finally delivered on this promise with their brand new Blue Earth phone. Blue Earth is a gorgeous green touch phone that has a full solar panel on its back which can generate enough power to charge the phone. And yes - the gadget is still small enough to fit in your pocket!

    samsung blue earth, samsung solar powered phone, samsung solar phone, solar powered phone, recycled plastic water bottles, solar power, green power

    As if releasing a solar powered phone wasn’t enough, Samsung is going above and beyond to achieve what they hope is the greenest phone on the market. The body of the phone is made out of recycled water bottles and has no brominated flame retardants, beryllium and phthalates - all incredibly toxic substances. That goes for the charger as well, which also meets the newer standby mode energy efficiency ratings. Granted, it is solar powered, so really, a charger?

    The device is set to be energy efficient, with a new user interface making it easy to activate the phone’s energy saving mode. It also includes a pedometer, and CO2 emissions calculator, and Samsung is aiming for minimal packaging made entirely from recycled paper.

    Samsung is clearly throwing the gauntlet to all phone manufacturers, and we hope to see solar cells integrated throughout the rest of their line. The phone will be unveiled on February 16th at the Mobile World Congress in Barcelona.

    + Samsung

    Via Pocketlint

    samsung blue earth, samsung solar powered phone, samsung solar phone, solar powered phone, recycled plastic water bottles, solar power, green power