Posts

  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
  • Magic Cauldron: Harry Potter Themed Gender Reveal Party - #Aurdino

    Earlier this year, we had a very fun filled Harry Potter themed gender reveal party. For the reveal, I built a Magic Cauldron which would reveal the gender. Check it out for yourself! For this I needed: A Cauldron. WS2812B LED array. Aurdino UNO. Bread board and jumper wires. Dry ice. Kasa Smart bulbs I will go over in the following sections The Mist.

  • Kakashi: The Copycat Robot - #Aurdino #image processing

    In this post, I want to share about "Kakashi: The Copycat Robot"—a fun side project I built a few years ago. The name is inspired by the famous character from Naruto, Kakashi Hatake, also known as the Copycat Ninja.The goal of this robot was to mimic Kakashi's ability to copy movements—though, of course, in a more limited way. Check it out for yourself!Here are the things I used to build this:

  • Neural network inference pipeline for videos in Tensorflow - #Deeplearning #Tensorflow

    Just as we saw a huge influx of images in the past decade or so, we are now seeing a lot of videos being produced on social media. The need to understand and moderate videos using machine learning has never been greater. In this post, I will show you how to build an efficient pipeline to processes videos in Tensorflow.  For simplicity, let us consider a Resnet50 model pre-trained on

  • Finding Where's Waldo using Mask R-CNN - #Deeplearning #ML

    When I was a kid, I really loved solving Where's Waldo. There were few books (it used to be called Where's Wally) in our school library on which I spent hours finding Waldo. For people who do not know what it is, basically Waldo - a unique character is hidden among hundreds of other characters and you have to find him in all the chaos in the image. Now that I am too old to be solving it and

  • Higher level ops for building neural network layers with deeplearn.js - #Deeplearning #javascript #ML

    I have been meddling with google's deeplearn.js lately for fun. It is surprisingly good given how new the project is and it seems to have a sold roadmap. However it still lacks something like tf.layers and tf.contrib.layers which have many higher level functions that has made using tensorflow so easy. It looks like they will be added to Graphlayers in future but their priorities as of now is to

Wednesday, 21 January 2015

WhatsApp Web desktop client for mac


Whatsapp Messenger finally enabled users to use it from desktop. Unfortunately it is not a desktop client and you have to open the browser all the time to open it. Safari lovers have to open Google Chrome just to open WhatsApp! So I created an unofficial desktop app for mac using which you can get a standalone desktop experience while using it.


Installing

Firstly I am assuming that you have installed chrome browser. This will be a wrapper application around Google Chrome. Download the zip file. Extract the zip and simply double click on Whatsapp.app to open it! You can also move it to Applications folder to access it from anywhere. This is how it looks.

Download WhatsApp for Mac



How it works

If you want to make the app yourself, Simply execute the following shell script!


Now simply open the app!

Saturday, 17 January 2015

How to use youtube-dl on android

There are hundreds of apps on Google Play which claim to download youtube videos. However most of them are either fake or not functional. Youtube recently added a feature using which it is possible to download youtube videos. But it stores it only for two days.
We all know that youtube-dl provides us a 100% effective way to download videos from youtube. In this post I will show you how to do this:

Step1

Install python. See this Installing python on Android.

Step2

Download and transfer youtube-dl to your phone (you can do this directly on your phone if you don't have adb)


Then open terminal on your android device and do this:


Now you can easily download youtube videos using youtube-dl from terminal!!


Monday, 12 January 2015

How to use TP-LINK router to boost your network

Do you have a spare router which you are not using? It is possible to use it to boost the network coverage of your existing WiFi by using it as a repeater! In this post I will show you how to use T-LINK WR740N router as a repeater to boost your network.

Step1

Connect your computer to router using a LAN cable. Open your route's admin page. It is either http://tplinklogin.net or 192.168.1.1. Then login with your credentials (default details are given at the back of your router).

Step2 

Now you will be shown the admin page of your router. Go to Wireless -> Wireless Settings. Check Enable WDS Bridging.


Step 3

Now enter the name(SSID) of the network of the main router (the one you want to boost). Then click on Survey button.


Step 4

Now click on the connect link corresponding to your main router.



Step 5

Now select the appropriate Key type, password and other security details of the main router. Note that Key type is usually WPA-PSK/WPA2-PSK and the options WEP Index and Auth type are not required.  Then click Save.



Step 6

Now the following text appears:

The change of wireless config will not take effect until the Router reboots, please click here to reboot.

Click on click here to reboot

Step 7

Now, similar to the way you logged in to the secondary router, login to the main router's admin page and disable DHCP and restart it.  You are good to go!

Saturday, 3 January 2015

Installing python on Android 5.0

Executables with PIE (Position Independent Execution) have been supported since Android 4.1. It is a security feature involving address space layout randomization(ASLR) to prevent attacks such as buffer overflow. In Android's latest release Lollipop, PIE has been made a requirement. Similar to the way the shift from Dalvik to ART has crippled so many applications, this move has caused a lot of problems to developers.  Even some of the binaries shipped with android itself were broken because of this.

I will be showing you how to install RunPythonFromShell. If you have already installed it and want to see how to bypass PIE go to the section Bypassing PIE.

Step 1

Download apk

Install the apk and open it. Click the install button in the app to install all the modules and binaries.

Step 2 

If you don't want to run python from everywhere, skip this step. 
  • Open adb shell
  • Download the following gist. Move it to /system/bin and change set executable permission.
  • If you are running an android version older than lollipop then you are done! Lollipop users have to bypass PIE.

Bypassing PIE

Due to the PIE restrictions you get the following error when you run python:
          
         error: only position independent executables (PIE) are supported.

 The idea here is to replace the default linker with a custom linker (You need a rooted device. duh!).  First mount /system in write mode and backup the default linker.

mount -o remount,rw /system /system
mv /system/bin/linker /system/bin/linker.old

Download custom linker

Move custom linker to /system/bin. Then set proper permissions.

chmod 0755 /system/bin/linker

You can also use ES File Explorer or Root Explorer to do this. Permission of the file should look like this:

You are done! You can run python from terminal!


I will be writing a post on what all cool things you can do with python on android. Stay tuned! 

Update

Some of the users with 64 bit architecture were facing some linking problem. Here is what you have to do.
Create a new lib64 directory and move the library file to that folder.

mkdir /data/data/com.googlecode.pythonforandroid/files/python/lib64
cp /usr/lib64/libcrypto.so   /data/data/com.googlecode.pythonforandroid/files/python/lib64

Then you have to add this to the library path. To do that you have to update the variable LD_LIBRARY_PATH in the "/system/bin/python" script above.


Thanks Yan Bellavance for pointing it out!