Blog

Friday, May 10, 2013

Google Glass

Recently I had the opportunity to try the Google Glass for myself. The following is some observations noted about the newest tech innovation, that sounds really cool today, and will continue to sound even cooler as it gains more popularity.


The tagline is that Glass is a great concept and is most likely to be a great gadget in near future, and a household accessory within very few years.


To summarize in few bullet points

Pros:
  1. Lightweight and comfortable - Looks impressive doesn't it? After few minutes of adjusting the projector at the right position, it felt pretty well fitted
  2. Speaks in your skull - Glass uses "bone conduction" and sends sounds directly to your skull unlike the traditional devices. This enables you to hear better in noisy places, and not broadcast the sound to everyone in the building
  3. Take videos and photos fast - I have a goPro camera for sports activities, which I recently took to karting. While I wouldn't risk ruining the Google Glass during rafting and surfing, for bike riding, karting and many other sports it would serve better than goPro, since (a) you see through the projector what you are filming, and (b) you can use voice commands to start and stop taking the video
  4. Opportunity for innovation - There are not many features available yet, so why not innovate, now is the opportunity to write your own apps and rock the world
  5. Coolest new device - Expect to become the "popular kid on the block" as you are one of the first people in you company/school/town to own them. People will try to be friends with you just to try the Glass!
 Cons:
  1. Doesn't fit well with glasses - I wear prescription glasses everyday and didn't find it conformable to wear on top of those
  2. Not ready for consumer use - Do not expect to get an out of the box solution like your IPad, this is a concept, so expect lots of crashes, draining your phone battery when synced on Bluetooth and brace yourself in public since you are likely to say more than a few times "OK Glass" to activate
  3. Not many apps yet - It was just released to lucky few, so it doesn't come with Angry birds on it, wait for innovator to come up with the apps, or better yet design your own
  4. Public acceptance - Not surprisingly people have mixed feelings about the futuristic device suddenly brought to reality from SyFy movies. The glass was already banned from number of bars and casinos, management claims that customers should be able to relax and not worry about being secretly filmed. I'd recommend not to take it on a date, unless your date is a dedicated Geek, others won't appreciate you looking like Terminator and communicating through "parallel universe"
  5. "OK Glass" command - currently the only way to activate through voice command is saying "OK Glass", in case there is another person in surroundings with Google Glass "speaking" to his glass, or someone decides to say "OK Glass" suddenly, that will affect your Glass as well, and they will be in command of it! Expect this will be fixed soon.

So would I use one? Sure, I would love to. Would I buy one? The only scenario I could justify buying it myself, is committing to writing Glass apps at least part time, otherwise it's too pricy for a conceptual gadget.


Friday, April 12, 2013

I don't always test my code ...


It's too good to skip... The The Most Interesting Man in The World ads originally designed for Dos Equis have gone viral, and certainly made their way to software geek circles. But thinking about this, have you ever observed overconfidence, cowboy attitude or perhaps unrealistically aggressive deadlines that allow the only one flavor of testing - not testing at all ? (Here I don't mean the fancy Testing in Production or Function Testing in Production automation methodologies).

Some may ask, "why employ a test department? Skip it! Save on the budget and let customers do the testing". "Isn't that what Facebook does? And many other companies as well?". Answers are: "Don't skip it" and "No, that is not what Facebook and other successful firms do".


It took me some time to realize that the era of "classical approaches" of software development should be considered gone. What we learned in school and where asked to do at work not so long - at most a decade ago, that is focusing on the quality of the software first is long gone... Making sure to use efficient algorithms with best time and space performance, taking time to write clean code, necessarily writing unit tests and automation, and taking time to identify and resolve all the bugs before going to release..

The current market is very competitive, and the customer has very high demands, and if you don't move fast you are done... This is why all the big names in software industry are leaving traditional software development life-cycles and almost consider the world "waterfall" a curse. They are investing many thousands of dollars and hours in adopting Agile development and lean methodologies. Today everyone is challenged to deliver fast, or be taken out of the competition.

The interesting dilemma about customers is that, they are increasingly becoming more tolerant to error, yet being very demanding to get the new technology fast. Truly, after we are "hooked" on Gmail, Dropbox or Strava (new phone app I recently discovered), a few crashes here and there are not going to make us switch... What may make us switch is the point where these products stop evolving and competition provides better services faster and better yet one what will require lesser amount of clicks :)

The question is about the line between quality and speed, knowing how fast can you actually go without ultimately sacrificing on quality. But this is up to the Big guys to decide.

Happy coding!

Friday, March 29, 2013

How To count sheep in binary

Have you ever counted sheep, or maybe clouds to fall asleep?

Chances are the answer is -Yes. It is a customary to many cultures to ask someone trying to get asleep or suffering from light insomnia to visualize a large space (like a green, wide field) and start counting objects in it (like white curly sheep). The goal is to occupy one's mind with repetitive and rhythmic task, which presumably introduces boredom, and that will make one fall asleep sooner.

I have been told to try this when refusing to go to bed many times as a kid. However the boredom trick never worked for me, starting to count sheep actually got me more awake, trying to come up with the optimized ways of sheep counting... See, counting them one-by-one would get me confused on which sheep were already counted, and I felt responsible for not counting the same sheep twice. One of the things I envisioned was building a gate in the middle of the field starting with all sheep on one side and none on the other, and send sheep to the empty side of the gate and increment the sheep count, maybe with a digital sign (like modern day parking lots showing the number of available spaces). 

Of course there was still lot to do: instead of counting one-by-one you can be sending a pair of sheep trough the gate at once counting the evens only 2, 4, 6, etc sheep helping to save time! You don't need to stop here,  you can go by the increments of 5 or better yet 10. This was already enough, at this point there is no point already of thinking about falling asleep. My complains to my parents that I reached ten-thousand sheep after two minutes would surprisingly leave them disapproving. 

***

As a graduate student at University of Michigan, I found myself at the same dilemma getting more and more anxious about not being able to fall asleep for the few precious hours before the final exams. I would spend hours on the typical task of counting if I fall asleep this exact second how much time would I be sleeping before the alarms start buzzing... This is by far the worst way of trying to fall asleep besides maybe drinking Red Bull right before going to bed.

Then, one day I recalled the sheep counting task from my childhood. It wouldn't work in the original version, since it never did, so it needed to be updated to make any sense at all... I "reinvented" a slightly geeky version of Sheep in the Field. By counting sheep in binary! Counting goes as 00001, 00010, 00011, 00100, 00101, 00110, ... Boring and confusing enough, isn't it?

This is how I envision the field with sheep: 






















There is a possibility that I made a mistake the sheep counting/numbering on this picture already. Additionally  coming up with this wonderful picture on MS Paint really bored me. The morale of this story - counting sheep in binary(*) worked for me. You should try it out as well!

(*) Binary numbering system:

Decimal (base 10)
Binary (base 2)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

17
...
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000

10001
....


Sunday, March 10, 2013

Girly geek or Geeky girl


I like the word Geek. These days the meaning of the word has shifted from the synonym of rather negative words looser or dork to a rather positive meaning, like a "successful technologist" or "technology enthusiast".

If you think about it... Today we would not call everyone in technology a geek - neither the guy who can code, nor the cliché character from movies wearing very thick glasses and collecting rare varieties of butterflies automatically qualifies as a geek. The word has become descriptive of a person who truly likes technology and is good with it.

Attention Geeks & Girlfriends of Geeks! MicroSoft geek Definition T-Shirt (L)
Merriam-Webster definition of geek.


To support this theory just search for the word "Geek" on Bing or Google. You will see no negative results at among top 10. Microsoft company store is full with gear – cups, T-shirts, hats, toys with the trademark "geek" on them.

I take no offense in being called a geek. At times I have felt almost proud that a classmate, teammate or a colleague has seen enough passion in me for making things better in technology and I have demonstrated the depth of knowledge to be called a geek, and qualify for the membership of Elite Society of Geeks.  

How would the ladies of the Elite Society of Geeks should be identifying ourselves? By ladies/girls(*) I mean besides the obvious anatomical differences from men, species of humans that including but not limited to the list, may: display fondness of shopping, wear makeup daily, possess extensive knowledge of the designer brands, willingly choose walk on high heel shoes for extended period of time and intermittently become overly emotional about stuff.

Lately I needed to provide a brief bio - and I thought of being slightly funny to take the pressure off and identify myself as a "geeky girl". However on the second thought I realized that it is more related to a Halloween costume of a girl wearing a short skirts and oversized glasses than a computer programmer, and that it does not assume about one's technical overachiever status or membership in the unregistered society of Geeks. But then what was the alternative to put in the bio?  

Next I thought about the a little wordplay and expression "girly geek". Well, maybe I didn't come up with it myself - but it represented exactly what I meant! It is a person with strong intellectual skills and high level of knowledge of the field who also satisfies the definition of a girl(*) from above.

Therefore, I hereby declared myself a proud "girly geek". Join the club ladies!

Saturday, March 9, 2013

We're Back! [to blogging]


Dear reader, for a long time I have been planning to comeback to blogging, but between the constant travel, work deadlines, busy schedule and overall high stress it has been difficult to make the time commitment and start again. Now that it the blog is linked to my site I am excited to be posting again!


So with the nearing closing of chapter now in Rainycity and a new coming up  in Sunnyvale please read, comment, share. Welcome to my blog.

Tuesday, August 23, 2011

When true IS false the hope IS lost

{Imported from my previous post in vstretch blog}

Logic, mathematical logic is one of the most pure concepts that serves as the basis for the programmers value system, core beliefs or even in the extreme cases the religion. One of my university professors used to draw a simple logical chart that is universally true in programming and the life:

Input
Result
Philosophy
True
True
Possible
True
False
Possible
False
True
Devil exists
False
False
Possible
In other words both true and False results can be inferred from a true statement, and only false results can be inferred from the initially false statement. In the case if false assumption results into a true statement, the logic is non-existent, and your core beliefs are fractured, might as well be the end of the word, or for the devil to exist.


Having a special fondness for the programming language Perl, which I use for most of my coding (as a job requirement) I grew fond of it over the years, through it's wonderful unpredictability and sometimes weirdness, there is a powerful open source community backing it Cpan.org, and the general easiness of using the scripting language versus general purpose languages, I was caught by a surprise running into a pure existence of devil the other day. A code snapshot, to better prove the point:

use strict;
use warnings;

my $var1 = '';
my $var2 = '';

$var1 = (1 == 1)
        ? "true"
        : "false";

(1 == 1)
        ? $var2 = "true"
        : $var2 = "false";

print "var1 $var1\n";
print "var2 $var2\n";

Can you guess the value of $var2?
FALSE!!!
The value is false, this is the proof that Perl is evil, and human race should avoid it. This is the prove that the condition when logic stops working and devil exists, consuming your reality and beliefs.

Saturday, July 30, 2011

Servers in the fog

Server in the fog...
{Imported from my post in Vstretch blog}

Cloud computing is the direction most successful software firms are heading today, it is the future of technology, when instead of buying servers and hardware, one day enterprise clients will have the tools to utilize all their tools through an Internet browser. Browser being the window to the enterprise cloud offered by so many companies today.. Amazon, Microsoft offer hosting your files, your documents remotely on their clouds. Companies giving access to their programs and your personal directories, like mail archives, server backups in the remote clouds on the other side of the country.. The tendency is that the hard disk sizes on the computers sold in few years will not increase, and that the external hard drives sales will decrease in the years to come, letting the way to the cloud. Like these days Ipad2 is advertised as fashion accessory in glossy magazines, one would foresee Amazon file hosting as the next "Hot thing of the season" in Vogue September  2014 issue.



Cloud is the new buzz word, the sexy term everybody is using... Recently I worked on a project of transferring files from backups from one cloud, through multiple filters breaking the file into into chucks for simultaneous streaming through the second cloud to finally transferred to a third cloud. As crazy as it sounds it is no much different than working on multiple physical servers in one room, but instead of local IP addresses using IP gateways to the Great Cloud. With all its adverseness and modernity, cloud has some disadvantages. The downside is when poetically speaking the clouds disappear in the fog, in more technical terms, the trouble comes whenever your Internet connection is drifting. Because of the weather, or overload, or your Internet provider failing to supply decent service, the Internet goes down.. and so does all your information... That did sound a bit too pessimistic, your information is still on the remote cloud, behind the lakes and the mountains, just the fog and the distance do not allow you to see it. 

More people will start using better Internet connection packages both in the US and worldwide, and mobile coverage with data plans will improve allowing to tether and use your wifi connections with the phone. Since the beginning days of the operating systems such as Windows, there have been ill-wishers, hackers, and with the rise of the Internet the interest in the information theft has only increased. More minds are committed into finding efficient ways to find your social security number, credit card number and bank account number being transferred over the network, by click of the wrong button, and submission to wrong URL. This will rise with the cloud obsession.

With one of the most reliable companies in the world Sony PlayStation network being hacked and unrecoverable for over next two months, this is the time to deeply analyze which clouds you are going to trust. There is no guarantee, whatsoever that this information, your privacy on Google or Facebook will not be once in the hands of those ill-wishers, but before submitting all your information to some anonymous cloud, before shopping for the best price it is the time to carefully consider how much do you trust the website you are about to share some personal details with, and how much do you believe in the security of that cloud, that it will not soon be hacked and your life stolen.

Not to sound paranoid with the technological advancements, we all are target of attacks, and research (note Google is not always synonymous for the world research) is the key of finding the trustworthiness of your connection medium, of your cloud and of your fog.