Alchemical Sorcery

The writings of Zauber Paracelsus

Browser Switching Trick for Linux

So, if you're like me, you may find yourself switching browsers with frequency, either because you can't decide between firefox or chrome, or you like to test out new versions of browsers for a day or to.  However, with a mixture of GNOME and KDE applications (and more), you may find that it is a bit of a chore to change the default browser in every application you use.

So, about a year ago, I devised a new technique: create a small bash script: /usr/bin/browser

The way it works, is you uncomment the browser you wish to use, and leave the others uncommented.  Then, you set all of your applications and the Gnome/KDE control panels to use a manual browser, and set them to use /usr/bin/browser

You'll also want to make the file executable by running this as root: chmod a+x /usr/bin/browser

Another thing that helps is adding the line below to the .bashrc file in your home directory:

export BROWSER="/usr/bin/browser"

Afterwards, if you wish to change browsers, you use this script.  I've posted the source to the script below.  Chrome, Chromium, and Iron are set to use --memory-model=low to conserve memory.  I use the flag because it has given me an improvement to performance, but using it is optional.


#!/bin/bash

firefox $@
#chrome --memory-model=low $@
#chromium --memory-model=low $@
#epiphany $@
#iron --memory-model=low $@

EXTRA:

For some, using root or sudo every time you wish to edit the file can be a little annoying.  There are alternatives.  The easiest one is to place the file in your home directory and configure everything to use that file as the default browser.

 

EDIT:

Yes, I agree.  This is a little ridiculous and there should just be one central place to set your default browser.

Filed under  //   linux  

RAM Economy and The Internet

Most people are familiar with the concept of RAM, which is temporary memory used for storing program data.  This is very useful, as it means the computer doesn't have to use the hard drive for storing temporary data, and the hard drive is significantly slower than the RAM is.  However, when you run out of RAM, then you start having problems.  When your free memory drops below a certain threshold, your system starts "swapping".

Swapping allows the computer to store some temporary data on a section of your hard drive instead of the RAM, thereby preventing your RAM from running out completely.  However, the less free memory you have available in RAM, the more your computer will use swapping.  When you run completely out of memory, then almost all memory operations will be done on the hard drive.

When this happens, system performance slows to a crawl.  Programs take forever to load or to even close, and the system becomes barely useable.  Your system shoots up to 100% CPU load.  If you're on a laptop, this is extra bad because it'll drain the battery faster.  When you have this problem frequently, you generally have two solutions: you can run fewer programs so that you're not using as much memory, or you can buy more RAM.  However, the second solution is often impractical for a few reasons.  One, RAM costs money, especially for newer grades of RAM.  Two, system motherboards can only support up to a certain amount of RAM.  And three, some systems (especially laptops and netbooks) can't be upgraded, or are very difficult to upgrade.

My system has four gigabytes of RAM installed (or 3.2 gigabytes, since I'm presently on a 32bit system).  Memory usage generally isn't a problem for me except.  The only memory-hogging application I use is Second Life's viewer (or one of the open source forks of it, rather), and I only run into memory problems if I've been running it for a few hours and have teleported between several regions.

But, I do get swapping, due in large part from my multitasking.  I have several applications that I run, but I have chosen to mostly use lightweight applications: ones that aren't overloaded with junk and use less memory as a result.  But, what among those applications is my second-largest memory hog?

 

It's the web browser.

 

Currently, I'm using Chromium (or rather its privacy-enhanced fork, SRWare Iron).  It almost always uses more memory than any other of my applications, especially since I have multiple tabs.  And its browser tabs that are the real point of this blog post.

The current design of internet browsers and web sites originated with having just one page loaded at a time.  There were no tabs.  If you wanted more than one web page open at once, you had to run a second browser window.  But then, internet browsers started adding tabs, alowing you to have multiple pages open at once.  For a multitasker like me, this was a dream come true!

However, as I've come to realize in the past year, having all those tabs open is not a very good idea if you're trying to conserve system memory.  Add higher-resolution images and javascript-enabled websites to the mix, and this adds up even more!  As I write this, I have three other tabs open: Plurk, Poddery, and the InWorldz forums.  I look at chromium's memory usage page, and it shows the browser using 390 megabytes of memory.

390 megabytes doesn't sound like much when my system has at close to ten times than available to it, but if you're on an older machine, that's quite a bit.  My old laptop has just 512 megabytes of RAM available, so using my browser the same way on that system would leave it with over half of its memory used up!  Most netbooks have twice as much memory, but this is still not much of an improvement.  Running tabs with heavyweight websites like Facebook or Google+ can really increase memory usage a lot (yet another reason I'm glad I don't use either anymore).

And the future doesn't look good for memory usage on the internet.  There's development underway for 3D websites that utilize technologies such as WebGL and HTML5 to add 3D rendering into the mix.  3D web pages may be nice for eye candy, but they're not exactly going to be nice for system performance and memory usage.

 

So, I think one of two things need to happen, or perhaps both:

  1. Website developers need to design their websites with greater emphasis on reducing memory usage.
  2. Browser developers need to find new ways to cut down on memory usage.

Chromium is already very good at this.  It already uses half as much memory as Firefox does when I run it, and it leaks memory a lot more slowly than firefox.  But for me, memory usage in the browser is not a problem until the Second Life viewer's memory usage becomes a problem.  My solution to the problem will be (if I can afford it) getting more RAM and upgrading to 64bit.

As for systems that have less ram (especially older systems), memory usage is a much greater problem.  Netbook systems, as implied by their name, are geared primarily towards internet usage.  And because they are manufactured with less resources than a laptop or a desktop system, they are typically limited in how much RAM they have.

There's a lot of other things that users on such systems can do to reduce memory usage, and thereby reduce the frustration and the problems that come with swapping.  But, shouldn't such memory optimizations be up to the developers to make, rather than putting all of the responsibility on users?

My Exodus from Google

Within the last few days, I've begun migrating my stuff away from Google's services.  This is due largely to the nymwars incidents that began after the launch of Google+.  Here's a quick rundown of what happened and what it means to me:

  • Google starts suspending users for violating their Google+ names service, which states that you must use the name your friends and family commonly refer to you by.  Google Profiles also has the same name restrictions.
  • Many users who are suspended lose access to other google services, such as Gmail.  This, however, was by mistake on Google's part and Google corrects it.
  • Google changes the policy, to be the "name you commonly use in daily life", and clarifies that people such as Wil Wheaton or Mark Twain can use their names even though they are not their real names.  This is apparently done to allow people to use pseudonyms.
  • My Google+ account gets suspended for a name policy violation.  I challenge Google on this and present over a dozen facts to establish that my pseudonym, Zauber Paracelsus, is compliant with their names policy.
  • Google changes their policy again, removing the appeals and giving you four days to comply or risk termination of your account.
  • Enforcement of the process is enforced capriciously and inconsistently, with Google terminating the accounts of people who are in fact using their real names, while also showing a strong bias against users who have foreign names.
  • Tateru Nino writes up a blog post which indicates that losing your Google+ account and Google Profile means losing any attached services.
  • I begin warning friends on Google+ that I may be deleting my account, due to the risk of losing access to my other services.
  • Daniel Voyager's Google+ account is threatened with termination due to violating the names policy.  At this time, I learn that their policy has been changed to "name you commonly use in real life"
  • At this point, I delete my Google+ account.  The next day I also delete my Buzz timeline and my Google Profile.
  • Google's CEO, Eric Schmidt, states that Google+ is a "identity service", which "requires" the use of a real name.
  • After reading a blog post by Soror Nishi, I begin looking for alternatives to any of the Google services I use.

So, you might be asking, why not just use my real name instead of my pseudonym?  Well, for most of the other people, use of a pseudonym is done for privacy, so that people in your online life do not invade your real life.  If I wanted such privacy, however, I could get away with using my real name.  It is a common and generic name that is shared by at least a hundred other people in the state I live in.  A few celebrities and authors share my name.  But the name is hardly unique.

The pseudonym I use, Zauber Paracelsus, is a name I made up for myself several years ago.  The first name, Zauber, is the german word for magic or sorcery.  The last name, Paracelsus, is the name of a swiss alchemist.  And his name was also a pseudonym!  For me, the name means "Creator of Science and Magic", and the other meaning behind it is used as the name of this new blog.

Use of this pseudonym isn't a privacy issue to me.  To me, it is a first amendment issue.  Freedom of speech guarantees you have the right to express yourself, and I express myself through the pseudonym because it expresses my identity.  I've done far more in the past three years under this name that I have done in my entire life.  My "real" name does not even begin to express who I am.  If Google thinks that it is reasonable to expect that only real names can express people's identities, they need a reality check.

 

Alternatives:

After reading Soror Nishi's blog post, I began to more seriously consider alternatives to Google's services.  This is what I'm using so far:

  • Email: I've changed my primary email account from GMail to GMX, or Global Mail Exchange.  GMX is an email provider that's been around for a while.  They offer unlimited space for emails, and 2gb of free file storage.  They also have very good security, and unlike GMail they do not scan user emails for advertising keywords.  They're also based on Germany, which has very strict privacy laws, which I consider a plus.
  • Blogging: I looked at a few blogging possibilities, and had given Tumblr a try.  My experience with Tumblr, however, was marred by poor performance and frequent page crashes when trying to work with themes.  So, I gave Posterous a try, and was pleased to see that they have a tool to automatically export your blogs from blogger and blogspot, which I took advantage of.  I've also set up a blog for my business at InWorldz, Paracelsus Designs, and I've got a preliminary blog set up for my web comic, Lord of Maelstrom, to be moved to later down the line.
  • Images: There's a lot of alternatives to Picasa, but I chose Photobucket over Flickr, as with Photobucket you get unlimited photo storage, whereas with Flickr you get the same, but can only directly access your 200 most recent photos.  I have yet to upload my images yet, but I've already downloaded an archive of my images from Picasa and am busy reorganizing them into albums before I upload them.
  • Chat: This was an easy one.  Google Talk is based on the XMPP protocol, an open source protocol that has been around at least a decade.  One of the nice things about it is that users on one XMPP network can communicate with users on another, so I'll be able to keep all my old contacts.  I could have set up my own server, but I decided I didn't want the hassle.  So, I registered an account at Jabber.org and got an account quickly set up and configured into pidgin.
  • Social Networking: I've got a few different services I'm using.  Twitter and Plurk I have both been using for a couple years prior to using Google+.  I've also been taking a look at a few other services, since Twitter and Plurk are both more mobile-oriented.  Last night I registered an account at Poddery.com, which is a network based on Diaspora's code.  However, I am somewhat wary of it due to the massive security problems that Diaspora had at launch.  I had also registered an account at Nymworldz, a social network that was set up by Bradd Laval and is meant for pseudonymous users.  Still looking at alternatives to Google+, though, and I will not consider facebook at all.

I'm still looking for alternatives to Google Voice, so that I can have a phone number with call redirects.  However, my calls to Google Voice get redirected to Skype.  I am also looking for a viable alternative to Skype, due to concerns that Microsoft (Skype's new owner) will try to kill off support for Linux clients.

If anyone knows of other good alternatives to Google's services, post them here and I'll add them to the list!

 

Updates:

These are a few new alternatives that were added after the original post:

  • Search Engine: IxQuick and DuckDuckGo are both alternatives that Soror Nishi suggested in her blog post.  I had used Ixquick as the default search for my browser, but switched back to google after a day due to a service outage.  Both seems to have issues with page-loading speeds as well.  I also use Dogpile for search from time to time, as it compiles search results from multiple engines.
  • Feed Reader: NewsBlur is one online Soror Nishi recommended as an alternative to Google Reader.  Personally, I only used Google Reader because I could set a collection of RSS feeds up as a single feed.  I'd then use Liferea to read those feeds instead of several dozen feeds, thereby reducing bandwidth and memory usage.  However, one thing I took an immediate liking to was how fast and responsive NewsBlur was, so I'd recommend it.
  • Social Networking: Another alternative social network brought up by Soror Nishi in a new blog post of hers is one under development called UNTHINK, which claims "We are not another social network.  We are a social revolution!"  If they can live up to that hype, they could turn out to be a very good alternative, so I'd consider them to be worth watching.

.

Filed under  //   Google   Nymwars  

Lighting Tricks

With the Second Life viewer, dynamic lighting is done by using "vertex lighting".  If you enable wireframe mode (CTRL-SHIFT-R), you'll see the vertex points which make up an object, as spots where the wireframe lines intersect.

Now, vertex lighting has some problems in the area of accuracy.  It is done by calculating the brightness of a light based on the lights parameters (intensity, radius, falloff), and then applying a gradient to the prim surface.  With smaller objects, this isn't a problem.  Larger objects, such as megaprims, will have a problem.

With megaprims, the vertex points are spread much further apart.  If a light with a smaller radius is too far from one of these points, it will produce little or no light.  Meanwhile, if it is close to a vertex point, it'll produce too much light.  The white light in the snapshot below has a radius of just one meter.  But because it is right on top of a vertex point, its lighting radius is far greater than one meter!


Media_http2bpblogspot_taebh


Now, take a look at the two snapshots below.  In the before snapshot, you can see that 1) the torch on the left is casting a lot of light onto the floor, while the one on the right is casting none.  The four torches in the background are casting little or no light against the floor.  So, what's going on?



Media_http2bpblogspot_phzug

The lefthand torch is right near a vertex point, over-representing its light.  The torch on the righthand side is centered between two different vertex points, under-representing its light.  On the After image, the lights are all emitting light at the desired levels.  What is difference between the two versions?

The lefthand image has a megaprim cube for the floor.  In the second image, the floor is represented by a sculpty in the shape of a flat square.  The cube prim has a vertex resolution of 4x4 per face.  The flat square sculpty, however, has a resolution of 32x32 vertices.  Because of this, the vertex points are much closer together, allowing for a more even level of lighting.

The disadvantage of this method, however, is that the floor has 64x as many vertex points (16 points vs 1024).  So, this method will incur a higher rendering cost.  This isn't much of a problem if you use this method sparingly, but using it all over the place will result in more lag.

Below is a copy of the sculpt map that I used to create the floor with.  I'm releasing it into the public domain, so feel free to use it however you wish :-)

Media_http2bpblogspot_zqome

Filed under  //   gaming   inworldz   opensimulator   second life   virtual world  
Posted July 22, 2011

Flexible Meshes: The Sword That Cuts Both Ways

So, Linden Lab has decided to cut out flexible meshes, due to lag concerns.  I think Linden Lab is wrong on this.  Because, while it would mean more lag, it would also mean an opportunity to reduce it, by replacing the older flexiprims with a more efficient design!
Flexiprims have always been a major source of lag, and they are most commonly used for the creation of dresses, skirts, and hair.  But, if you were to create a skirt from a mesh and use it as clothing, you could reduce the lag generated by the skirt for these reasons:
  • A flexiprim skirt uses a lot of flexiprims.  One friend was wearing one with 18 prims, while another was wearing one using 51 prims!
  • Skirts use flexiprim cylinders.  Each cylinder uses 98 vertices at maximum LOD, and 14 vertices at minimum.
  • By making them flexible, their LOD increases a lot.  At minimum, a flexible mesh will have 56 vertices.  At maximum LOD, it will have 216 vertices.  And if you make them hollow, then the vertex count will roughly double.
As you can see, flexible prims on their own are rather inefficient.  A few of them scattered about won't do much to affect lag, but they will increase lag when there are ton of them all over.
So, I've made the point that flexible objects are laggy.  Why would sculpted meshes allow you to reduce lag?
The answer is simple: optimization.  A skirt maker can create a flexible mesh skirt as one single object, but rather than having the vertex count of a few dozen flexible prims, it would have a vertex count equivalent to just 4-8 flexible prims, depending on how ornate it is.  Mesh hair would also benefit from such improvements to LOD.
There will, of course, be people who would overuse this functionality and mesh itself, resulting in heavy lag-inducing objects with lots of needless and unnoticeable detail.  My personal hope is that such "detail gluttons" will receive a very quick and very harsh lesson for their mistakes.

Filed under  //   mesh   second life  
Posted July 21, 2011

A Strange Occurence

A few days ago, I had something bizarre happen.  My video card began to show rendering glitches in the Imprudence viewer (a 3rd party game client for Second Life), where the vertices on objects and avatars began being distorted into massive planes.  So, I shut down Imprudence.

I knew what caused the distortions, of course.  It was GPU overclocking that I had forgotten to turn off after it provided only marginal benefit.  However, after turning it off and restarting Imprudence, my rendering performance had dropped by at least half.  So I just rebooted.

After rebooting, performance was at its normal levels.  However, I noticed something strange right away.  The viewer was using up half the normal amount of CPU usage it was using, but without any gain or loss in performance.  I thought this was strange, even though I liked the idea of lower CPU use.

The next day, I figured out what had happened.  On bootup, I'm shown a choice of which Linux kernel I would like to boot up with, and its a choice between the stock kernel shipped with Arch Linux, a kernel with the -CK patch set, and a fallback version of each kernel.  By default, it boots with the -CK kernel, but I had been manually choosing the stock kernel for the past few reboots due to stability issues I was having.

This time, I had forgotten about the issues and it booted into the -CK kernel.  I thought this was strange, however, because I never saw this in the -CK kernel before.  So, I rebooted into the normal kernel, and saw that CPU usage was back up to its normal levels.  I rebooted again and switched to the -CK kernel, and the CPU usage of the Imprudence viewer was back down to half the normal amount.

The only reason I can think of as to why I never noticed this before is because I had been using cpufrequtils, a Linux utility for CPU Frequency Scaling.  What this does is it adaptively underclocks the system CPU during periods of low CPU usage, in order to reduce electricity usage and how much heat the system produces.  Very handy on laptops, but also good for desktops.

However, I am not using cpufrequtils now because I had believed they were also behind the stability issues.  Though, I now know that the issues were with the nVidia driver not wanting to play nice with xorg 1.10.

So, after doing some thinking, and reading up on the -CK kernel's BFS scheduler, I came to the conclusion that the reduced CPU usage was from BFS eliminating idle CPU time, but I lack the knowledge to confirm it. If anyone knowledgeable about BFS or the viewer code could tell me what is causing this, I'd appreciate it.

Filed under  //   computers   imprudence   inworldz   linux   nvidia   second life  
Posted June 5, 2011

What is Explicit Typecasting?

One of the basics of scripting and programming in general that you'll learn is variables: a nametag for a piece of data that you can store, modify, and use.  Some of you may be familiar with the "box" example, where a variable is a labeled box with a piece of paper containing the information it has.


Now, variables can hold different kinds of information, or data types.  Under LSL, there's seven data types:

  • Integer: A whole number, such as 42.
  • Float: A non-whole or decimal-point number, such as 2.5, 1.25, or 3.141592654
  • String: Text data, such as "Hello, world!"
  • Key: A special kind of string, used to reference the data for avatars, inventory, objects, textures, and just about everything.  They are also known as a UUID, short for Universally Unique ID.  This is the key for the default plywood texture: "89556747-24cb-43ed-920b-47caed15465f"
  • Vector: A series of three float values stored in the same variable.  Used for colors, Euler rotations, and positions.  Example: <1.2, 2.5, 8.6>.
  • Rotation: A series of four float values stored in the same variable.  Used for quaternion rotations.
  • List: A special variable that allows you to store many other variables of any other kind under one variable.  Example:  ["hello", "world", 3.141, 42]
However, sometimes one variable may need to be used with another variable of a different type.  So, what happens?  What happens is Type Casting, where you convert one variable type to another.  There's two different ways to do this: implicit typecasting, and explicit typecasting.

What's the difference?  Implicit typecasting is where the variable type is converted to another type automatically.  Explicit typecasting is where you give an explicit instruction for the conversion.  So, if you casted an integer to a float, it would go from being 42 to 42.00.  And if you casted that same integer to a string, it would become "42".

Under the old, buggy script engine from the original opensim code, implicit typecasting was allowed all over the place.  This is problematic, however, because it allowed for sloppier code and is not meant for use in programming languages that have strong typing, such as LSL.  So, under the new Phlox script engine at InWorldz, explicit typecasting is now being enforced, bringing it in line with Linden Lab's implementation.

This means that some scripts may break, if they were written in Opensim or InWorldz.  But scripts written in Second Life won't break as a result of this, because explicit typecasting is already enforced.

However, the fix is rather easy: you just have to do explicit typecasting.  Say, if you want to convert 3.14 to a string.

//This won't work under Phlox:
float pi = 3.14;
string text = pi;

//This will work under Phlox:
float pi = 3.14;
string text = (string)pi;

Pretty simple, isn't it?  By putting the variable type in parenthesis before the variable, you can explicitly typecast most variables.  However, there are a couple of exceptions to this:
  • Rotations and Vectors cannot be cast from one to the other.
  • Keys can only be cast to strings, and only strings can be cast to keys.
  • Anything can be cast to a list, but the reverse isn't true.

As well, there is one remaining element of implicit typecasting, which also exists in Second Life: integer values may be implicitly typecast to floats, but not the reverse. So, this piece of code is valid:

//This will work under Phlox:
float number = 42;


//This won't work under Phlox:
integer number = 42.00;

Also, there are two ways to cast normal variables into lists, though the 2nd method shown below is technically creating a single-element list:

//First Method:
float number = 3.14;
list data = [number];


//Second Method:
float number = 3.14;
list data = (list)number;

This blog post is a work in progress and will be updated as the explanations are improved, as needed.  If anyone needs clarifications on parts of this or has suggestions on how to improve it, please contact me by IM at InWorldz, or post your thoughts in the comments section.

Filed under  //   inworldz   phlox   programming   scripting  
Posted May 1, 2011

Resistance to Change?

Well, yesterday Hamlet Au wrote a blog post that essentially stated that Second Life residents were resistant to change and because of that they were enemies to Second Life's survival.

What are my thoughts on this?  Just a two:

1) Everyone won't agree on what changes are good or bad for Second Life.  Second Life has a very diverse population.  What one person considers a great idea, others will consider a horrible idea.  Open sourcing the viewer, sculpts, meshes, and Viewer 2.0 all fall under this.

2) I've noticed that there's been a great deal of resistance to changes that Hamlet Au wants to see in secondlife, such as facebook integration and gamification.  One must wonder if this affected Hamlet's reasoning at all.

Filed under  //   Linden Lab   second life  

A Geekier Way to Set Your Default Browser in Linux

One of the things I've disliked about having programs from multiple desktops installed is that you need to change the default browser from more than one settings configuration. And then, some programs use their own browser settings, requiring you to use them. And some proprietary applications, such as skype, don't have any apparent way to change the default browser.

This can be very tedious if you like to change browsers frequently.  I tend to try out the beta builds for firefox for a few days before switching back to chromium.  So, I've put together a useful little trick for working around the problem. Here's how you do it under Arch Linux.


First, create a new text file named "browser" in your /usr/bin directory as root.  Then, put the text below into the text file:

#!/bin/bash
chromium "$@"

Replace chromium with the command for whichever browser you prefer to use.  Next, go to your /etc/profile.d folder (most systems /etc/profile) and create a new file, name browser.sh (or whatever .sh you prefer).  Set its contents to this:

#!/bin/bash
export BROWSER="/usr/bin/browser"

And then sign out from your session and reboot.  Most applications will use what you set in /usr/bin/browse as the default browser.  For the ones that don't, you manually set them in the application preferences and the preferences for GNOME and KDE.  After you've finished setting that all up, you will only need to change /usr/bin/browser in order to change the default browser.

However, the instructions above will change your default browser for the entire system for any applications that observe the BROWSER environment variable.  If you have multiple users on your system, you may wish to instead export the BROWSER environment variable in the .bash_profile or .bashrc files in your home directory.

Filed under  //   linux  
Posted March 1, 2011

Strange Rendering Glitch

For almost two years, I've been seeing a bizarre rendering glitch on my system. What happens is some textures in use by the second life viewer will suddenly start showing up with strange colored rectangles on them. At first, only one or two show up, but slowly over time more and more rectangles show up, and I start to see things like this:

Media_httplh4ggphtcom_rfbhq

More rectangles continue to be added to the texture over time, and persist until I either relog, or leave the area and come back after the texture has been cleared from the graphics memory. It has occurred with every viewer for Second Life I've used, and most frequently occurs with the default plywood texture.

I also see this issue occurring on my desktop background. It will accumulate rectangles until it is refreshed. I see this occur on other apps (like firefox or chrome), and those rectangles vanish after the screen or UI is refreshed. This occurs when I am running any 3D game or application.

I first started seeing this after upgrading my video card from a Radeon HD 3750 card to an nVidia GeForce 9800 GT, so I am assuming it is either a driver issue or a configuration error. My operating system through this time has been, with the exception of a brief switch to Ubuntu, Arch Linux (originally x86_64, now i686).

My first guess is that it is a configuration issue with my system's xorg.conf, which I've posted below. And as a note, I am aware that xorg.conf is not normally required anymore. However, my video card will NOT work without one, so I require it.

If you want to see the file with the indentation (which blogger wiped out) and the syntax highlighting, I suggest viewing this link instead:
http://pastebin.com/SbyhVUGZ


# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 256.44 (buildmeister@builder97.nvidia.com) Thu Jul 29 01:59:48 PDT 2010

Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "Xinerama" "0"
EndSection

#Section "ServerFlags"
# Option "AutoAddDevices" "False"
# Option "AllowEmptyInput" "False"
#EndSection

Section "Files"
EndSection

Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection

Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "Unknown"
ModelName "DELL E171FPb"
HorizSync 31.0 - 80.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection

Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 9800 GT"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "CoolBits" "1"
Option "TwinView" "1"
Option "TwinViewXineramaInfoOrder" "CRT-0"
Option "AllowGLXWithComposite" "true"
Option "metamodes" "CRT: 1280x1024_60 +0+0, DFP: 1440x900_60 +1280+124"
SubSection "Display"
Depth 24
EndSubSection
EndSection

Section "Extensions"
Option "Composite" "Enable"
EndSection

Filed under  //   computers   gaming   linux   nvidia   second life