Saari Development

Ali Rizvi's Technical Blog as a Professional Software Development Engineer

Archive for the ‘general’ Category

Siri Sucks! Worst User Experience of Any Voice Based Assistant

leave a comment »

Siri is the worst implementation of voice based assistant today. Apple has done very little to improve it overtime so far. I have been using iPhone for many generations of iPhone now and am constantly disgusted and frustrated by Siri.

In contrast, whenever I have used Google’s implementation of voice based assistant either on iPhone or somebody else’s Android it has never let me down. Google’s implementation is far superior. One of the ways it is superior is it does not need an active internet connection to dial a number from my address book or many other local tasks.

Being a software developer I cannot understand why Siri cannot do anything without internet connection. There is no need to send everything to the cloud with a potent device like iPhone in hand. I remember my early MS Window Mobile (circa 2006) could do much better voice recognition than Siri.

I do not understand why it is hard to voice dial people in my contacts or detect their name also why there is no feature to announce who is calling on an incoming call.

Bottom line Siri sucks and if you are using iPhone you are stuck with it. If Apple can’t do a good job improving Siri at least they should let you plugin your own voice assistant as a first class provider (system wide not just in a particular app).


Written by imsaar

November 2, 2015 at 2:03 pm

Posted in general

How I got Flash working on Kindle Fire HD 8.9″?

with 11 comments

The Amazon Customer Experience was not very eloquent about flash being not supported anymore and wasted my time.

I ended up on some good Amazon customer forums entries that helped me, here is the best forum entry I found.

Here are the steps to get Flash working on your Kindle Fire HD 8.9″:

  1. Download ES File Explorer from Amazon App Store.
  2. Download Dolphin HD apk from your Silk Browser.
  3. Download Adobe Flash Plugin from your Silk Browser
  4. Open ES File Explorer app and go to Download folder.
  5. Open the Dolphin HD apk file. You will get a prompt to about Application Install Blocked.
  6. Press the Settings button and Allow Installation of Application from unknown sources.
  7. Now hit the back button (or go back to ES File Explorer and click on Dolphin HD apk again).
  8. Next click on Adobe Flash plugin also and open it using Dolphin HD browser and finish installing Flash.
  9. Open Dolphin HD browser app and open your favorite flash website.

Written by imsaar

November 21, 2012 at 6:55 pm

Posted in general

Tagged with , , , , , ,

Kindle Fire HD 8.9″ Experience

leave a comment »


Great affordable price.

Amazon Free Time feature for have a sandbox account for children with set allowed apps, books and daily time limits. This is a main reason to get Kindle Fire HD for me (I have iphone and ipad and can act as an Apple fanboy at times).

Integration of all the Amazon Services in one device. Audible, Books, Apps etc.

Amazon App Store let’s you know if this app is works for your Android device. A major improvement on what I have seen for other Android Tablets



The power and volume buttons are very hard to press. They are pretty much flushed with the body and hard to find at times without looking hard for them.

Customer Service is not educated properly on all the features, specially Immersive Reading Experience. If you have an issue with that please contact Audible Support.

Flash does not work and is not supported anymore but not their fault as Adobe has stopped supporting it. I finally found a way to get Flash working on Kindle Fire HD 8.9″

Immersive Reading Experience can very frustrating as I downloaded both the Book and Narration and still did not work for me for some books. Even working with customer support for hours did not resolve it.


Written by imsaar

November 21, 2012 at 6:41 pm

Posted in general

Tagged with , , , , ,

Converting space separated output to one per line

leave a comment »

Here is the problem I was faced with. I wanted to check if I was part of a particular group and I did the shell groups command to find out.

Unbeknownst to me I was part of a tone of groups that included some complicated long names with backslashes (\) in them.

I thought it would be quick to grep for the particular group name if all the output was on separate lines instead of space separated on one line.

First I thought I can use cut command to do that but it turns out cut is not idea for this. It is more suitable if you have multiple lines of data and wanted to get the same column out of each of these. Something like output from ps.

Finally I achieved it really easily with with tr command. Here is how the solution looks like:

groups | tr ' ' '\n' | grep group_i_was_looking_for

Written by imsaar

January 13, 2012 at 1:04 pm

Posted in general

Vim: .gvimrc on Mac

leave a comment »

" Copied from $VIMRUNTIME/gvimrc_example.vim

" An example for a gvimrc file.
" The commands in this are executed when the GUI is started.
" Maintainer: Bram Moolenaar <>
" Last change: 2001 Sep 02
" To use it, copy it to
" for Unix and OS/2: ~/.gvimrc
" for Amiga: s:.gvimrc
" for MS-DOS and Win32: $VIM\_gvimrc
" for OpenVMS: sys$login:.gvimrc

" Make external commands work through a pipe instead of a pseudo-tty
"set noguipty

" set the X11 font to use
" set guifont=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1

set ch=2 " Make command line two lines high

set mousehide " Hide the mouse when typing text
set antialias " setting antialiasing for guifont

" Make shift-insert work like in Xterm
map <S-Insert> <MiddleMouse>
map! <S-Insert> <MiddleMouse>

" Only do this for Vim version 5.0 and later.
if version >= 500

" I like highlighting strings inside C comments
let c_comment_strings=1

" Switch on syntax highlighting if it wasn't on yet.
if !exists("syntax_on")
syntax on

" Switch on search pattern highlighting.
set hlsearch

" For Win32 version, have "K" lookup the keyword in a help file
"if has("win32")
" let winhelpfile='windows.hlp'
" map K :execute "!start winhlp32 -k <cword> " . winhelpfile <CR>

" Set nice colors
" background for normal text is light grey
" Text below the last line is darker grey
" Cursor is green, Cyan when ":lmap" mappings are active
" Constants are not underlined but have a slightly lighter background
highlight Normal guibg=grey90
highlight Cursor guibg=Green guifg=NONE
highlight lCursor guibg=Cyan guifg=NONE
highlight NonText guibg=grey80
highlight Constant gui=NONE guibg=grey95
highlight Special gui=NONE guibg=grey95

" over riding the above settings with my preferred settings
colorscheme torte
set background=dark

Written by imsaar

May 22, 2007 at 6:33 am

Posted in general

Vim: .vimrc on Mac

leave a comment »

" Copied from $VIMRUNTIME/vimrc_example.vim

" An example for a vimrc file.
" Maintainer: Bram Moolenaar <>
" Last change: 2002 Sep 19
" To use it, copy it to
" for Unix and OS/2: ~/.vimrc
" for Amiga: s:.vimrc
" for MS-DOS and Win32: $VIM\_vimrc
" for OpenVMS: sys$login:.vimrc

" When started as "evim", evim.vim will already have done these settings.
if v:progname =~? "evim"

" Use Vim settings, rather then Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible

" allow backspacing over everything in insert mode
set backspace=indent,eol,start

if has("vms")
set nobackup " do not keep a backup file, use versions instead
set backup " keep a backup file
set history=50 " keep 50 lines of command line history
set ruler " show the cursor position all the time
set showcmd " display incomplete commands
set incsearch " do incremental searching
set number " show line number
set tabstop=2
set shiftwidth=2
set expandtab
set textwidth=80
set background=dark

set gfn=Monaco:h14 " setting to a good Mac OS X font

" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
" let &guioptions = substitute(&guioptions, "t", "", "g")

" Don't use Ex mode, use Q for formatting
map Q gq

" This is an alternative that also works in block mode, but the deleted
" text is lost and it only works for putting the current register.
"vnoremap p "_dp

" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
syntax on
set hlsearch

" Only do this part when compiled with support for autocommands.
if has("autocmd")

" Enable file type detection.
" Use the default filetype settings, so that mail gets 'tw' set to 72,
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
filetype plugin indent on

" Put these in an autocmd group, so that we can delete them easily.
augroup vimrcEx

" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78

" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
autocmd BufRead *.rhtml set filetype=eruby

augroup END


set autoindent " always set autoindenting on

endif " has("autocmd")

Written by imsaar

May 22, 2007 at 6:20 am

Posted in general

Vim: _vimrc on windows

leave a comment »

set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin

set diffexpr=MyDiff()
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let eq = ''
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
let cmd = $VIMRUNTIME . '\diff'
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq

set guifont=Lucida_Console:h10:cANSI
colorscheme torte

Written by imsaar

May 22, 2007 at 6:08 am

Posted in general