Friday, May 11, 2018

Linux Mint Live CD / DVD

Some notes for Linux Mint Live CD / DVD


  1. username is mint, and no password.
  2. sudo does not ask for password.
  3. to take a backup, can do sudo cp -R /source/folder /destination/folder
  4. to switch between screens, Ctrl+Alt+F2 or Ctrl+Alt+F7 etc - need to press Fn also on Mac keyboard.

web hosting on github

A useful option for small static websites -

https://help.github.com/articles/using-a-custom-domain-with-github-pages/

https://pages.github.com/

The limits are quite generous - https://help.github.com/articles/what-is-github-pages/

"GitHub Pages sites are subject to the following usage limits:

  • GitHub Pages source repositories have a recommended limit of 1GB .
  • Published GitHub Pages sites may be no larger than 1 GB.
  • GitHub Pages sites have a soft bandwidth limit of 100GB per month.
  • GitHub Pages sites have a soft limit of 10 builds per hour."

Sunday, May 06, 2018

C++ programming - using fstream in a cross-platform manner

Some notes about making use of fstream in cross-platform code - 

Some interesting methods are discussed at
https://stackoverflow.com/questions/9739948/write-a-file-in-a-specific-path-in-c/40980510#40980510

In Visual Studio,
disable deprecation, use _CRT_SECURE_NO_WARNINGS - 

Configuration Properties >> C/C++ >> Preporocessor >> Preprocessor Definitions >>  _CRT_SECURE_NO_WARNINGS

A working code snippet - 

    char path[80];
    char foldername[80];
    sprintf(path,"homeuser/file.txt");
    sprintf(foldername, "homeuser");
    CreateDirectoryA(foldername, NULL);
    std::ofstream file(path); //open in constructor
    std::string data("data to write to file");
    file << data;

Friday, May 04, 2018

making an alexa skill

The Amazon Echo Dot, Google Home Mini, etc are inexpensive ways to listen to streaming radio without the need for interacting with a screen. The Echo can be used with Skills to make it easy to accomplish a particular task. Though in theory, radiosai is available on tunein and it should be possible to listen via tunein, of late, it doesn't seem to work. Alexa says, "I can't listen by genre on Tunein". So, tried to make an official Radiosai skill.

There was already a Radio Sai skill, but that one was missing AfriStream and AsiaStream. So, decided to try to implement this skill, with some improvements, as an official radiosai skill.

Changes in the user interface - the screenshots given here are no longer similar to Amazon's AWS console or the Skills console. Instead of uploading the sample utterances as a text file, I manually created the utterances in the Skill console using the wizard. Also added some confirmation before playing each stream, like


var message = 'Playing Bhajan Stream.';
this.response.speak(message);
this.attributes['stream'] = 'BhajanStream';
controller.play.call(this);

and also added a stop call to the AudioPlayer -

'AMAZON.CancelIntent' : function () { 
// adding the line below to stop the audio player 
controller.stop.call(this); 
////////////// 
var message = 'Good bye.'; 
this.response.speak(message); 
this.emit(':responseReady'); 
}

It looks like only the playModeIntentHandlers are active - the others don't seem to be called. Have submitted for being made available to the public.

Edit: Update May 11 -
1. Bug fixes by the owner of this repository, looks like the SDK had some changes so the zip file needed to be changed.

2. How to build an Alexa audio streaming skill from a template - YouTube video - lots of similar resources available

3. Audio player skill sample from Amazon, for multiple streams. 

Wednesday, April 25, 2018

Tuesday, April 17, 2018

Notes on compiling software lockin amplifier

Abbreviated notes from the software lock-in amplifier at https://github.com/hn-88/SoftwareLockin/

French lockin works on USB stick. Lubuntu 12.04

edited the pro files to add
QT += widgets

vumeter.h:40:25: fatal error: QtGui/QWidget: No such file or directory
on Mint 18.1

edit h files to make QtGui/QWidget QWidget

make clean
qmake multi.pro
make


error: ‘const class QString’ has no member named ‘toAscii’ - solved using

(was solved by install of package qttools5-dev-tools
more info here...) not used

QByteArray QString::toAscii() const
Returns an 8-bit representation of the string as a QByteArray.

This function does the same as toLatin1().

So, replaced in lockin.cpp and dockoutput.cpp

output has NaN

Edit: 20 Apr
ui_lockingui.h:13:29: fatal error: QtWidgets/QAction: No such file or directory
compilation terminated.
Makefile:406: recipe for target 'lockingui.o' failed
make: *** [lockingui.o] Error 1

probably have to find replace again?

Also QWidgets/QApplication

changed to QApplication etc - find replace QWidgets/ with nothing.

sudo apt-get --reinstall install libqt4-opengl-dev

Maybe if I upload the makefile?



Friday, April 13, 2018

USB to TTL link dump

A collection of links about communicating with serial control lines over USB - Arduino etc - 

Tuesday, April 10, 2018

bouncing emails in google groups

Maintaining google group by deleting bounced emails. And if needed, re-adding them. 

https://support.google.com/a/answer/7552660?hl=en

Edit: Users can reset their bounce status by going to https://groups.google.com/bounced?pli=1 or https://groups.google.com/a/example.com/groups/bounced?pli=1
next to Bounce Status, email status -> Reset bounce status. (which appears only if it is bouncing.)

Monday, April 09, 2018

Arduino IDE on Linux Mint

From https://playground.arduino.cc/Linux/Mint/
we should probably not use
sudo apt install arduino
because it is outdated or non-standard, and we should instead use the 64 bit binary from 
https://www.arduino.cc/en/Main/Software

Saturday, April 07, 2018

email slowdown and possible fixes

From March 24 or 25, our mailing list started having a lot of delays in email sending, especially to gmail.com. Found the following issues:

1. For some gmail emails, the server was trying the ipv6 address, and not able to reach it - like

Mar 25 09:34:15 krishna postfix/smtp[19788]: connect to gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b]:25: Network is unreachable

Mar 25 09:34:28 krishna postfix/smtp[20163]: connect to ASPMX.L.GOOGLE.COM[2404:6800:4003:c02::1b]:25: Network is unreachable

This was probably due to a router change at the Studio.

Did this -
https://support.plesk.com/hc/en-us/articles/213398289-Specifying-Postfix-configuration-of-IPv4-IPv6-protocol-support
ie
adding the option:

inet_protocols=ipv4

to the /etc/postfix/main.cf Postfix configuration file. And then as root,

# postfix reload
# service postfix restart

That worked, the emails went out. But the email sending rate was only around 1000 emails per hour, as reported by
# qshape incoming active deferred

2. A lot of mails were being deferred instead of bounced by gmail, OverQuotaTemp.
cat  /var/log/mail.log | grep OverQuotaTemp | wc -l
5878
PB unconfirmed those emails using
cat /var/log/mail.log | grep OverQuotaTemp | grep 'to=' | grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*' | sort | uniq -i

Then also for bouncing emails, like
cat  /var/log/mail.log | grep "does not exist"
cat  /var/log/mail.log.1 | grep "does not exist"
cat  /var/log/mail.log.1 | grep "553 Mail from 111.93.16.162 not allowed"
cat  /var/log/mail.log | grep "status=bounced"
cat  /var/log/mail.log.1 | grep "status=bounced"

3. Mails were still going out slowly, with the usage on the internet port being like

Next try was to speed up sending to gmail.com domain, since the other emails were going out OK. Then, added these two lines to /etc/postfix/main.cf - 

maximal_queue_lifetime = 2d
default_destination_concurrency_limit = 100

decreasing lifetime from 5d to 2d and increasing concurrency limit from 20 to 100. That seemed to improve things - the outgoing rate went up to almost the peak rate - 

and from the next day, the emails were going out like









Thursday, April 05, 2018

notes on startup / shutdown times

On a machine with dual boot,

Time taken for Windows 7 to boot, open firefox and open youtube.com - 3:30 minutes.
Time taken for Linux Mint 18.3 to boot, open firefox and open youtube.com - 1:15 minutes.
Similarly, Windows takes 40 seconds to shut down, while Linux shuts down in less than ten seconds.
Equivalent of Hotspot Shield, if you want to watch something which is blocked - have installed PureVPN extension for both Chrome and Firefox...

Linux vs Windows 7 brief speed test

N's Lenovo B640 laptop had become old and slow. Tried dual booting with Linux Mint, found quite an improvement. 

Time taken for Windows 7 to boot, open firefox and open youtube.com - 3:30 minutes.

Time taken for Linux to boot, open firefox and open youtube.com - 1:15 minutes.

Similarly, Windows takes 40 seconds to shut down, while Linux shuts down in less than ten seconds.

Thursday, March 29, 2018

finding ip ranges via ASN

To obtain all the IP ranges of an ISP or large organization, got a procedure from this quora post -

https://www.quora.com/How-can-I-obtain-a-list-of-IP-addresses-owned-by-a-specific-company-I-would-like-to-provide-a-targeted-offer-to-site-visitors-if-they-work-at-a-certain-company-I-would-like-to-get-a-list-of-the-IP-addresses-that-this-organization-owns


https://www.peeringdb.com/net/1903 has Airtel's ASN.

Then, we can use that ASN in this whois query -

whois -h whois.radb.net -- '-i origin AS9498' | grep -Eo "([0-9.]+){4}/[0-9]+" > airtel.txt
whois -h whois.radb.net -- '-i origin AS9829' | grep -Eo "([0-9.]+){4}/[0-9]+" > bsnl.txt

Wednesday, March 28, 2018

boot from grub - link dump

https://www.linuxquestions.org/questions/linux-software-2/booting-windows-from-the-grub-prompt-275446/

root (hd0,0)
makeactive
chainloader --force +1
boot

But grub 2 is different.
https://www.linux.com/learn/how-rescue-non-booting-grub-2-Linux

grub> set root=(hd0,1)
grub> linux /vmlinuz root=/dev/sda1
grub> initrd /initrd.img
grub> boot

https://unix.stackexchange.com/questions/77263/use-grub-rescue-to-boot-from-windows-xp-partition-cd-or-usb

set prefix=(hd1,1)/grub
set root=(hd1,1)
insmod normal
normal

https://www.aioboot.com/en/boot-windows-grub2/

from grub rescue prompt,
search -s root -f /NTDETECT.COM
drivemap -s hd0 $root
ntldr /ntldr
boot

https://www.gnu.org/software/grub/manual/grub/grub.html#DOS_002fWindows

parttool (hd0,1) hidden-
parttool (hd0,2) hidden+
set root=(hd0,1)
chainloader +1
parttool ${root} boot+
boot

https://www.aioboot.com/en/boot-windows-grub2/

http://forums.justlinux.com/showthread.php?153121-Fun-with-GPT-partitioning

unable to make XP boot from a cloned volume on Intel Mac

Just a few lines of notes - trying making other partitions hidden to make XP boot - doesn't work, since partition is GPT, grub says hidden - unknown argument or whatever.

using dd to clone a usb drive

From
https://www.garron.me/en/bits/convert-store-copy-bootable-usb-iso-file-another-usb.html

Tuesday, March 27, 2018

Linux Mint 18.1 not booting - solved

Linux Mint was not booting into graphical mode. It was not even dropping me into an emergency shell - a dialog box about not being able to connect to upstart would appear, your session lasted only 10 seconds etc, and the window manager would restart. Initially I thought this was due to some problem related to booting as in my previous post. But then, saw this post on the Linux Mint forums. So, hit Ctrl Alt F2 to get a shell, (in my case, fn+Ctrl+Option, since this is a Macbook), did
  apt remove virtualbox-guest*
and rebooted OK. 

Monday, March 26, 2018

link dump - ALSA etc - for software lock-in amplifier

ALSA tutorial for beginners - 2004 - http://www.linuxjournal.com/article/6735?page=0,1


Checking the code and compiling from https://www.av8n.com/physics/lockin.htm

http://www.qtcentre.org/threads/53452-QtGui-QApplication-No-such-file-or-directorty

QApplication and Qwidgets derived classes are in widgets module in Qt 5 so to fix that you need to add QT += widgets in the .pro file and run qmake and also use #include <QApplication> instead of #include <QtGui/QApplication> (and the code becomes compatible with both Qt 4 and 5), you can read more here

Or download 10.04,
and
https://help.ubuntu.com/community/Installation/FromUSBStick#Install_and_run_Startup_Disk_Creator_alias_usb-creator