Thursday, November 29, 2012

why people hate phone companies

A lot of angst is due to unpleasant surprises, I guess. And also mis-communication. I saw an attractive scheme, RC21 on Airtel, wherein we can call US lines, UK landlines for 4p per second, Gulf for 11 p per second and so on, for 30 days. Charged with it on 31 Oct. I also had an active RC33 - all domestic calls, local as well as STD, at 1 rupee for 3 minutes, for 90 days. On 9 Nov, I recharged this RC33 since the 90 days were over. And then when I made ISD calls, was charged the full rate. Lost around Rs. 200 like this before I noticed. I thought this might be some issue with Airtel, since my 30 days were not yet up. Customer care did not explain the reason for this to happen the first time around - they either could not understand the issue or could not communicate. Email using the form on airtel website gave me an auto reply saying they would revert in 2 days, but there was no response. Called again, and got the explanation from the supervisor that the RC33 had overridden the RC21, only one benefit at a time!

What could Airtel have done to not cause this customer to be unhappy? They could introduce SMS alerts whenever  benefit recharges expire. Or even a single line in the recharge SMS for special recharges, saying that this recharge now over-rides other recharges etc. Or, of course, the best option would be for them to allow multiple benefits, but they may have business cases against that option.

Wednesday, November 28, 2012

taking screenshots with HTC Wildfire android phone

I'd installed Remote Web Desktop and wanted to take some screenshots. From the help page, found that I needed the USB driver installed if I wanted screenshots from my non-rooted phone. Many posts give different directions. This post as well as this one give the lines to be added to the inf file so that the HTC Wildfire will be recognized and the ADB driver installed. But on my install, though I added the following lines,
; HTC Wildfire
%SingleAdbInterface% = USB_Install, USB\VID_0BB4&PID_0C8B

%CompositeAdbInterface% = USB_Install, USB\VID_0BB4&PID_0C8B&MI_01
%SingleBootLoaderInterface% = USB_Install, USB\VID_0BB4&PID_0C8B
to the android_winusb.inf file, the add new hardware wizard did not recognize this folder as containing a suitable driver. Checked with USBDeview as given at this post, and the device instance had the serial number also in it. So, tried editing the inf file again, with
; HTC Wildfire

%SingleAdbInterface% = USB_Install, USB\VID_0BB4&PID_0C8B\SH18NPY09904
%CompositeAdbInterface% = USB_Install, USB\VID_0BB4&PID_0C8B&MI_01
%SingleBootLoaderInterface% = USB_Install, USB\VID_0BB4&PID_0C8B\SH18NPY09904
where the last few digits have been changed to hide my actual serial number :)
That also did not work. Then, these posts indicate that installing HTC Sync would solve the driver issues. So, went over to HTC's site, downloaded HTCSync for Wildfire S hoping it would work for my Wildfire as well, installed, worked - the new hardware wizard recognized the phone in USB debug mode now.

Remote Web Desktop needed the install_capture_service.bat to be run before doing screen capture in the web desktop window. Did so, and it worked.


Unfortunately, though the software mentions that the screenshot service has to be re-installed if the phone is rebooted, in practice, it has to be reinstalled if the Remote Web Desktop service is restarted, too. Have to go through
  1. Enable USB Debugging (didn't want to leave it on all the time)
  2. Start Remote Web Desktop service
  3. Run connect.bat, open a browser window and wait for Remote Web Desktop to appear, and then install_capture_service.bat
  4. Now take the screenshot as desired.
Edit: Found that the reason for requiring re-installation is that the service is not going into the background - ran it from terminal and found it was giving an "Operation not permitted" for going to the background. Hence has to be run every time...

documenting the process of changing a filename

When we have to change a filename on one of our broadcast files, we have to do the following:
  1. Ensure that the file is not currently in a pending playlist, or take suitable precautions like a backup copy of file.
  2. Rename the file in the local server saiwaves in both ~/audio as well as /local/audio24
  3. Rename the file or make a copy in ~/TOWRITE24KBPS and ~/TOWRITE96KBPS
  4. Make changes to both downloadfilename and filename in the local database
  5. Rename the file or make a copy in dl.radiosai.org
  6. Rename the file or make a copy in the playout server
  7. Make changes in the web server database by logging in to Plesk.

Wednesday, November 21, 2012

optimizing phplist tables

Saw that our bounce processing on krishna was slow. Followed this advice, and did some table optimizing.

Optimize table for the bounce table, and optimize table for the user_user table. For this, logged on to mysql commandline client using the credentials mentioned at the phplist config file, and used the table names after listing them - we have custom table name prefixes.

mysql -u user -p (will ask for password)
mysql> show databases;
mysql> use my_database_name;
mysql> show tables;

 etc. as given here. Bounce table optimization took two and a half minutes, user_user table took 8 sec.

But still, the bounce processing takes a good half an hour or forty minutes. So, decreased the frequency of the bounce processing cron jobs, commented many of them out.

bounce processing speedup in phplist

Saw that our phplist installation was not showing any bounce process events in eventlog. Tried the purging of mbox method to make it operational again. Still did not see any bounce events the next day. Tried it manually by copy-pasting the crontab commands to the shell. Found that the bounce processing was taking around half an hour. Googled, tried out this solution. Implemented it using the mysql shell, guided by this command reference again got by googling and by using the username and pw in the phplist config file. Optimize table for bounces took under three minutes. For the user_user table, it took only 8 seconds. Unfortunately, at some point, I interfered with a cron job of bounce processing, so it started giving the message "A process for this page is already running". Googled and found my own post (!) on how to resolve the issue - run it from the web interface. Now the bounce processing takes only around 20 minutes.

Sunday, November 18, 2012

matlab work

Dr. S. wanted a bugfix for viewer3d.m which is work circa 2005 (or earlier?) It was working for Cardiac SPECT images, but not for Bone SPECT images. Error message was from interp3, complaining that matrix dimensions should be equal. Checked the images, found that the working images were 64x64 while the non-working images were 128x128. Luckily my Matlab install in Dharma was still intact. Found a line in the code,
six=[1:64];
Replaced this with
sizD1=size(D1);
six=[1:sizD1(1,1)];

Now it works, except there is another bug which manifests if the number of images is less than 9. Have saved that bugfix for a rainy day :) Dharma worked just long enough for this fix, now it's not booting!

Wednesday, November 14, 2012

stellarium for displaying panoramas - nope

Explored Stellarium for display of panoramas in our mirrordome, using the camera move and mirrordome distortion capabilities of Stellarium 0.10.2. The pan is shown dimmed in stellarium, so the way to go for full brightness panoramic views would be to create fisheye images using this technique and rotate them in blender for a camera pan effect. Mapped onto a square surface in Blender, rotated it.

Monday, November 12, 2012

using stellarium for generating fulldome scenes

Tried out both stellarium and blender for generating fulldome scenes for our mirrordome setup. Using the starball file from Ron Proctor, rotated it by 30 degrees or so over 250 frames - 10 seconds of 25 fps video. Rendering took seven hours at around 90 seconds per frame. Using stellarium, I could generate starfields and rotate them in real-time, and capture using tools like Fraps and Taksi. Performance-wise, Fraps is better, and is more user-friendly. But Taksi's price is right for me - free.

Initially had some trouble setting up Taksi - things to note are:
  1. The capture shortcut key must be chosen so that it does not interfere with the software from which you're capturing. For eg. the default F6 key causes the Location window to open in Stellarium.
  2. Taksi does not capture with some of the available codecs, for eg. those codecs which are decode-only, obviously! So, we have to choose the codec with care. Xvid seems to be OK, but frame-rates drop quite a bit due to processing overhead. Have to compensate by playing the scene slowly and speeding up the captured video later.
  3. Had trouble hiding the gui with Stellarium 0.10.2 - the
    core.setGuiVisible(false) ; //hide tool bar
    doesn't seem to work. Upgraded to 0.11.4 and then found that the 0.10.2 was the last version where the mirror warping worked! Alexander has upgraded this bug to Critical, so hopefully it will be fixed soon. Merely installing 0.10.2 over 0.11.4 did not work - Stellarium did not load correctly at all. Uninstalled and re-installed, restarted, then it worked.
  4. Since my laptop display is 1280x800, in order to get a higher resolution screen capture, hooked up an external monitor. The AOC Spectrum 7VIrA did support 1920x1080, but not 1600x1200. Had to go to
    NVIDIA Control Panel -> Set up multiple displays -> Only use one display
    for getting single display mode - the short-cut Fn-F5 was not working. Even in single display mode, the screen-grab of KMPlayer did not show the video. But stellarium was being captured OK at around 4 fps by Taksi (with Xvid codec) and 12 fps by Fraps (with it's own Fraps codec). Single display mode was required, because even though stellarium gets captured in dual-screen mode, it uses the resolution of the primary monitor - 1280 x 800 in my case and not the 1920 x 1080 of the secondary monitor when switching to full-screen mode.
  5. This version 0.10.2 has a bug with the auto-hidden toolbars not popping up when moving the mouse to the left corner. Have to use false flags for auto_hide_horizontal_toolbar and auto_hide_vertical_toolbar in the config.ini at
    C:\Documents and Settings\\Application Data\Stellarium
  6. Tried out a script with screen capture after moving one degree, works.
    for(azi=90; azi<=300; azi+=1)
    {
    core.moveToAltAzi(alt, azi, 1);
    core.wait(2);
    core.screenshot("myscreenshot", false);
    }

using a usb mem key drive to improve speed

Using flash memory for virtual memory does speed things up a bit on old computers - A asked me about it, I passed on this to him -

On Windows XP, it is this way:


Right-click on My Computer

Choose Properties

Choose the Advanced Tab

Click the Settings button under Performance (Visual effects, memory usage, etc)

Choose the Advanced tab

Click the Change button under Virtual Memory

Choose your USB mem key drive letter, choose custom size and enter the amount based on how much free space is available on your USB mem key. More than 4 GB would be good.

Choose the other hard disks drive letters and choose "No Paging File" for those disks.

Choose OK and restart the computer.

Of course, once you have set the paging file like this, you should not unplug your usb drive when the machine is on :)

Saturday, November 10, 2012

more options for making web radios on the cheap

A follow-up to my earlier post, here is another el-cheapo web radio, elegantly simple with power over ethernet, for parts under $30 if we sacrifice the display etc - found via Wired.com - http://www.watterott.net/projects/webradio-arm

I did contact Watterott, but they are busy for the next 6 months. Plus the mp3 decoder card used has now been superceded by a new model, so some changes would be needed to the design.

Tuesday, November 06, 2012

extracting audio from video file - without virtualdub etc

For non-technical users, extracting audio from video files like flv files or mp4 files can be done using VLC - this post shows how in detail.

panorama mapping formula

As mentioned in my previous post, the field of view is what decides the "stretching" if needed. As an empirical test, the original stadium pan in this post seems to be around 120 degrees horizontally and around 60 degrees vertically. So, vertically it would need to be multiplied by 3 to cover the full 180 from front to back, and horizontally it would need to be multiplied - again by 3 - to cover the 360 degrees all around the observer. And indeed, using white space instead of cloning to save time, using an image where the pan is the ower middle tile in a 3x3 set of tiles of the same size as the pan,

we get this polar image, which seems to be quite undistorted.
If we keep the same aspect ratio as the orig of this pic and reduce the white space, we get more coverage of the dome with the image. The extreme case of this would be to use the pan itself without any padding, since the padding is equal in horiz and vert directions in this case. Then we get this,
where we can see that the Hanuman statue which is further away from the horizon seems to be vertically stretched. On the dome also, it is seen to be vertically stretched. So, in general, we should shoot for images which are near the horizon, and we can clone the sky or mirror the image for filler.

Sunday, November 04, 2012

more on using panoramas on fulldome

But my posts so far have been for using a shortcut to displaying the panorama on the dome. Finishing up my previous post, here is the pan with the "visible" region having the interesting part of the pan, with the rest of the image filled with a mirror image and white space on top (which could have been replaced with "sky".) The amount of stretching required seems to be a bit ad-hoc, depending on the field of view, I suppose. If the field of view is more, then probably the stretching may not be required? Anyway, this was stretched 2.5x, and made into a rectangle and not a square before making polar - implying more stretching in that process.

Flat image, stretched and mirrored:

and the polar version,

For better results, I guess I should map the pan onto a cylindrical surface and use the view from the fisheye camera in Blender.
I'll check out the above image by animating it to make a full circle and watch it on the dome, and then proceed.

Saturday, November 03, 2012

displaying panoramas on fulldome

I had explored displaying panoramic photos on our mirrordome setup in an earlier post, just using Filters -> Distorts -> Polar Co-ordinates in Gimp on a square image. Here are some more details. The filter dialog box was as below,

Here, the map backwards prevents the resulting polar image from being left-right inverted. If Map from top is removed, the result is like these mini planets. The offset angle is entered so that Hanuman statue is centred on the resulting fulldome image.
Merely adding more 'sky' and making the pan square is not enough. The resultant fulldome image will appear squished down vertically. Example below.

This image, which is square,

becomes this image on doing polar co-ords distort


So, the image has to be vertically stretched 2.5x for it to look reasonably good. The image below is stretched 3x, it looks a bit vertically elongated on the dome:

3x stretched pan made into a square,
and then polar:

Now, if the image is not made into a square, still the polar distortion can be done. But the resulting image is as if the original had been stretched to make it into a square and then the polar distortion was done. For example, with this original image,

we get this,

which is the same as we get if we distort this image got by stretching the pan into a square,

Now, these are not 360 degree pans - more like 180 degrees or even less. Assuming 180 degrees, we would get an image like this if we were to add white space for the missing 180 more degrees - I have put in a text background colour to highlight the white space.


But this also yields a vertically squished image,
 


As our audience is front-facing, the region which is well visible to our audience is highlighted below,
So I can try and make pans with some clouds or a fade-to-grey or something for the non-visible part, and push the relevant pixels into the visible part. The non-visible part is around 25%, so we can try adding 25% to the width of the image and then making it polar.



Friday, November 02, 2012

HTC Wildfire update

The HTC Wildfire mobile phone informed me of a 4 MB software update, 2.25.720.4. Downloaded it on the phone, said that it needs to restart phone after the update. I was updating Opera, so waited till that finished before going back to the software update. For this, I had to go to Settings -> About Phone -> System software updates

Once the update was installed and the phone rebooted, it took a good 10 minutes to boot up. The HTC welcome screen ("quietly brilliant") was displayed for a while, then the lock screen came on, on unlocking also the HTC welcome screen, finally a progress box with percentages display, finally booted to the home screen.

using an xp machine as gateway

N wanted to use an XP machine as a gateway for a LAN which is normally not connected to the internet. Googled it and found that to use Windows XP as a router, it's a simple registry edit,
HKEY_LOCAL_MACHINESYSTEM  -> CurrentControlSet -> Services -> TcpipParameters -> IPEnableRouter
should be set to 1.

Step-by-step instructions on how to set gateway properties on each of the machines etc is given at
http://www.home-network-help.com/ip-forwarding.html

our DKIM keys

This story in Wired prompted me to check our DKIM key length for radiosai.org - this post indicates I have used 1024 bits, safe for now.

colour correction for mirrordome

As mentioned in my previous post, the colours in our projection were not very accurate - highlights washed out and so on. Changed the modes on the projector and viewed the blu ray movie which came along with the projector. With that movie, the modes sRGB, movie, presentation and bright all looked similar. But with our Darshan video, movie seemed a bit too reddish, with a slight excess of brightness over contrast. Presentation looked better, so currently have set it to presentation.