Home

Terrified of Qik @ 2010-06-29 22:00:18.554564
Filed under: Personal  Tech 
For those who don't know what qik is, it's a mobile application for taking videos and uploading them to the net as well as a "live" stream service from your phone for people to watch. I put live in quotes as, since one would expect, there is a delay depending on bandwidth, processing and other factors (it seems to be between 10-20 seconds usually). It's quite an interesting idea and seems to work decently well. For many phones this is a downloadable app but for us Evo users it is preloaded an, without hackery, can not be removed. Of course, this is par for course when it comes to bundled apps, but it's still no excuse as to why the practice is still done.

Anyway, I've noticed quite a few odd videos showing up online through qik. Now, a lot of these videos show up in the recent videso section and then disappear off the site 15-60 minutes later. Some you really can't tell WTF is going on (like in this). While others seem like accidental recordings. Take this video for instance. A few seconds of a steering wheel while you drive? Kind of odd. Or this and this ... odd as one usually tries to record something when they record. This is a guy telling someone else how to use it as he reads the instructions on his phone. How about this one which is in someones bag or purse. Then, just for fun, take Monk's sarcastic didn't mean to record video.

While some of the videos are just odd I tend to think a number of them were accidental. Why would you record 15 seconds of your phone moving around in your bag? Why record nothing but a few random words and no image? Why else would the videos have default names such as "A qik snippet of my life"? Have I convinced you at least some portion of these were accidental recordings? Good. We can move to the next step ...

Where do people use their smart phones? At the airport? Yes. Walking down a hall? Of course. At a restaurant? Sure ... but let's think of where else many people use their phones ... the bathroom. Now before you start running off stating that no one does that or you don't do that just think about it. Not much else to do but read or get that phone out and be productive! If you go into (almost) any decently sized company and hang out in the stalls you will end up hearing the beeping, keyboard/feedback clicks and alerts from smart phones (assuming you don't get kicked out for being creepy).

One more thing before we bring this all together. Having a forward facing and a rear facing camera is common on this new generation of phones. Both cameras tend to be at least webcam quality if not much better. For instance, the rear facing camera on my EVO is amazing while the forward facing one is in the better than average similar to iPhone range.

So here it is, why I'm terrified of Qik: With Qik and the ease of accidental recordings it is quite possible that one could record themselves in the bathroom and have it uploaded to the net for everyone to watch without the user realizing it for 15-60 minutes (which is my very unscientific estimate for how long it takes someone to tell someone else they posted a recording they don't think was meant to be posted). This is very close to the dream many people have when younger: going to school naked. Sure, in this case you are not naked, but everyone gets to see you in a bit of a compromising position. To make it worse, there is an automatic "good job" post that happens on some videos as if to encourage you to make more ... if you accidentally posted yourself in the bathroom and were told good job .... yeah.

So I leave you with the closest video to what I've described. No, this person is not in the bathroom but it kind of seems like how the video would end up looking:



EDIT
I lied ... this one is closer (but done on purpose) and kind of creepy:


 digg it   seed it   del.icio.us   ma.gnolia
Comments: 0 Tags:    


I Don't Know Why I Wrote This @ 2010-02-14 20:45:01
Filed under: Personal  Code  Tech  Python 
More or less a dictionary store on the network with very simple authentication. I don't know what got into me ... I had no intention of writing this ... hopefully it will be of use to someone. It is a little messy, but it works on Python2.6.

# WHY DID I WRITE THIS?!

import os
import yaml

from multiprocessing import Process
from multiprocessing.managers import BaseManager


class WriteableDict(dict):
    """
    A dictionary which can write to disk.
    """

    def __init__(self, fs_loc, *args, **kwargs):
        """
        Create the instance.

        :Parameters:
           - `fs_loc`: location on disk to write to
           - `args`: all other non-keyword arguments
           - `kwargs`: all other keyword arguments
        """
        dict.__init__(self, *args, **kwargs)
        self.__fs_loc = fs_loc
        self.__saving = None

    def __save_to_disk(self):
        """
        Save to disk.
        """
        # If we are trying to save while anothe save is happening
        # kill the previous save as it's already out of date
        try:
            if self.__saving.is_alive():
                self.__saving.terminate()
            self.__saving.join()
        except:
            pass

        def save(write, data):
            with open(write, 'w') as fs_file:
                fs_file.write(yaml.dump(data.copy()))
            self.__saving = False

        self.__saving = Process(target=save, args=(self.__fs_loc, self))
        self.__saving.daemon = True
        self.__saving.start()

    def update(self, *args, **kwargs):
        """
        Write enabled update.

        :Parameters:
           - `args`: all other non-keyword arguments
           - `kwargs`: all other keyword arguments
        """
        dict.update(self, *args, **kwargs)
        self.__save_to_disk()

    def pop(self, *args, **kwargs):
        """
        Write enabled pop.

        :Parameters:
           - `args`: all other non-keyword arguments
           - `kwargs`: all other keyword arguments
        """
        dict.pop(self, *args, **kwargs)
        self.__save_to_disk()

    def popitem(self, *args, **kwargs):
        """
        Write enabled popitem.

        :Parameters:
           - `args`: all other non-keyword arguments
           - `kwargs`: all other keyword arguments
        """
        dict.popitem(self, *args, **kwargs)
        self.__save_to_disk()

    def clear(self, *args, **kwargs):
        """
        Write enabled clear.

        :Parameters:
           - `args`: all other non-keyword arguments
           - `kwargs`: all other keyword arguments
        """
        dict.clear(self, *args, **kwargs)
        self.__save_to_disk()


class DataBroker(object):

    __data = {}

    def __init__(self, data_loc, auth):
        """
        Creates an instance of the broker and loads any initial data found.

        :Parameters:
           - `data_loc`: directory on disk that houses any .data files to load
           - `auth`: auth information to use
        """
        self.__auth = auth
        self.__data_loc = data_loc
        for loc in filter(lambda s: s.endswith('.data'), os.listdir(data_loc)):
            full_path = os.path.sep.join([data_loc, loc])
            name = os.path.basename(loc).replace('.data', '')
            with open(full_path, 'r') as f_loc:
                self.__data[name] = WriteableDict(
                    full_path, yaml.load(f_loc.read()))

    def __authenticate(self, user, passwd):
        """
        Poor mans authentication.

        :Parameters:
           - `user`: username
           - `pasword`: ... password
        """
        if user in self.__auth.keys():
            if self.__auth[user][0] == passwd:
                return True
        return False

    def get_data(self, user, passwd, name):
        """
        Hands over access to the dictionary.

        :Parameters:
           - `user`: username
           - `password`: password
           - `name`: name of the dictionary to access
        """
        if self.__authenticate(user, passwd):
            if name in self.__auth[user][1]:
                if name not in self.__data.keys():
                    self.__data[name] = WriteableDict(self.__data_loc + name + ".data")
                return self.__data[name]
        raise Exception


class DataManager(BaseManager):
    """
    Data Manager.
    """

    def __init__(self, *args, **kwargs):
        """
        Creates an instance of the manager.

        :Parameters:
           - `args`: all other non-keyword arguments
           - `kwargs`: all other keyword arguments
        """
        BaseManager.__init__(self, *args, **kwargs)
        self.register('get_data',
            callable=lambda u, p, s: broker.get_data(u, p, s))


if __name__ == '__main__':
    # Auth information user: (password (dicts, that, they, can, access))
    auth = {'test': ('testing', ('something', ))}
    # Setup the broker and manager
    broker = DataBroker('/tmp/', auth)
    manager = DataManager(address=('', 50000), authkey='abracadabra')
    # and serve until a ctrl+c
    server = manager.get_server()
    try:
        server.serve_forever()
    except KeyboardInterrupt, ki:
        server.shutdown()

 digg it   seed it   del.icio.us   ma.gnolia
Comments: 0 Tags:        


Mercurial Is Teh Awesome @ 2009-12-28 11:28:58
Filed under: Personal  Code  Tech 
I'm really digging it. Just for the heck of it, here is my global config.
[ui]
username = Steve 'Ashcrow' Milner <stevem@EXAMPLE.COMt>
editor = vim

[extensions]
hgext.gpg=
hgext.graphlog =
color =
mq =
bookmarks =
pager =
inotify =
rebase =
localbranch = ~/.hg-ext/localbranch.py
hgext.convert =

[pager]
pager = less -R

[diff]
git = True

[alias]
blame = annotate -uln

 digg it   seed it   del.icio.us   ma.gnolia
Comments: 0 Tags:      


RDU Airport Security Frustration @ 2009-11-25 05:19:40
Filed under: Personal  Frustration 
I usually will put up with a decent amount when it comes to travel. Lots of people are trying to get to many places and everyone is afraid they won't make it. I've been frustrated by the security checks at airports before, but today was a bit different. It started while I was waiting to put my stuff on the belt. Two security checkpoint guys were giving the instructions at the same time (though not saying the same thing at the same time) about 5 feet from each other. If I didn't know what to do (say, if I wasn't from the US) I wouldn't have been able to figure out what they were saying. So I get my bags on the belt and walk through the metal detector. Usually that means 'yay, you don't have anything crazy on you.' Not this time. I don't know if this was added in the last few months but I got a pat down to verify I didn't have anything. OK, so maybe it's an added safeguard, I'll go with that, but what happens next really irks me. My stuff 'clears' except for my backpack. I'm asked if I have a laptop in there. I explain that I don't, but there is a Nintendo Wii ... so he opens my bag and takes it out and states it has to be checked. The lady at the xray machine says 'pfff, I can't help what they put in their bags' and checks my Wii for bombs (... I assume). I stand and wait for my stuff to come through and it does after a few other bags. The lady behind the xray machine is pumping out reviews so much so that peoples stuff is getting pushed off the end of the belt. Luckily, I was able to get my stuff before it got to the end, but to do so I had to kick my shoes down the hallway while wearing my backpack, holding my laptop case and holding on to the items that I had to remove from my person/was removed from my bag.

I know there isn't a big screening process to work in airport security. I also know that I should put up with it because they get paid little and have frustrating jobs, but, on the other hand, I spent $550 on a plane ticket that last year at this time was about $200. Taking a train and being able to do work while I travel with less frustration (and, checking out Amtrak tickets online -- MUCH cheaper) seems to be looking better.

 digg it   seed it   del.icio.us   ma.gnolia
Comments: 0 Tags:    


The Amazon People Are Coming @ 2009-10-03 23:00:11
Filed under: Personal  Comedy 
A few weeks ago my mom got really sick and went to the ICU. During her recovery in the ICU she was given ambien so that she would go to sleep. Ambien is known for having some weird side effects and those of us visiting my mother found out how intense they could be first hand.

The players
- Judy Milner (aka Mom)
- Steve Milner (aka Me) - Son
- Rachel Milner - Daughter
- Ashton - One of Rachel's Sons (aka babies)
- Rayel - One of Rachel's Sons (aka babies)
- Jim - Mom's farmer friend
- Amazon People - People from the Amazon

The following is a paraphrased (but highly accurate) conversation that took place between my mother and myself around 3am sometime last week.


Mom: no ... no. NO!
....
Mom: I told you! I told you I can't swim. Well ... they can.
....
Mom: They are going to get Rachel! Hide her babies!
Me: What?
Mom: I told them I can't swim. I accidentally told them you and Rachel can. And her babies. They will take them away
Me: Who is going to take Ashton and Ryel away?
Mom: The amazon people!

Mom: You need to warn her! Hide her babies!
Me: They will be fine mom. Get some sleep.
Mom: No, they will be taken away! You need to warn her!
Me: Go back to bed, mom.
Mom: Listen to me. They will take her babies ...
Me: I've already hidden them. They are safe. Just get some rest.
Mom: You did?
Me: Yes. Everything is OK. Go to sleep so you can heal.
Mom: OK.
...
Mom: Did you tell Jim?

Me: About what?
Mom: You didn't tell Jim about the Amazon people?
Me: No, the babies are hidden remember?
Mom: They will find them! I told them they could swim!
Me: Go back to sleep mom.
Mom: Please, just fax Jim!

Me: Jim is asleep. I'll tell him later OK?
Mom: He needs to know. You need to fax him.
Me: Rachel's babies are fine. I hid them. They are safe. Go to sleep.
Mom: You have to fax Jim. He can protect Rachel's babies.

Mom: Do you hear me? Are you there?
Me: Yeah. Mom, you took something to help you sleep. You just need to go to bed.
Mom: (laughing) I know it sounds crazy, but it's true! You have to fax Jim.
Me: (pondering if it's crazy enough to be true, like something from Lost) Can I bring you through this in a logical fashion?
Mom: OK, but you have to fax Jim as soon as you can.
Me: You are worried because there are people from the Amazon who know that Ashton and Ryel can swim ...
Mom: Yes. I didn't mean to tell them ...
Me: Right, and they are going to come and get Rayel and Ashton, so you want me to fax Jim ASAP?
Mom: Yes! They are coming now!
Me: How are they getting here?
Mom: By boat. There are a lot of them.

Me: Ma, that doesn't make sense.
Mom: Trust me! You have to fax Jim now.
Me: So, they are coming by boat? Do you know how far that is for them to travel?

Me: That will take forever for them to get here. I think you can get some sleep and we can think about it more in the morning.
Mom: They are coming in boats.
Me: It's OK, it will still take a long time. Go to sleep.
Mom: There are a lot of them in the boats.
Me: Get some rest. We will talk about a plan in the morning.
Mom: They will be here by then.
Me: (trying not to laugh) What kind of boats are they in?
Mom: Row boats. There are a lot of them.

Me: That will take even longer. Weeks or months. Go to bed mom.
Mom: But we need to tell Jim!
Me: Can I put this on my blog so other people know about them coming?
Mom: Yes.
....
Mom: Did you fax Jim?
Me: No, go to sleep.
Mom: You need to fax him!
Me: I'll do one better, get some sleep now and I'll make a personal plea to President Obama himself.

Mom: OK (goes to sleep)

 digg it   seed it   del.icio.us   ma.gnolia
Comments: 0 Tags:    


 
A Django joint.
© 2007-2009 Steve 'Ashcrow' Milner | Studio7designs | Arbutus Photography