Saturday, March 21, 2020

Vim Videos That Wow! Me

I have been using vim for years, but these two videos change how I use vim tremendously.

Mastering the Vim Languages

Chris Toomey give a talk on vim language. If you wanna learn why vim is so great or use vim more efficiently, you should start with this one. Chris also includes lots of resources in this talk if you want to follow deeply into this topic.

 Let Vim Do The Typing

Presented by George Brocklehurst, talking about vim completing, basically. I found the talk very practically useful and somewhat different form Toomey’s talk.

Saturday, August 25, 2018

Tracking movement of the moon shot

Everyday Challenge: Day 15,

With knowledge how to take a moon picture from yesterday post, I now can combine those pictures into an interesting one.

By taking each moon 5 mins apart on a tripod, and combine them with photo editing tool like Gimp (sorry, not photoshop). I am able to track the moon moves across the night sky.

Gimp is a powerful tool, so much so I have to sense a decent amount of time to learn how to combine to create this picture. Anyway, it worths to try

Thursday, August 23, 2018

Moon shot with A7Rii Super35 + Canon 200mm F/2.8@ F11.

This moon shot was taken by A7Rii using Super35 mode, with Canon 200mm F2.8@F11 (equivalent to ~ 300mm).

To get this shot, you need to take the shot underexposure, which allows the camera to see all detail of the moon surface. Otherwise, you can only see a big white ball.

By using the lowest possible ISO, the noise is reduced significantly. By setting the aperture to F11, the lens will perform at the best and also further underexposure the image. By manually setting speed to 1/200-1/300, I can simply handheld. Make sure, that you do not underexposure too much.

A7Rii in Super35 mode made 200mm to be 300mm, which help a bit.

Here you have it!

Wednesday, August 22, 2018

Is your camera sensor clean?

Let ask a question, is your camera sensor clean?

Here how I answer this question. I take out the camera, in this case, a Sony A7R, and put on my trusty Canon 100mm Macro with MC11. I set the aperture to F11 and take pictures of the sky. I choose an area of that sky that quite featureless.

The key is to set aperture to F11. This allow the dust on sensor appear on the picture. If you use low aperture like, F2.8, F4, the dust images get blurry too much and you can not see them. If you see one at this aperture, the dust has to be a big one.

The first picture is the jpg come out directly from the camera. Look closely, you will see a few blurry spots here and there, especially the lower right corner of the pictures. I think it is not so bad. In normal shooting, the dust images won't show up in the pictures.

Could I say this sensor clean?

Far from it! ... Let turn up the contrast, as shown in the second picture, then a lot more dark spot show up.

It is impossible to keep your sensor dust free because every time to change lens, some dusts will get into your sensor.

So there is no "big" dark spot show up in the pictures, I probably won't do any thing about it. May be, I just use "Rocket-Air Blower" to blow some dust away from the sensor If I see some spots. Otherwise, I probably send the camera to clean ... and that $$.

Monday, August 18, 2014

Setup Brother Printer on 64bits debian base linux, like CrunchBag or Ubuntu

I just get a new printer - Brother HL-2270DW series. It's compatible with linux and brother have drivers for it! Unfortunately, the driver is for 32bits (i386) systems. So what next?

I assume USB connection.

It is simple really. All we have to do is to config our system to support multiple architecture, aka Multiarch, and then use the 32bits drivers. You can read about debian Multiarch here.

First we have to add i386 architecture support to your system by:

## add i386 support
$ dpkg --add-architecture i386
## and update the system
$ apt-get update
Then we need the add i386 support library. Since la32-libs is replace by libstdc++:i386, so we have to do the following
## add i386 support libraries
$ apt-get install libstdc++:i386
Once we finished adding support library for our i386 architecture, then we just simply install drivers downloaded from Brother website:
## install drivers start from "LPR printer driver"
$ dpkg -i hl2270dwlpr-2.1.0-1.i386.deb
## and then "CUPSwrapper printer driver"
$ dpkg -i cupswrapperHL2270DW-2.0.4-2.i386.deb
We can download the drivers from brother website here:

To confirm that drivers install correctly, just run:
$ system-config-printer

Saturday, April 5, 2014

Linux on Android using Complete Linux Installer: Hiccup and Fix!

The benefit of having a full linux distribution running on android device, such as Asus transformer Prime/Infinity, is up to who you are. For me as a developer, it's really a great platform for me to play around with new language, practice new skill and, experiment with new tools without mass up with my work notebook. For sys admin, it's quite a nice to have a full bowl linux to work on ... And I think Complete Linux Installer does a good job helping me to setup a linux distribution on android device.

Nothing perfect thou. There are a few hiccup ... a few annoying issues which may or may not have a fix for it. Keep in mind, the app allow to have a full linux running on android by chroot to a linux image, and connect to it with vnc or ssh. There will be some issues that there is no solution for it (or there is but I don't know :p)

Where is my eth0?

First hiccup after boot the system is this error message:
If connecting from a different mach ... android device use the address below:
eth0: error fetching interface information: Device not found

This is a simply the /root/ expect the network interface to be "eth0". Unfortunately, that is not always true. To find out which interface you have, use "ifconfig". In my case, it is "wlan0".

To fix this, simply edit /root/ script. Change "eth0" to "wlan0", in my case, and you will be done.

How much disk space I have?, "df" issue

This is quite annoy when simple command like "df" (diskfree) doesn't work at all. It's not report any thing. This is because the "df" command can not read file table which provide this information. Fortunately, there are easy solution for issue if all you want is to see how much disk space available.

By simply alias "df" to take which file system to report on, it's solve the problem. This time you edit /root/.bashrc script to add alias, as shown. This fix is only report disk space on "/" and "/sdcard", and it's not useful for other system tools which require to have device information.

Where is my external sdcard?

Like me, you probably have external microsd card install with the system. Is the "/sdcard" refer to this external sdcard? ... No it's not. It's the internal sdcard that come with the prime tablet.

Sorry to say, I don't know the answer to this question because the external sd card is mount on "/Removable/SD" which can not be access in the chroot system. There might be a way to allow access to /Removeable/SD from the chroot system, but I do not know now. If you know, please comment below. :)

Can I create normal account? What do I need to know?

Obviously, running the system as root is not a good idea. First thing, create a user using command
$ adduser new_user

What you need to do after that is adding the new_user to the following groups:
This will allow new_user to use network and also access both read and write to internal sdcard.

I also recommand to add new_user to group: sudo, users, ssh, and crontab if you plan to use it.

However, it's still booting directly to root! Obviously, you can just type

$ su -l new_user

And you will be right at home. However, it's an extra step to do after boot, which kinda annoying.
However, we can do this automatically but edit "/root/" once again.

The line "/bin/bash -i" is responsible for spwan a shell. We just has to replace that line with
"/bin/su -l new_user" and the system will boot directly to the new_user.

That's it! for today. See you next post ... which I will try to get more memory to the system by enabling swap image. :)

Using Linux on Android with Complete Linux Installater and debian testing-Large image.

If you have android tablet/phone and you wish to use full linux on it. You are in luck. I am running one on Asus Transformer Prime. You need to root the device thou. You can find out how to root your device from

Here is going to be my experience with "Complete Linux Installater" app, which you can find it on the app store for free. There is also a donation version too, $3.50.

What I like about Compete Linux Installer, is simplicity, good guide line and various of distribution of linux you can choose from. 

I start with debian testing (Jessie) small image. It's 2GB image file, and very easy to setup ... just follow the instruction and it will be done in second after long downloading and extracting of the image. There are a few hiccup that might consider annoying. I have fixed some of these "hiccup", and shared with you later.

Setup with debian testing LARGE image file:

Get back to my major issue. Since 2GB is too small after I try to get some serious work on it, I try debian testing LARGE image. This time it's not that simple any more. I find couple major issues with it.

Get The Right File:

First of all, the zip large image that I download by follow the app is damaged and can not be extract. I try different mirrors, always get the same result. So I googling and find this 

which you can directly download. Notice that there are couple of  images you can download from,
debian-testing, debian-8.LARGE.ext2 and debian-8.LARGE.ext4 ... The question is which one?

If you follow the app, it will download debian-8.LARGE.ext2 file, which about 500MB. This is the damage one. Since debian-8.LARGE.ext4 is about the same size, it's also damage one. The one that you have to download is

debian-testing.LARGE.ext4 (1.0GB) file.

Change the Script:

After a long wait for downloading and extracting, I expecting this image should work like a charm! ... Unfortunately, the bootscript is expecting the file system to be ext2, not ext4.  This can be solved pretty easily by changing the bootscript. The is located here:
Use any editor you like, obviously :) ... and looking for the word "ext2", and the line is look some thing like this:
$bbox mount -t ext2 /dev/block/loop255 $mnt
$bbox is refer to "busybox" which the app provided. You can change to the one that you like, but I won't recommend. $mnt is the mount point, which is /data/local/mnt. Since the large image that I download is using ext4, I would have to change "ext2" to "ext4". The line become:
$bbox mount -t ext4 /dev/block/loop255 $mnt

At this point you should be about to boot up the debian testing LARGE image with ext4 file system, and enjoy 3.5gb space!

Next post, I am going to talk about hiccup that annoyance me and how I fix it.