Sunday, December 28, 2014

streaming live video from gopro

S asked me about streaming live video wirelessly from their GoPro Hero 3+ camera.

This article gives the steps in text form:

This youtube video shows in video form.

EZcast dongle - wireless display - display mirroring over wifi

I recently got an EZCast dongle, which can handle MiraCast, Apple AirPlay and DLNA as well as output from it's own EZCast app. Things to take care while using:

  • Make sure that the USB port powering the dongle can supply sufficient power. Or use a good quality USB charger. Low quality chargers may have electrical noise issues. 
  • First set up using the EZCast app - that is the easiest way to get things going. Using an Android phone, for eg, install the app, then connect to the EZCast dongle's wifi access point SSID displayed on the initial setup screen. After that, run the app, it scans for the EZCast device, and the setup is fairly self-explanatory after that.
  • EZMirror - display mirroring using Miracast - requires the device to support it. Many cheaper devices don't.
Using the Xiaomi Mi3 with EZCast with EZMirror mode was similar to the youtube video demonstrating the Mi2 - but the menu item is in Settings -> More -> Wi-Fi Display
When the EZCast is set up in EZMirror mode, once you go to Settings -> More -> Wi-Fi Display and Enable Wifi display, the EZCast device will be displayed below it, and can be selected to start the screen mirroring.

About the quality - the video quality degrades a bit compared to a direct wired HDMI connection, due to the re-encoding with H.264 and depending on the setup, resolution of the video may also be changed. There is also a bit of latency, 5 frames or so in the case of mirroring on my phone. 

Saturday, December 27, 2014

stream video from gopro camera

The Studio folks got a GoPro Hero3+ camera and they wanted to use it wirelessly. Showed them:

This youtube video shows in video form.

Unfortunately, a lot of delay in the video - so usefulness would be limited for live programs. The range of the wifi would also be a limitation. 

Tuesday, December 16, 2014

exporting anu fonts to unicode

At long last, found a web tool to convert anu fonts - used by the Telugu team to create pagemaker documents, exported to pdf - to unicode, for pasting in Wordpad and so on.

I used the second link, Dynamic Font to Unicode convertor, and got reasonably OK results. 

Monday, December 08, 2014

large file download and unzip

Just documenting the time taken etc. - downloading the 98 GB zip file from ESO's website,

  • On my machine with a single download segment, 3 Mbps, 3 days estimated, with our 10 Mbps network. 
  • On R's machine at college with their 1 Gbps network, Sat-night, Sun-morning, 4 segment download at around 15 Mbps. 1.5 MB per second. 15 hours. 10 segment download might have been faster. 
  • Copying from their NAS over their 1 Gbps internal network to the external hard disk - half an hour. 
  • Unzipping on my machine - around 4 hours with 7-zip. 

Friday, December 05, 2014

godaddy dns editing

One of my colleages needed some help with editing the DNS records on godaddy. The interface is not the easiest to navigate: In godaddy site -> expand domains by clicking the + sign to the left -> click Launch for the required domain -> Click on DNS Zone file tab, make edits there. 

Thursday, December 04, 2014

internet radio, AppleTV etc and possible local issues

The Logitech internet radio of our neighbour was "not working". Found that the radio had some issues connecting when their ip camera is streaming. If the internet radio is started before the camera, then it can play even when the camera is on. Possible mitigation by reducing the frame rate or resolution of the camera image for reducing its network usage.

In case they think of the Apple TV or Roku, the internet connection may need to be upgraded. Some Indian reviewers mention that Apple TV needed > 5 Mbps for smooth video. Apparently Apple TV does not support live streams. So, the live broadcasts can't be watched (without airplay and another apple device, of course) only after the program concludes can those programs be watched. Maybe support for live will come later, like for the iOS app.

Similarly, the Roku Youtube app also has limitations, it apparently works only in US, UK, Canada and Ireland.

Here is a nice review of many of the current set top boxes, but US-centric

Wednesday, November 19, 2014

firefox caching iframes

Today, P asked me to do a website update by ftp. But after putting in the required file, the youtube video in the embedded iframe did not change when I checked with Firefox, so I wondered if the correct file had been modified. Even refreshing the page did not help. Safari showed the correct iframe, so I cleared the Firefox cache, and then the correct video appeared. 

Monday, November 17, 2014

video stutter issue

I needed to increase brightness and contrast in a video warped with GL_warp2Avi but when I just loaded the video into virtualdub and tried to do it, vdub was reading the video two frames forward, one back and so on. Not sure whether the problem is with the xvid codec used, or with GL_warp2Avi or with vdub. Anyway, the workaround was to make an avisynth avs file with just directshowsource("myfilename.avi") and use that as the source for vdub. That worked fine. 

Sunday, November 16, 2014

Airtel and Reliance speeds

P got USB dongles for M - Reliance and Airtel. The Reliance data plans are cheaper, but the speeds are lower. Airtel speeds are higher and the tariff is higher too. gave Reliance 0.9 Mbps up as well as down. Airtel got 2.5 Mbps down, 0.5 Mbps up. This was done in the afternoon around 2 pm, so the networks were probably not congested. 

Saturday, November 15, 2014

adventures with a Xiaomi Mi3 phone

Was gifted a Xiaomi Mi3 phone in mid October. Now that I've used it for nearly a month, can write a bit about it. As the reviews say, it's a very nice phone, looks very distinguished. The few disadvantages from my point of view are maybe the large size and the slippery feel of the metallic body. Also the audio quality of the built-in headset needs a bit of tweaking - too much bass, making conversations somewhat unintelligible sometimes. Privacy concerns may have been addressed by the firmware update which I have applied.

Just a day or two after I got it, it fell into water and was completely underwater for a second or two, during a power outage when I was using it as a torch. Switched it off as soon as I fished it out, and kept it for 24 hours in an airtight container with raw rice for drying it. Then kept it on top of a warm fridge voltage stabilizer for another 12 hours to ensure that it has dried, and then switched on. No damage to normal operations, except for a sort of water stain which can be seen on the screen when the screen is completely white.

The processor + GPU is more capable than my work computer in playing high bitrate high resolution videos. For eg. a 10 Mbps 2K video which played at 0.5x on my laptop played back perfectly on the phone, using ES File Explorer to read it over a shared volume. The phone's 1920x1080 screen is higher res than my laptop's 1280x720!

Skype, Viber, Youtube etc etc all work without a hitch, and the mobile browsing experience is really good. The touch response is iPad-esque, not skittery like the cheaper Samsungs. Another good point is that the lock screen swipe does not happen accidentally from the pocket, unlike my earlier HTC. Overall, very happy with it. 

Tuesday, November 11, 2014

automatic deletion of files

PB had set up a cron to automatically delete files from a shared folder two weeks after they were put there. But folders were not being deleted. Now, he updated his script.

Earlier it was

/usr/bin/find  /path/to/folder/expires/* -ctime +15 -exec rm -f {}  \;

Updated to

/usr/bin/find  /path/to/folder/expires/* -ctime +15 -exec rm -Rf {}  \;

Sunday, November 09, 2014

Traffic causes cloudflare issue

Due to Akhanda Bhajan traffic I assume, Cloudflare was showing and associated pages inside that folder as being offline, or timed out etc, probably due to high load. I have put in a page rule by logging in to cloudflare, bypassing everything, so that cloudflare will be bypassed, and the page will load, even though it may load slowly.

(Removed this rule after a week).

Wednesday, November 05, 2014

spindles of solar system exhibit

KR noted down the speeds of the spindles of our solar system exhibit, which run using worm gears. The worm gears slip, and need to be aligned exactly for the planets to rotate. The spindle speeds are 8, 12 and 90 seconds per rotation, in the order below:




(technician inside)

Wednesday, October 22, 2014

audio video sync problems persist

Even after using the SDI audio for the streaming and recording, the streaming video on youtube continues to have audio video sync issues, video lags audio by a frame or two. According to this thread,
we probably need an audio delay box if the Panasonic AG-HMX100 does not have audio delay built in.

Searching in the advanced operating instructions at
there does not seem to be any audio delay setting in the AG-HMX100

Audio delay units are available, this one is available in India for Rs. 8500.

Wednesday, October 15, 2014

Adobe Audition save all files

My colleague wanted Adobe Audition CS6 to save all associated files in a project into a single folder, a la Reaper or Nuendo.

On my old version of Cool Edit Pro, when you open a sesssion file and then choose File-> Save Session As, in the dialog box, there is an option at the bottom, "Save copies of all associated files". If that is checked, audition will save all the files in the same folder which you choose for saving the ses file.

But he did not have this option. Then googled and found that the answer was probably

File -> Export -> Session
and select Save Copies of Associated files. 

Tuesday, October 14, 2014

sitelutions stopping free dns redirection

One of the sites which had a domain redirect stopped working, and found that had stopped their free dns redirection. "In October, 2014, after offering free DNS and redirection for about 14 years, Sitelutions was forced to shutdown free DNS and redirection. Over the years, the free services began to attract a significant amount of abuse, including very large DDoS attacks. These attacks would impact the services being provided to paying customers, and were very expensive to properly mitigate."

Shifting some domains to nettigritty nameservers (which were purchased via, some to and some to cloudflare dns.

Sunday, October 12, 2014

google public dns failure

Yesterday evening, was returning SERVFAIL on google's public DNS servers and - suspected because of dnssec failure.!topic/public-dns-discuss/4KyD2HYYcVo!topic/public-dns-discuss/xBjI62Kz-sw

But today it seems to be resolving OK. Checking with Cloudflare support, they said that it would probably have just been a google public dns failure. 

Friday, October 10, 2014

Java problem on Windows 8 machine

The Windows 8.1 desktop at the SSSHos.SS office was unable to use the Income tax site's java based authentication. Checking, found that even the java test applet was not loading. At first I suspected that the network firewall and proxy were blocking all java applets. But later found that other machines on the same network were able to access java applets without problems, eg the one in JHos. So, I wrote,

The following points can be checked.
1. Verify that it is a 64-bit version of java which is installed, and it is a 64-bit version of the browser (IE or firefox). If browser is 32 bit, then you need to install 32 bit version of Java also.
2. Verify that Windows Defender and or any other antivirus is turned off while testing for Java (and turn it back on after doing the test). This person found that Kaspersky was blocking the java applets,

But even disabling Kaspersky did not solve the issue - maybe it needs to be uninstalled? Temporary workaround is to use the JHos computer for this job. 

Friday, September 19, 2014

using virtualdub frameserver for warping tool GL_warp2Avi

Finally found a workaround for the 2 GB and avi only input limitations of GL_warp2Avi using Virtualdub's frameserver and the Avifile client bundled with Virtualdub. (auxsetup.exe).

Earlier method with AVFS - which uses Pismo File Mount Audit package to mount - had limitations - GL_warp2Avi crashed with a 3.5 GB mp4 file used as directshowsource in avisynth avs file.

With the Virtualdub frameserver, just naming the signpost file with an avi extension was enough, after the Avifile client bundled with Virtualdub was installed. Tested with 20 minute pieces with no problems. 40,000+ frames.

But in the process, found a somewhat new issue - the menu items don't appear to be visible when the GL_warp2Avi window is moved to the secondary monitor. So at present I just run it from the primary monitor. Minimizing the window did not seem to have any ill effect. Re-sizing the window would cause the output video also to be re-sized, of course. 

Thursday, September 18, 2014

Ubuntu servers needed manual ntp install

Our new servers at Dallas and Phoenix needed a manual install of the ntp daemon.

PB mentioned that
Found that the time diff between the servers was about a minute.
Did the following as suggested here

root:~# ntpdate

Then I suggested checking for ntp 

And PB did the install on both machines,
apt-get install ntp

Thursday, September 11, 2014

Google Webmaster Tools verification for a domain which has forwarding enabled

Our colleagues wanted Google Webmaster Tools verification for a domain which has forwarding enabled. The standard methods did not work - even the DNS TXT record method did not work since the DNS provider did not allow TXT records to be created for domains which have forwarding enabled. So, disabled forwarding, created the TXT record, and after the verification, enabled forwarding again.

We might have to do this whole process again - according to google, the verification code should remain on the server. But since we have put back the redirect, the TXT dns record has gone. So we shouldn't be surprised if google webmaster tools asks us for verification once again. 

Tuesday, September 02, 2014

batch processing on Adobe Audition

G and S had a query - how to run multiple processing steps using Adobe Audition's batch processing. Their version is probably CS6, on Mac. This page probably has the solution. First create a favorite by going to Favorites -> Start Recording Favorite and Stop Recording Favorite. Then choose that favorite in the batch processing drop-down.

repairing broken php on Ubuntu 14.04

M reported php redirects on our website were not working. Returning the php code instead. Found that php5 was not present in the mods-available folder.
apt-get install php5
reported that php5 was already installed. Our reinstall of apache after a purge had probably broken it. So, did
apt-get purge libapache2-mod-php5 libapache2-mod-php5filter  php5-cgi   php5-fpm php5
and then
apt-get install php5

That solved the problem. 

Saturday, August 30, 2014

new streaming server live

Changed TTL for our streaming server to 10 minutes, and some time later, changed the DNS A record. Tweeted that users should clear their browser caches in case of problems. After half an hour or so, many users were still connected to the old server. Manually kicked them, then many started connecting to the new server. After one day, only a handful were on the old server, so shut down icecast.

Thursday, August 28, 2014

changes to our icecast setup

Continuing my earlier post about changes while migrating, we made some changes to the icecast setup - using the on-connect tag to run our live begin and end scripts. There were some small hiccups while doing this - since the she-bang #!/bin/bash was not present on our scripts, they were not being executed. PB corrected this, and then giving the full path in the on-connect directive does the trick.

Also, instead of changing the alias of port 8020 to a different mount-point as earlier, we've now made the fallback-mount change in the mount-point telugustream during the live session.

(Our attempts to avoid the live begin and end scripts did not work. The fallback-mount directive for relay does not seem to work. So, if livemandirasia is a relay for livemandir, and livemandir does not have a fallback, then if asiastream falls back to livemandirasia, then if livemandir is not live, listeners get a 404 file not found. And if connect when live and live disconnects, listeners are kicked.)

In the web player at our website, the streams were linked to etc - changed to etc. and purged the cloudflare cache for those files. Other places have, which is fine since it is a cname for

Then, PB found a nice way to make the icecast daemon start as our user (and not root) on reboot - the @reboot directive in crontab. So, now no manual intervention is required for starting the streams. Also, when done this way, the ulimit workaround we had to implement is automatically taken care of - the cron is run as root su'ed as our user.

key-based rsa auth - a caution

When doing key-based auth for ssh, a caveat - if the .ssh/authorized_keys or .ssh/id_rsa files are being modified, the permissions need to be set to not allow read or write by any other user for the authentication to work - chmod 600 needs to be done. 

Wednesday, August 27, 2014

changing servers with an upgrade

Migrating data from Internap (formerly Voxel) to Codero, we found that the upgrade from Ubuntu 10.04 to 14.04 breaks many of our configuration files. Apache and vsftpd in particular. Icecast remains at the same version, but our icecast scripts which use small binary files needed re-compiling, of course.


  • Merely creating symlinks did not seem to work - we had to run a2enmod and a2ensite for them to work properly. This included a2enmod cgi , without which the awstats perl scripts were being shown as plain text :)
  • The default website name has changed from default to 000-default - without that, requests to the server using the ip address or using other names will not work. 
  • The configuration files in sites-available needed to have .conf at the end.
  • The old method of
    Order Allow, Deny
    Allow from all

    had to be changed as per this post to
    Require all granted
  • Many more changes in apache2.conf, so we just modified the newer apache2.conf step-by-step with our old requirements

This needed additional config lines as per this post, done by PB, added the lines 

and restarted vsftpd to fix the problem with not being able to write using ftp. 


We created symlinks to mp3info, mp3splt etc since the paths to these given in the old scripts had changed. Also recompiled the "CCodes" files. cc filename.c -o filename_of_executable

We tried to run icecast from init scripts, but just changing the USERID and GROUPID in the icecast2 init script was not enough. Perhaps we have to add chroot and run as user parameters also in the xml config file - we have to explore this later. 

We also tried some techniques to try and get Telugustream to mirror the live from mandir stream only during live times, but the methods we tried did not work.

livefrommandirfortelugustream as an alias for livemandir, and having autotelugu as fallback-mount for livefrommandirfortelugustream did not work in that the alias does not work in cascaded fashion - we already have :8020/ aliased to telugustream, but this does not follow the alias to livemandir. 

Also, trying to make livefrommandirfortelugustream a relay of livemandir works, but when livemandir ends, it has the fallback-mount of autoasia, so livefrommandirfortelugustream continues to get the relay audio instead of falling back to autotelugu. 

So we have to retain our method of switching config files using a shell script and manually dumping telugustream users to the relevant mountpoint using icecast's /admin/moveclients.xsl called using wget. 

Sunday, August 17, 2014

video setup troubleshooting

The video team had a couple of problems. After changing video switchers from their older Datavideo DV switcher to the newer Panasonic AG-HMX100 HD mixer, they were not able to get a composite analog video out, or IEEE 1394 (firewire) DV out for streaming, and had rigged up a camera facing a screen for getting a DV feed. Apparently the Aja Ki Pro had earlier given them a composite out, but now was not giving it. Checked, found the manual mentions that the component out has to be set to SD in order for the composite out to be available. V did it, and it worked. That composite out is given to a DVCAM tape deck, which in turn gives a firewire out to the streaming server.

The next issue was regarding sourcing of PC playback video to the video mixer. Their setup had VGA out from PC going to a video doubler connected to the display screens in the hall, and a HDMI out from the PC going to a screen with a HDMI -> DVI cable. It so happened that the HD video switcher had a DVI input, only the resolutions supported were 1920x1080, 1280x768 etc. After changing the resolution to 1280x768 (1080p not supported by graphics card) and choosing the same format 1280x768 @ 60 Hz in the mixer settings, it could recognize the PC input as one of the valid sources. 

Tuesday, August 12, 2014

instapaper epubs on kobo reader

NNR gave me his Kobo Vox ereader to use. The epubs available for download from instapaper do not open in the Kobo's built-in library, but open in FBReader which I installed. Converting a mobi downloaded from instapaper to epub using Calibre could make that file recognizable by Kobo's library app. But with any method, the Feynman lectures' equations don't render correctly in epub. Printing to pdf using PDF995 and reading with Adobe Reader works nicely.  

Monday, August 11, 2014

documenting my fulldome process

Answer to a query about how we make movies from domemasters (still images of single frames):

To make the images into a movie, I usually do my own technical work. My workflow is on Windows. So, I generally follow this method.
Software used:
After installing the above software, I create an avisynth file, which is just a text file with .avs extension.

Opening this file in virtualdub, I choose
 Video -> Compression Xvid codec, maximum bitrate 9000 (kbps or so)
Audio -> Audio from other file -> choose the audio file
and then File -> Save as avi

Edit 19 Oct 2015: Adding a picture:

Saturday, August 09, 2014

data analysis with ROOT - redux

In my previous post about data analysis with ROOT, I had used the data from a single gamma. Extending it to multiple gammas - 1500 - and calculating the energy weighted position, found a bug in my code.

Apparently the Fill() function does not fill if the indices passed to it are 0. That is,
will not work for i=0 or j=0. Since our energy2D C array has a range 0-7 for i & j, this Fill() had to be re-written as
with the i & j range 1-8.

I also changed my definition of the histogram to
TH2I *h2 = new TH2I("h2","energy distribution",8,1,9, 8,1,9);
instead of
TH2I *h2 = new TH2I("h2","energy distribution",8,0,8, 8,0,8);

With the resulting root file, energy-weighted position analysis could be done quite quickly, almost instantaneously, with

// loading the data in root file
    TFile f("multifile.root");;
    TH2I* h = (TH2I*)f.Get("h2"); 

for (int i=1;i<9;i++)
    for (int j=1;j<9;j++)
      ewposx += posx[i-1][j-1] * bincontent ;
      ewposy += posy[i-1][j-1] * bincontent ;
      totalcount +=  bincontent ;      
    ewposx /= totalcount;
    ewposy /= totalcount;
    printf("ewposx & y   = %f, %f\n", ewposx  , ewposy  );

Changing the position of the gamma was fairly straightforward in

The calculation of energy weighted position in the LXe example seems to have broken somewhere in development - people have reported non-zero positions in 2010 and so on, but when it is run now, it returns only zero, since the GetPos() for the pmt hit collection class returns zero. This seems to have causes in the class definitions and so on - doesn't mention fPos private variable in the over-ride function for = operator and so on. Instead of trying to fix that, I just re-entered the position data in root, as

for (int i=0;i<8;i++)
    y = -22.75;
    for (int j=0;j<8;j++)
      posx[i][j]= x ;
      posy[i][j]= y ;

      //printf("pos2D[%d,%d]=%f,%f\n",i,j,posx[i][j] , posy[i][j] ); 

Friday, August 08, 2014

blogger limitations

Blogger is still raw around the edges! Surprising, even after so many years.
  • A post I did with email - the one just before this one - became mangled somehow, and made any page containing that post to break the browser so that links were disabled. Deleted it and reposted it from blogger compose window in order to fix it. Not sure what exactly was the issue, perhaps links are the issue in emailed posts.
  • Any < or > anywhere in the post has to be manually escaped, written as & lt ; and & gt ; respectively (without the spaces, of course). Otherwise blogger creates all sorts of problems, misrecognising them as html tags.

Thursday, August 07, 2014

Tuesday, August 05, 2014

opening multiple files in ROOT

If the filenames (or pathnames in this case) are sequential, this method in the ROOT forums would work.

while (i1<50) {
    f1 = new TFile(filename1,"READONLY");

and so on.

Otherwise this glob based solution might be useful.

Monday, August 04, 2014

ROOT canvas save problem

At first I could not save the ROOT plots, error mesg
Error in <tunixsystem::dynamicpathname>: Postscript[.so | .dll | .dylib | .sl | .dl | .a] does not exist in <tunixsystem::dynamicpathname> ...

Then found this discussion about this very same issue.

sudo apt-get install libroot-graf2d-postscript5.34


Now I can save as png or pdf / ps etc. But not gif. Error,
Error in <tasimage::writeimage>: error writing file

But pdf and png are fine for now :)

data analysis with ROOT

Got similar results to my previous post with Octave, using ROOT.

Had some hiccups. Initial testing of ROOT C macro failed due to that particular sample data file being empty! The file input was based on this basic.C example. After getting the samples into the ntuple,
while (1) {
      in >> runID >> sID >> energy >> pixelID;
      if (!in.good()) break;

I could do a simple linear plot just to check,

Then I created the same sort of 2D matrix as in octave - perhaps this is not necessary, but this is the way I did it :)

 for (int i=0;i<8;i++)
    for (int j=0;j
     energy2D[i][j]=0;    // initializing to zero, since 

                          // some i,j are not mentioned in the next loop

for (int i=0;i<nlines;i++)     {
    //pmtNumber pmtx is an 8x8 array,
    // assumed numbered rowwise.
    //for i=0:7, j=0:7,
    //i*8+j=pmtx. So
    jj= int(pmtx) % 8; //here we need to cast the float pmtx as an int
    ii= (pmtx -jj) / 8;

for (int i=0;i<8;i++)
 for (int j=0;j<8;j++)      {


Thursday, July 31, 2014

vGate 3.0 ROOT issues

First there were some issues with not being to type quotes inside vGate. Fixed that by going to Ubuntu's System Settings -- Keyboard -- Layout Settings, adding English US there and removing the English US extended international layout.

But ROOT on vGate 3.0 seems to be broken. Screenshot below. is not found in this case. Trying TBrowser b; also causes "segmentation violation" with some xpm files not found and so on.

Wednesday, July 30, 2014

ROOT font issue

On a fresh install of ROOT with Ubuntu Software Center on Ubuntu 14.04, this error on starting root

Couldn't find font "-adobe-helvetica-medium-r-*-*-10-*-*-*-*-*-iso8859-1",
trying "fixed". Please fix your system so helvetica can be found,
this font typically is in the rpm (or pkg equivalent) package
XFree86-[75,100]dpi-fonts or fonts-xorg-[75,100]dpi.

ROOT continues to run without problems. This issue is mentioned in this discussion, but xfs is not an available package for Ubuntu 14.04. Ignoring for now.

root -l doesn't bring up this error, nor the splash screen. Perhaps this font is used in the splash screen.

rough draft of output with Octave

Imported the ascii file output by the modified GEANT4 example I'm working with into a google spreadsheet. Manually sorted it by PMTNumber, manually added 0 photon counts for the missing PMTNumbers, exported the resulting photon counts into Octave as:

data = load ("Run-PMTHitOrder-PhotonCount-PMTNumber.csv")
for i = 1:8
  for j = 1:8


plotted it using this octave version of bar3:

Tuesday, July 29, 2014


In order to check if the GetPMTPos() is working in the modified GEANT4 example I'm working with but returning 0,0,0 due to some units problem, tried to include G4BestUnit in the cout. As an example, has
std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length")

For this to work, the include file needed is
#include "G4UnitsTable.hh"

But even with this, GetPMTPos() returns zeros - units set to femto-metres! So, we have to work with GetPMTNumber() instead, since that is working fine. 

Sunday, July 27, 2014

using vGATE 3.0 - a virtual machine with GATE, GEANT4, ROOT

vGATE is a virtualbox virtual machine image of Ubuntu 64 bit running GATE and associated tools. Tried it out. Running it on an Ubuntu 13.10 host, would not boot with the default virtualbox settings. On Windows XP, virtualbox was very flakey. The virtualbox control panel would come up only right after an install if "Run virtualbox" was ticked in the last step of the Install wizard. At other times, it would silently fail to start - the process would be seen in task manager for a few seconds before it vanished. Running the virtualbox image directly after a first run, by double-clicking (on Windows XP)

C:\Documents and Settings\Username\VirtualBox VMs\VGATE3VM\VGATE3VM.vbox

would work sometimes, and not work sometimes. Flakey. Also to be noted, the various issues of running Ubuntu with a non-3D-accelerated VM display - becomes very slow.

So I converted the virtualbox image to a VMWare image using the tool supplied with virtualbox,
C:\Full-path-to\VBoxManage clonehd --format VMDK vGATE_v3.0.vdi vGATE_v3.0.vmdk
The process took around half an hour for the 7 GB file on an external USB hard disk.

Running on VMWare Player was much more stable - at least for me on a WinXP host. Enabled 3D acceleration before starting the VM, of course.

Speeds - using a VM with 1.2 G ram, 1 processor,

SPECT benchmark - each acquisition of 37.5 sec was taking around 2 minutes to run.

Running the LXe example of GEANT4, from command-line the virtual machine was not too much slower than the bare-metal Ubuntu install. But with graphical display, was 3x slower.

VM - ./LXe

Run Summary
  Number of events processed : 3
  User=0.92s Real=1.17s Sys=0.09s

Ubuntu 13.10 bare metal - ./LXe

Run Summary
  Number of events processed : 3
  User=1.05s Real=1.06s Sys=0s

Using GUI, running .LXe and then running the macro with /control/execute inside the LXe application, 
VM on VMWarePlayer, WinXP Host - 

Run Summary
Number of events processed : 3
User=1s Real=6.7s Sys=1.57s

Ubuntu 13.10 bare metal - 

Run Summary
Number of events processed : 3
User=1.44s Real=2.11s Sys=0.07s

Some notes on the modified version of Geant4 LXe example

Some graduate students have worked on modifying the LXe example supplied with the geant4 package, here are my notes on understanding and troubleshooting the modifications.

  • cout needs << endl ; at the end, for flushing the buffer, especially when called inside a loop
  • "Find in Files" from commandline -
      grep "string to search for" /path/to/directory -R -n
  • the G4cout statements in the LXe example have an if statement before them, so the macro statement /LXe/eventVerbose 1 should be called if those are to be executed. 
  • the supplied macros in LXe example also have errors -
-  this is due to the modification noted in the Changes file, in 2013, November 22, 2013 P. Gumplinger (LXe-V09-06-12) - replace Update method and commands with ReinitializeGeometry. So we should just comment out the update lines in the macros. Four cc files have been modified in src -,, and

  • sets the gamma energy to be 140 keV.
  • pmt positioning is done originally in inside G4PVPlacement function -

    There, the PlacePMTs function calls have been commented out except in the xy plane.
  • G4double lxe_Energy[lxenum]    = { 3.001*eV , 3.000*eV, 2.999*eV, 2.998*eV };
  • is defined in - also


    G4double vacuum_RIND[lxenum]={1.,1.,1.,1.};
    (changed from 3 values in orig to 4 values here. seems to be a mistake. - refractive index should be a 3D vector, not 4D.

    In SetDefaults, sizes and numbers defined as

    fScint_x = 5.2*cm;
    fScint_y = 5.2*cm;
    fScint_z = 1*cm;
    fNx = 8;
    fNy = 8;
    fNz = 0;
  • has the added opfile <<  statements.
    Most of the G4couts in the original are after an if(fVerbose>0)
    that is, LXe/eventVerbose 1 must be set while running LXe for them to execute.
  • vis.mac the default visualization macro has
    /run/verbose 2
    /control/verbose 2

    setting these to 0 reduces some clutter.
  • Somewhere the process verbose is being set to 1, can't seem to override. So all hadron processes etc are listed.
  • 140 keV being deposited in modified version as against 511 in orig.
  • Energy weighted position of hits in LXe is being shown as non-zero in new and old, but in both cases, reconstructed position is 0,0,0

Thursday, July 24, 2014

some Ubuntu tweaks for general working

To add Open in Terminal to the right-click context menu for folders displayed in Ubuntu, followed this page
and installed with
sudo apt-get install nautilus-open-terminal

To install Adoble Flash Plugin, Software Center had Adobe Flash Plugin installer. But even after that, radiosai streams did not work - apparently that was due to absence of mp3 codec. Installing GStreamer plugins for mp3 and so on from Software Center solved that issue.

To avoid having to adjust the brightness every time on reboot, followed this workaround.
cat /sys/class/backlight/acpi_video0/max_brightness
to get the value for max brightness, and then put that or a corresponding value - I used 8 - at the end of /etc/rc.local as
echo 8 > /sys/class/backlight/acpi_video0/brightness

Apparently the correct solution is to fix it in grub, as given here

working with Geant4 on Ubuntu 13.10

Started some preliminary work with the Geant4 C++ toolkit for Monte Carlo simulations. The name comes from GEANT-3, GEometry ANd Tracking.

Also looking at GATE - Geant4 Application for Tomographic Emission as mentioned in this pdf.

Installing Geant4 ran into QT related errors. The solution was here, editing

to have at the end of the if defined includes

#if defined(Q_WS_MAC)
# include
#   include
# endif

It turned out that installing in a user directory was more convenient, as that was the method in the install guide. Installed versions 9.6 and 10.0, since the GATE was supposed to work with 9.6. My make string was

make -j2 (using two cores for building) ran for 50 minutes to build geant4 v9.6.
make by itself (only one core) took 80 minutes for 10.0.

With this installation, the make string for applications using Geant4 was
cmake -DGeant4_DIR=/home/hari/geant4/lib/Geant4-9.6.3 ../LXe
and so on.

The LXe example needed the path to low energy data to be defined as an environment variable, like
export G4LEDATA=/home/hari/geant4_10/share/Geant4-10.0.2/data/G4EMLOW6.35

In Ubuntu, one method to set environment variables without reboot seems to be to edit /etc/environment to add at the bottom
and then call
source /etc/environment
at the bottom of .bashrc - but that did not seem to work - have to put export statements in .profile, as mentioned in the ubuntu help file. And that will work only after logging in again.

Once these environment variables are set, then the make string does not need the path to Geant4 and so on.

Thursday, July 17, 2014

call forwarding from BSNL landline

According to this BSNL page,
we can activate call forwarding using the code 114 followed by number to which call is to be forwarded. Did not work in my case. The CLI announcement service at 164 also did not work, so perhaps all these services are not available at our location. 

Wednesday, July 16, 2014

Sunday, July 06, 2014

Avidemux issue

Found that my installation of Avidemux, version 2.6 32 bit, doesn't load files when the VGA cable for 2nd monitor is connected and monitor 2 is enabled with "Extend my Windows desktop onto this monitor". With single display, loads fine. 

Friday, June 20, 2014

mysql database table crash and recovery

There was a power outage yesterday at the studio, and the UPS also tripped. PB reports:
The phplist mailist list server gave the error message

> Message:
> Database error 144 while doing query Table './path/to/tablename' is marked as crashed and last (automatic?) repair failed
> Currently running the repair on the table tablename​ as suggested here:
> cd /var/lib/mysql/path/to/relevant/db
> myisamchk -r tablename.MYI
> ​looks like its going to take a long time.....​

and later,

Recovery successful.

​This was done by stopping mysql database:

service mysql stop
myisamchk -r tablename.MYI

- recovering (with sort) MyISAM-table 'tablename.MYI'
Data records: 0
- Fixing index 1
- Fixing index 2
- Fixing index 3
- Fixing index 4
Data records: 119477877

service mysql start

testing schedule page and audio search page accessibility with screen reader software

We got a report that the audio search results were not accessible with JAWS 14.137 screen reader software. The google chrome accessibility page lists JAWS and NVDA. Downloaded and tested both. Found JAWS 14.0 working perfectly fine with our audio search page, with Firefox and Chrome. Also with IE8 (on my machine which has Win XP, highest version of Internet Explorer is IE8). Also fine on NVDA, which is free, as against JAWS which is $1000. Probably reasons, some of which I also faced:

1. Opening the page in a new tab instead of a new window causes problems. Open all pages in new windows instead.
2. Using old version of browser may cause issues on - upgrade to latest version of browser.

Tuesday, June 17, 2014

Google Apps Education edition

I had a query asked of me, whether the Google apps for a domain was the "Free edition" or the "Education Edition". Also about the number of users allowed for Edu edition. Here was my reply.

Google apps Education edition allows unlimited users for educational institutions, and 3000 users for other non-profit institutions.!topic/apps/fptTBRXfGPM

You can check which edition you have - Education edition or not - by seeing how much space each user gets. According to this page,
Education edition users get 30 GB, Free edition users get 15 GB.

This is seen at the bottom of your inbox, "Using 4.13 GB of your 15 GB" or "Using 4.13 GB of your 30 GB" or something like that.

Friday, June 13, 2014

source timeout on icecast

On May 21, we had changed the source timeout property on icecast from 10 to 40 seconds hoping to reduce the number of times the server dropped connection. This strategy suggested by PB seems to have worked, since then the connection has not dropped even once when I was operating the live broadcast. Edited  icecast_all.xml  and  icecast_tel_live.xml  and made the source timeout 40 sec. The original suggestion was as below.

changing default browser font for other languages

Using this post as a guide, changed the default font for Malayalam on Firefox to Rachana, which is more readable.

Tools -> Options -> Content tab -> Advanced button in default fonts -> Fonts for: chose Malayalam in the drop-down list, and changed the options other than Proportional to Rachana.

Thursday, June 12, 2014

recordings with M-Audio MobilePre

As noted in an earlier post, the M-Audio MobilePre is an el-cheapo USB preamp interface. But I had to rely on that for some trial recordings.

Using a Maxim mic, laptop sound card noise floor is around -50 dB

M-Audio MobilePre with Maxim mic noise floor is around -60 dB

Using dynamic mic - Ahuja ASM-780XLR - results were similar.

Nose floor rises to -40 dB when capture slider increased to 80%.

The XLR input on the MobilePre seems to be defective - S/N almost unity! -18 dB of noise

Monday, June 09, 2014

"NEW" label on schedule page

As requested, PB has added the "NEW" label on our schedule page for "Concert" category also. He had to modify the csv generation local code as well as the schedule page code for this.

Wednesday, June 04, 2014

brief outage

There was a brief outage of radiosai services. The issue was with Cloudflare dns returning SERVFAIL for our domains. Conversation with Cloudflare:

Thursday, May 29, 2014

avfs - Avisynth filesystem

The simpleslug pages mentioned AVFS. Tried it out. A 10 minute 2K planetarium show - Solar Quest - is seen as a 250 GB file after mounting. After Effects 4.1 complains error retrieving frame - not enough storage is available. But GL_warp2Avi works, even though it has the 2 GB file size limit for actual files, it seems to handle larger virtual avi files. Tested with 18 GB credits virtual avi file. 

Wednesday, May 28, 2014

replacing an acrilconvex mirror with a vialux mirror

From 2011, our fulldome projection has used an Acril Convex first surface spherical mirror. Last year, I'd purchased a used Vialux mirror. Today, we tried out the Vialux mirror, and decided to leave it installed for one show as a trial.

The Vialux mirror mini-review from Paul Bourke is here. As he notes, the extraneous reflections are more for the vialux mirror. The overall effect in the theatre is to reduce contrast and increase the brightness of the black levels. So we'll use the vialux only as a backup. Also did some back-of-the-envelope calculations of their radii of curvature.

After putting back the Acrilconvex mirror, I wonder if the perception of higher black levels was just an illusion. Maybe I'll try a light meter test next time, with a suitable frame on both mirrors. 

radius of curvature of spherical mirror

Did some back of the envelope calculations for the radius of curvature of our spherical mirrors, and with the help of the alternate segment theorem at this page, measuring x and y with a ruler got me r, the radius of curvature.

For the Acrilconvex mirror, 2x = 56 cm, y = 14.5 cm, so r = ( (28)^2 / 14.5 + 14.5 ) / 2 = 34.3 cm

For the Vialux mirror, 2x = 56 cm again, but y = 12 cm, so r = ( (28)^2 / 12 + 12 ) / 2 = 38.7 cm

Tuesday, May 27, 2014

simpleslug upscale

Checked out simpleslug upscale. Not directly useful for me, since the output is set to presets like 1080p 720p etc. Internally, it uses Blackman Resize, which is similar to, but better than Lanczos with higher number of taps. From this discussion linked on that page, it looks like sinc resize with avisynth might yield the best results for upscaling. But in our case, the loss of clarity seems to be more due to the codec used for the lo-res videos.

Update (2 June): As mentioned by the SimpleSlug author in the comments, was able to use simpleslug upscale with SimpleSlugUpscale(prog=true,outwidth=2048, outheight=2048)

As compared to doing Lanczos resize + Sharpen in Virtualdub below.

Monday, May 26, 2014

Software Bisque Seeker - docked windows, IMAGE

Found that starting Seeker with only one monitor leads to a docked visuals window. Starting Seeker with two monitors makes it un-docked.

Also, found that <IMAGE> does not render at all in fisheye mode. Directly changing <IMAGE> to <DOMEIMAGE> did not put the images in suitable positions.

Rendering of flat movie Explorers of Mars,

Rendering of dome movie of Explorers of Mars, with <IMAGE> changed to <DOMEIMAGE>

Sunday, May 25, 2014

Image Sequence Scanner

One of the many tools to check a sequence of images for corrupt or missing files - ISS or Image Sequence Scanner. But it does not detect errors in files like this bad frame,

why I removed ads

When I first started this blog, I had clicked through and added Adsense as Google recommended. But then, months of zero earnings later, I removed it, but did not post about it. According to this page, it's advisable not to put ads on your site if your traffic is below 10,000 page-views a month. Mine is only 1,400, so it really did not make sense to put ads on this blog. 

Thursday, May 22, 2014

resources from newtonscannon

Checking out the blog, found these useful resources:  has free samples.
compiz lighttwist plugin for blended large desktop. Could possibly be useful for blended two-projector dome setup?

Wednesday, May 21, 2014

some links for miscellaneous jobs

Hypercube Time Stretcher for stretching wav files to sync to video.

Stackoverflow discussion about how to map an ffmpeg frame to an opengl texture. for analyzing web page load speeds - and an old link to a test run in 2011.

Online tool for Hex color-code generation.

Frame-rate up-conversion virtualdub filter. Increase frame-rate by integer values - 2x, 3x and so on, interpolating frames.

The frame interpolation above could be used along with slow-motion for virtualdub ideas in this thread

Tuesday, May 20, 2014

more experiments with Software Bisque Seeker Theater Edition

More trials with Software Bisque Seeker Theater Edition:

  1. The About Seeker menu item and Solar System Map feature work when not in "Fulldome" mode, and when the flat screen version of "None" is selected in Settings -> Dome Projection.
  2. When writing scripts, leaving a space after the command tag and the first argument is a must. Wasted a lot of time wondering why <WAIT>20 was not working - it should be <WAIT>  20
  3.  <DOMEIMAGE> doesn't work with jpg files. Targa files as given in the example are fine.
  4.  <DOMEIMAGE> works best for small images - distorts panoramas etc.
  5. <QUIET> 0 makes not only sound effects, but also a counter of time elapsed while running scripts in flat screen mode - not in fulldome mode. 
  6. The spaceship movement seems to be auto-linked to the nearest object. 
As an example for the last point, after doing <WARP> "Earth" , using spaceship thrusters to move towards the moon and creating a waypoint there, when time is advanced, the camera and ship movement sync to make the moon centred. This is sometimes a problem, like when we want to make the moon move across the ecliptic. The moon as seen from earth is displayed too small to be visible in fulldome mode. But if we move close enough to the moon as to make it visible, camera and ship are no longer locked to earth, but are locked to the moon!

Also, access to the Software Bisque support forums are linked to the subscription. After one year subscription elapses, "Access Denied" to the support forums. In my case, "Access Denied" even 12 days before expiry of subscription. Can't even reply to my own bug-report post!