Convert MKV video to MP4 via Terminal

Converting MKV video is super fast via terminal. This can be done on Linux or Mac.

Install ffmpeg

sudo apt-get install ffmpeg
sudo brew install ffmpeg


To convert video.mkv to video.mp4 use the command below:

ffmpeg -i video.mkv -vcodec copy -acodec copy video.mp4

This 183MB file took less than 20 seconds to convert.screen-shot-2016-09-22-at-22-13-42

This 183MB file took less than 20 seconds to convert.

Tip: To convert all the mkv files in current directory, run a simple loop in terminal:

for i in *mkv; do ffmpeg -i $i -vcodec copy -acodec copy $i.mp4; done

Make a bootable Ubuntu USB drive on a Mac in under 20 minutes.

This article details how to easily create a bootable Ubuntu USB drive that be completed in less than 20 mins (May be 10 if you’ve a fast usb drive). Having a faster USB drive would help in the long run too!


Note: this procedure requires that you create an .img file from the .iso file you download. It will also change the filesystem that is on the USB stick to make it bootable, so backup all data before continuing.

Tip: Drag and drop a file from Finder to Terminal to ‘paste’ the full path without risking typing errors.

  1. Download Ubuntu Desktop
  2. Open the Terminal (in /Applications/Utilities/ or query Terminal in Spotlight)
  3. Convert the .iso file to .img using the convert option of hdiutil. Example:
    hdiutil convert -format UDRW ~/path/to/target.iso -o ~/path/to/ubuntu.img

    Note: OS X tends to put the .dmg ending on the output file automatically.

  4. Run diskutil list to get the current list of devices
  5. Insert your flash media
  6. Run diskutil list again and determine the device node assigned to your flash media
    (e.g. /dev/disk2)
  7. Run
    diskutil unmountDisk /dev/diskN

    (replace N with the disk number from the last command; in the previous example, N would be 2) If if fails to unmount with errors, use the ‘force’ command:

    sudo diskutil unmountDisk force /dev/diskN
  8. Execute the following command while replacing /path/to/downloaded.img with the path where the image file is located; for example, ./ubuntu.img or ./ubuntu.dmg).
    sudo dd if=/path/to/downloaded.img of=/dev/rdiskN bs=1m
    • Using /dev/rdisk instead of /dev/disk may be faster.
    • If you see the error dd: Invalid number '1m', you are using GNU dd. Use the same command but replace bs=1m with bs=1M.
    • If you see the error dd:/devdiskN: Resource busy, make sure the disk is not in use. Start the Disk and unmount (don’t eject) the drive.
  9. Run diskutil eject /dev/diskN and remove your flash media when the command completes
  10. Restart your Mac and press Alt while the Mac is restarting to choose the USB-Stick (This should also work on a PC)

Run a HTTP server in any folder (Mac)

Use this one-liner to serve any directory on Mac on the local network. Navigate to the directory in the terminal first.

python -m SimpleHTTPServer 8000

You can also leave the port out so that it uses the default port 80.

Now, in a browser, type in the below to access the directory files.


Use CTRL+C to end.

If other devices on the local network want to access, replace localhost with your local ip e.g. below:

Screen Shot 2016-07-16 at 23.15.23

Fix ‘cannot write’ homebrew error on Mac

I have been using Mac terminal to get a MAMP setup done lately and I kept running back in to and error I spent a lot of time trying to fix a while ago…sigh. This comes up when you try to install or update with brew.

Irshads-MBP:~ Ishy$ brew upgrade
Error: Cannot write to /usr/local/Cellar

Fix it this way:

sudo chown -R $USER /usr/local

Note: You can replace $USER to root as homebrew is better set with root.


Adding/ Removing rules in iptables

I have been fascinated about IT security and firewalls. I was able to get some hands on exposure to firewall scripting if you like, during my Masters that I just completed. To rekindle my love towards this, I went back on my Ubuntu virtual machine and thought lets ‘try two simple tasks to do with iptables; adding and removing a basic rule’.

So, in Terminal, I type in :

iptables -A INPUT -s -j DROP

This will drop all packets from the IP address after -s (for source IP). The IP here is my iPhone’s IP address. I use the Fing app on the iPhone to ping my machine after the iptables rule is activated and the packets are dropped, this is evident from the app returning the ‘unreachable’ message.

Now, to make the machine accept connections or packets from this IP address, all I have to do is delete this rule in the table. For this, I just change one character in the line as below. I would leave it for you to spot it and ponder the ‘why-hows’.

iptables -D INPUT -s -j DROP

Now, I tried the ping from the same app on the iPhone and the machine was accepting connections.


While this is just a basic task, I would advise anyone interested in this area to explore and experiment more on iptables, its truly interesting!

SDN Controllers Project Update

Again, this is for my reference and also acting as my project journal. Feel free to ignore 😉

This post contains the chart with data from my ping flooding RTT’s on controllers OpenD, RYU and ONOS. Though I still have not been able to figure out the unpredictable OpenD behaviour as you may see from the chart, Excel has indeed helped me visualise and predict behaviour of these controllers. The Horizontal axes 1-5 are 10K,25K,50K,75K and 100K packet floods respectively.

RTT on Controllers OpenD, RYU and ONOS (Click to Enlarge)
RTT on Controllers OpenD, RYU and ONOS (Click to Enlarge)