Coding

My dad called me today with an emergency: his phone stopped working, he took it to Verizon, they couldn’t fix it and his only option was to purchase a brand new phone, a Samsung Galaxy J3. He never backed up his phone contacts to the cloud, and the only backup he had was a folder with .0 files.

contact-list
I tried opening the files in Sublime text, but they were binary. I then tried reading them in Python, where the output was a bit more promising:

android-contacts-python

I then proceeded to fire up PyCharm and wrote a quick script to create a Google CSV file which could be imported into his new Gmail account.

 
import os
import csv
import re

csv_output = '/Users/eugenegekhter/dev/contacts.csv'
file_loc = '/Users/eugenegekhter/dev/contacts'


def organize_data():
    tmp_data = os.listdir(file_loc)
    output_list = []
    file_re = '(\d{10,11})'
    for f in tmp_data:
        if not f.count('-'):
            continue
        if f.count('-') == 2:
            name_re = '(.*)-(.*)-'
        else:
            name_re = '(.*)-()'
        tmp_dict = {}
        m = re.match(name_re, f)
        first_name = m.group(1)
        last_name = m.group(2)
        tmp_dict["first_name"] = first_name
        tmp_dict["last_name"] = last_name

        tmp_file = os.path.join(file_loc, f)

        with open(tmp_file) as ff:
            tmp_c = ff.read()
            tmp_phone = re.search(file_re, tmp_c)
            if tmp_phone is not None:
                tmp_dict["phone"] = tmp_phone.group(1)
                output_list.append(tmp_dict)

    return output_list


def write_csv(data):
    with open(csv_output, 'w') as csvfile:
        fieldnames = ['Name', 'Given Name', 'Phone 1 - Type', 'Phone 1 - Value']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

        writer.writeheader()
        for contact in data:
            writer.writerow({'Name': contact['first_name'], 'Given Name': contact['last_name'],
                             'Phone 1 - Type': 'Home', 'Phone 1 - Value': contact['phone']})

organized_data = organize_data()
write_csv(organized_data)
 

Voila, 30 minutes later, all my dad’s contacts had been saved and available on his new Android phone.

Read more

I am pretty much inseparable from my 15″ MacBook Pro Retina. My wife says that I’m married to her and to my laptop. I feel bad, but what can I do? Startup life is all-consuming, and in my case I’ve been in startup mode for 14 years (luckily for her 10 years were before we met). One day all this hard work will pay off, right? For my wife’s sake I sure hope so.

Read more