GTA San Andreas PC: Audio Bug Fixed.

There is an audio bug in Grand Theft Auto San Andreas for PC. Some users experience a sound bug in GTA, which consists of a strong change of audio volume. The FX sound and the music in GTA change radically: while one is played at a very high or normal sound volume, the other is heard at a very low volume, or like a sound of "reverberation" or echo, like a "subwoofer" sound.

In other situations, one or both audio channels (music and sound FX) stop playing. Even under certain circumstances the audio in GTA may be delayed and out of sync with the action.

All these GTA San Andreas bugs can be fixed easily:

Let's click on the start menu / run

Let's type: dxdiag

This will open the DirectX diagnose tools, and in the tab named sound we should lower the Hardware acceleration settings to the minimum. Then just close the DirectX window and start playing again GTA SA in your PC: the audio now goes perfectly.

When we quit playing GTA, we can repeat the process to raise again the sound hardware acceleration to the maximum level.

Fix GTA SA sound bug

Based on the original GTA SA sound bug fix post by Dremin. This information was formerly provided at our friend blog: Aqueos

HTML and CSS in emails: compatibility list of email clients

Probably you are familiar with this common scenario: you create a really well designed e-mail newsletter using your most advanced HTML and CSS skills, and then you find out that your recipient's email client is just breaking the whole email design and layout.

While sticking to a very simple plain text email would do the trick, you should not get rid of every HTML design element of your emails just because some mail clients are not compatible with specific CSS or HTML code. The key is to know which HTML and CSS features work on the main email clients.

This email compatibility list is a very useful resource, as it provides graphic examples of how a sample email would be rendered on popular email clients, and it's constantly updated to take into account the latest compatibility improvements of such e-mail clients.

At the present time, this list shows some interesting conclusions, such as that the Gmail mail client would only read inline CSS: Gmail ignores CSS included inside the head element, and removes CSS classes and ID's from the original HTML of the email.

By the way, if you are looking for a reliable free email client application, I would choose Mozilla Thunderbird.

Is there any HTML or CSS that works on any mail client?

So, how could we create appealing e-mails that would work on any e-mail client? The truth is that currently every main e-mail client supports HTML tables with inline background colors defined.

These tables would admit some background images in many e-mail clients. Images are very powerful when they are used to spice up the email body. But don't rely just on images: use elements that would degrade gracefully, so your HTML email would still be readable in any email client.

With no doubt, CSS is the future of HTML in terms of code maintenance and element positioning. But for sending HTML emails, it could be better to stick to a very simple (yet effective) HTML table based email content.

Reliable emails based on HTML tables

My advice is to use HTML tables in emails: most email clients will render the results flawlessly. And let's keep an eye on the compatibility list of CSS in email clients: the day of fully CSS based emails could be near.

Turn YouTube video quality into HD Youtube in 1 simple step

Did you know that just adding &fmt=18 at the end of a YouTube video URL will turn such video in a High Quality YouTube video?

Let's see an example of how a High Quality YouTube video URL looks like:

http://www.youtube.com/watch?v=W6nppcKOYGo&fmt=18

And that's all! It is that simple.

YouTube video quality in detail: quality comparison

Let's take a closer look inside the two different YouTube video formats and see how much improvement you can obtain adding just &fmt=18:

Normal quality YouTube video:

  • Video format: Flash Video (.flv).
  • Video codec: FLV1.
  • Frames per second: 15 fps.
  • Video resolution: 320 x 240 pixels.
  • Video audio: MP3 at 22050 Hz.

High quality YouTube video:

  • Video format: MPEG-4 (.mp4).
  • Video codec: AVC1.
  • Frames per second: 29.97 fps (as NTSC).
  • Video resolution: 480 x 360 pixels (50% higher!).
  • Video audio: MP3 at 44100 Hz, 2 channels, 1411 kbps.

The High Quality YouTube video is approximately double the size in MegaBytes of the normal quality video. But the video quality improvement is worth the effort: the new video has bigger screen dimensions and much better video bitrate (and thus, much less video compression artifacts).

Flash video is the best format to optimize bandwidth, but the other YouTube MPEG-4 video codec is doing a great job keeping the quality high.

See it by yourself! Here is a normal quality YouTube video, and this is the same YouTube video in High Quality.

Unfortunately, this trick won't work to embed High Quality YouTube video in an external site. The good news are that our old tricks to embed HD Flash video still work.

Nevertheless, it seems that YouTube is taking advantage of the fast modern networks too, and this &fmt=18 is a big step towards an HD YouTube!.

Flash video bandwidth saving tricks: scale video size

It's great to have high quality Flash videos embedded in your site, but keep in mind that each time a good quality video is downloaded, it consumes a lot of bandwidth. You can eventually get an annoying message of bandwidth limit exceeded, which would either make your server unavailable during the rest of the month, or cost you an additional fee according to the bandwidth quota exceeded.

The idea is to achieve an appropriate balance between the video quality (the amount of video compression) and the total video file size in bytes (the total amount of bandwidth consumed by a full video download).

The trick is to create a Flash video file with an average bitrate and small screen size. Then, scale the Flash video size when embedding the video on your website.

Flash video: scale size to save bandwidth

These are the steps that you should follow to save video bandwidth while keeping the embedded Flash video quality high:

  • Convert your video to Flash Video (.FLV) using a video bandwidth around 400 kbps.
  • Reduce the video size of the .FLV file. The screen dimensions of the .FLV video can be as little as the desired video dimensions divided by 1.25.
  • Specify the desired Flash video dimensions (not the real, reduced .FLV video size) as the video dimensions when embedding your video in your webpage. Here are some tips on configuring the playback controls to embed high quality Flash videos.

And that's it. The 2 main ideas of this trick are just so simple and effective:

  • Use an average streaming bandwidth on a small video to achieve a good compression quality.
  • Don't use the original dimensions of your Flash video: scale size to match the desired video size.

Modern networks can play a Flash video of 400 kbps in real-time streaming or with little preload time. The video quality will be kept high as well, because the real screen dimensions of the video are small. With such a good compression quality you will have little artifacts on your Flash video. You will even keep the video subtitles and other video texts clearly readable.

On the other hand, the distortion of the scaled video is less annoying than the compression artifacts. Just don't scale your video size more than a 125% of the real video size, or you could start getting too much pixelation.

The result is a Flash video of the desired screen dimensions with little compression artifacts: a good quality video with optimized video bandwidth.

Video in Blogger: embed Flash video and a Flash Video Player

Videos can be an awesome kind of content to include in your blog. Embedding YouTube videos in Blogger is very easy. However, using YouTube videos has some drawbacks:

  • The actual resolution of YouTube videos is limited to 320 x 240 pixels.
  • The video suffers from strong compression (limited to 250 kbps).
  • The YouTube watermark may overlap your video.
  • The customization of the video playback controls is limited.

The FLV video format (Flash Video) offers a great amount of compression while keeping the video quality high. So I would really suggest you to create your own Flash Videos in this FLV format, host these videos on your own webserver, and then embed the FLV video in Blogger. Follow these steps to embed high-quality videos in your blog:

How to embed FLV videos in Blogger

Step 1 - Convert your video into FLV format

The first step is to convert your video into FLV format. Adobe Flash Editor has an Import Video function that quickly converts the original video into FLV. Nevertheless, the Flash IDE is an expensive application, so I would suggest you to use some free video encoder to turn your original video file (.avi, .mpg, .mov, ...) into FLV.

SUPER would be my FLV video encoder of choice.

Convert your video into Flash Video and upload the resulting .FLV file to your server. Just be careful with your bandwith quota, as video content may be rather heavy.


Step 2 - Create the playback controls

Once you have a FLV video, you will need to create the playback controls, so you can play, stop and pause the video, see how much video has been preloaded, control the video volume and so on.


Flash can also create some video playback controls, but they won't be much useful, as you cannot use an absolute path to link to Flash video controls. So you cannot embed the Flash video controls directly on your blog, because you won't be able to link to the original SWF file containing the playback controls.

The solution is to use an open source FLV video player. I would recommend you to use the OS FLV Player, which is a truly open source, customizable and reliable FLV video player. And you don't need even to have the Flash Editor to use this module. You will just need to upload the file with the playing controls to your server (player.swf).

I will teach you how to configure OS FLV in the following step, so it will be easy to embed this video player in Blogger.


Step 3 - Add it to Blogger: Embed Flash Video

OS FLV Player provides some php scripts that automatically create the HTML code to embed the FLV video on your webpage. But, since we are going to host the video playback controls, as well as the FLV video on a webserver that is not in the same domain as Blogger, we will need to embed the video in Blogger by hand. This is the code that you should embed on your Blogger post to include the video:

<object width="[Width of your video]" height="[Height of your video]" id="flvPlayer">
   <param name="movie" value="[Absolute path to player.swf]" />
   <param name="FlashVars" value="&movie=[Absolute path to your .FLV video]">
   <embed src="[Absolute path to player.swf]" flashvars="&movie=[Absolute path to your .FLV video]" width="[Width of your video]" height="[Height of your video]" type="application/x-shockwave-flash">    </embed>
</object>

Just change the following parameters:

  • Use the same width and height values that your .FLV video.
  • The absolute path to the SWF file with the OS FLV playback controls (example: http://www.mydomain.com/player.swf).
  • The absolute path to your FLV video file (example: http://www.mydomain.com/myVideo.flv).

Step 4 - Customizing the video player in your blog

You may want to adjust the look and feel of your playback controls in order to make the embedded Flash video match the style of your blog. As the OS FLV Player is an open source player, you could edit the source .FLA file by yourself (player.fla), creating a new skin for the Flash controls. However, you will need the Flash IDE to edit this source file.

There is also a very simple way to customize the colors of the elements inside the video playback controller just by tweaking a couple of parameters. Here is the sample code:

<object width="640" height="480" id="flvPlayer">
   <param name="movie" value="http://www.mydomain.com/player.swf" />
   <param name="FlashVars" value="&movie=http://mydomain.com/myVideo.flv&fgcolor=0x333333&bgcolor=0x999999">
   <embed src="http://www.mydomain.com/player.swf" flashvars="&movie=http://mydomain.com/myVideo.flv&fgcolor=0x333333&bgcolor=0x999999" width="640" height="480" type="application/x-shockwave-flash">    </embed>
</object>

The parameters that you should adjust are the following:

  • The foreground color (fgcolor, set to 333333 in the example).
  • The background color (bgcolor, set to 999999 in the example).

Conclusions

It's easy to embed your FLV videos in Blogger. You just need to convert your videos into FLV files and embed an open source video player. This technique offers many benefits:

  • You can embed high-resolution video in your blog.
  • As you control the compression, you can embed high-quality Flash videos.
  • You can get rid of third-party watermarks in your FLV videos.
  • The appearance of the video playback controls is fully customizable, so it can match the look and feel of your blog.

Take advantage of these techniques and start embedding high-quality video content in your blog!

How to extend the life of a N64 gamepad


The texture of the Nintendo 64 joystick didn't degrade over time: it wasn't made of soft plastic, as the PS2 joystick. But, as all of the N64 controller users know, the joystick becomes somehow loose after repeated usage.


Nevertheless, N64 gamepad owners are lucky to extend the life of N64 controllers, because spare parts are sold to replace the complete Nintendo 64 joystick (not just the stick, but the whole inner mechanism too), at a lower cost than a new N64 gamepad.


Nintendo 64 thumbstick (click to enlarge)

You can purchase a Nintendo 64 joystick online. Each N64 joystick costs around 5 or 6 euros at ebay. You can even get some discount purchasing a pack of some N64 joysticks. The keywords to find these articles through ebay are "N64 thumbstick" (and be sure to perform a worldwide search).


How to open a Nintendo 64 controller and replace the joystick is pretty simple. Just remove the screws of the N64 gamepad, remove the old joystick, and put the new thumbstick in its place. And that's it: your gamepad now feels like a new one.


Curiosity: inside the N64 joystick


The installation of a new joystick in a N64 controller does not require to dismantle a gamepad as much as is shown in the following image. On the other hand, I always felt curious about how a Nintendo 64 joystick works and what's inside a gamepad. Will there be springs? Elastic rubber bands? ... Why do joysticks feel loose after some usage?


Inside a N64 joystick (click to enlarge)

So I opened the Nintendo 64 controller. The joystick itself just rotates 2 pieces that move 2 gears. The displacement of the stick from the central point is calculated according to the position of these 2 gears.


There is just 1 spring that makes the joystick come back to the central point (so the N64 gamepad does not have a spring for each direction, as some pads or buttons do). Such single spring is placed in the middle of the mechanism (so you cannot see it in the image), but it really pulls both gears towards the center.


Video in!




How to repair a PS2 controller


How to open a PS controller is really a quite simple task. But we tend not to open PS controllers because we don't know how, or because we fear breaking the gamepad if we open it. We fear that the pieces inside the controller could be dismantled and be hard to place again in their original positions (which really happens with many other things).


An open PlayStation controller (click to enlarge)

This isn't just a tutorial. It states that you can open a PS controller, without fearing the feelings of "What if I open the controller and leave it worse? Now it's so-so, but not bad after all". So I have attached the photographs that I have taken of my own open controller.


As they don't sell spare joysticks for PlayStation controllers, we can just swap the PS left joystick and the PS right joystick, because the right stick is less used, and it's often in a better condition (while the left stick usually loses the bump texture, which enhances the grip of your thumb).

Inside a PS controller (click to enlarge)

Replacing the PlayStation joysticks (click to enlarge)

To open the PlayStation controller just remove 5 simple screws with a Phillips screwdriver (a cross-point screwdriver). The PS joysticks are attached without any weird system or screw: the sticks just fit like Lego blocks.


This can also be useful to replace worn out buttons by the buttons of a broken irreparable controller that we could have laying out there.


Nevertheless, there is just only a situation in which we won't be able to mount again the open controller, as it happened to me: if your housemate (a member of this blog too) sits on the bed where you put the screws, spreading them through the floor and losing them...

Isolated, hidden webpages could be indexed by Google

Did you know that Google could index pages that have no inbound links? I mean, pages that have not been submitted to any search engine, that are not linked from any visible indexed link, that are not listed in any sitemap, and that are hosted in servers with directory listing disabled.

In the following lines I will explain you the complete scenario that led me to investigate whether such supposedly hidden pages could be indexed by Google.

And, what's more important, I will also explain how I think Google could be authorized to discover such webpages.

Lastly, I will explain how the distributed datacenters of Google may lead to confusing results, or even to valuable hints if you really take into account every information source.


Why I thought about how Google could find pages without inbound links

While I was creating a website for a customer, I developed an under construction version of the webpage. Then I uploaded this version to my own website for testing purposes.

Let's say that my customer main URL address was:

http://my-Customer-Domain-Name/

And that I uploaded the test webpage version to:

http://my-website-domain/my-Customer-Domain-Name/index.htm

So I thought that the only way to access that under development version of the webpage was typing the whole exact directory URL, right? Wrong! I was really shocked when I performed a search in Google, using my customer domain name as the main search keyword, and the second entry in Google search results was this test webpage hosted on my own website.

Yes, a page that I considered a hidden webpage, supposedly without any inbound link, was indexed by Google!


Was that webpage really hidden from search engines?

Okay, the fact is that Google found that kind of "hidden" webpage. It was an under construction page after all, so nobody was meant to take a look at it (not yet!). So I was really interested in finding out how Google managed to index this hidden and isolated page.

The first question is: was this webpage really hidden from search engines? Here is a list of all the basics that should be checked (and that I checked) to verify that a webpage is a hidden webpage.

  • The indexed webpage had no inbound links (according to Google link search). It wasn't linked from any page from my website. And, at that moment, wasn't linked from any other webpage on the whole Internet.
  • The testing webpage was never submitted to any search engine. I'm not sure about whether search engines would really crawl a suggested directory, instead of trying to crawl from the main domain index. But I'm completely sure that I didn't submit the URL of my website under development to Google.
  • Nobody else could have submitted such URL. None of my co-workers did know about such test version. And I think hackers have much more interesting things to do.
  • The webpage was not included in a sitemap. Yes, I have Google sitemaps and Yahoo URL lists on my website. But I checked the included URL's, and the mysteriously indexed URL was not on any sitemap or list.
  • Directory listing was disabled. If you don't type the exact URL, and if there isn't an index page at the target directory, my web server won't return a list of the hosted webpages - just a lean mean "directory listing disabled" message.

Then I was pretty sure that such webpage was really hidden from search engines... And then I thought that I was giving some additional information to Google (and only to that search engine, the powerful Google) in a somehow indirect, unconscious way.

So here are the two Google services that could have been used by Google to index new webpages:


Pages with Google Analytics code may be discovered and Indexed by Google

I realized that I had Google Analytics code already installed at the testing webpage. I created a profile for a new website (in fact, my customer's final website), and I embedded the tracking code (Google's latest code, ga.js) at the webpage version under construction.

On the other hand, the installation of this tracking code wasn't complete: I never uploaded the webpage under construction to the customer's domain, and Google displayed the message "tracking not installed". And the stats graphic didn't display any visit at all.

So I think that it's possible that Google could use Google Analytics data to index new web pages (or even to tweak search results in order to improve relevance).


Anonymous navigation data sent by Google Chrome could be used to index new webpages in Google

The only other Google application that had knowledge of the existance of my hidden testing webpage was the brand new, lightning fast web browser Google Chrome. I used this web browser to try the under construction webpage version. And then I found out that I had active the option of Google Chrome which allowed this browser to send anonymous data about navigation bar search suggestions and autocompletion.

I thought that these anonymous data would be used by Google to provide more relevant and more accurate search results. What I wouldn't expected is that anonymous navigation data gathered by Google Chrome could be used to index new web pages in Google. Yes, after discarding any other option, I thought at first that Google find out my hidden webpage because I provided the URL directly on the navigation bar of Google Chrome several times.


But the hidden webpage had an inbound link!

Just when I was sure that Google had indexed a hidden webpage, I received a very interesting message from Google Webmaster Tools after renaming such "hidden webpage".

The message was an URL crawling error about a missing URL. Checking the details of this error, I found that the "hidden webpage" had been linked from my customer's website (but was not linked from there anymore).

That reminded me of some of the basic principles in web programming:

  • Customers will use your website in really unexpected ways (even when the website is not already finished).
  • Google has many datacenters with different information, so you cannot rely on just a search result. While a normal link query may report that there aren't any inbound links, you can obtain different results by checking the stats of your website through Google Webmaster Tools
  • Google Webmaster Tools now reports broken links even when the only link to your webpage comes from an external website. After all, if the linked to you, you should keep some content in that URL.

Conclusions

It seems that you cannot rely on keeping secret an isolated web page without any inbound link if you plan to use some Google applications with it. Either Google Chrome or Google Analytics could be using gathered navigation data to index new webpages and add them to the main Google search engine: you could be authorizing them to do so.

That's not a security or privacy issue. In fact, if you really don't want search engines to crawl part of your website, tell them about that in your robots.txt file. Just keep in mind that robots.txt files are public, and that human users may easily find out complete lists of your 'secret hidden urls' by reading these files. But that's a different story.

After all, Google Chrome and Google Analytics could just be aiding Google to do its work: discovering and indexing as many webpages as possible (even when those webpages seem to be really hidden!).

Finally, if you want to get accurate results about the links to your website, don't rely just on a search query. Google has many datacenters with subtle different content. So if you want serious results, perform link queries through the main Google search engine, but check the link stats of your website through Google Webmaster Tools as well.