Educate yourself and while you’re at it, others too

As I wrote yesterday I love TED Talks… oh yea and I did also mention a growing sense of disenfranchisement.

I try not to take the information I gather for granted, and one of the joys I experience is in sharing with others. Of course, I am aware that sometimes it can be overwhelming and I try to limit the deluge. I feel I can filter for friends because I know them so well and I hope that they realize that often, I simply want them to know something “exists” even if they don’t need to know “about” it in depth. That is to say; sometimes reading headlines is enough.

I don’t I believe I’m the single source of information, nor would I really want that for people. The second greatest joy is when people in turn filter for me. It represents both a dialog as well as a foil to view other people’s perceptions. I also hold as fact that anyone worth knowing doesn’t leave their education in the hands of others.

People with a natural curiosity and the intellect to satiate that appetite are an amazing combination. So go forth and learn, but for a moment allow me to direct your attention.

TED recently released their Top 10 TED Talks although I would have probably chosen a different segment, I assume people will check out the list in their leisure time, but I realize not everyone has the same time frames that I do.

There’s one video which combines the flavor of yesterday’s commentary with the sense of “information obligation” (both to search and to share) that I hope each of you embodies.

In Do schools today kill creativity?Ken Robinson presents wonderfully and suggests that the education principals of today won’t serve the needs of the future.

Arguing over the word “killing” can result in semantic discussions of “intent” and many negative connotations so I think it’s important to suggest a premise that the creative needs of society change over time.

So whether malicious or not, in business and society, implications are that we can not rely on the exact same set of traits over time.

There are still some whether; ethics & integrity, curiosity & problem solving, which are “oldies but goodies” and are foundational, but in today’s age, you must commit to learn and practice your skills new and old with the help of other individuals, for none can do it all alone.

Posted in business, frustration, inspiration, social | 1 Comment

Can we break the generation gap in business?

I’m finally getting “settled” in my new role working from home and part of that means getting a chance to get through some podcasts. Actually, although I love TED Talks, I’m not actually a big fan of podcasts.

Imagine taking all the rambling and inherent pauses of conversation and couple those with ear piercing music, relative to the volume of human speech. Now add in sickeningly upbeat scores, which last too long but are too hard to fast forward through. Then sandwich content between mirrored intros and fade-outs so that back-to-back episodes sometimes yield 2-4 minutes (end of one and the intro of another) of worthless music…

Well, it shouldn’t be hard to see why a constantly information starved individual like myself would have a hard time listening. It’s almost a shame because some, like “Managerial Tools“, have great content but feel like a waste of time, when the “nuggets” can be gleaned much faster by reading articles.

However, I do have a soft spot in my soul for two true podcasts… I’ve really enjoyed the Stanford “Entrepreneurial Thought Leaders” sessions due to their diverse treatment of all things “innovative” and “entrepreneurial” and the NotHans Podcast (which I really think should be called a “NotCast”) because of its quick humor and varying overt and subtle shades of joviality. I’d recommend both many times over for people who like those sorts of things.

However, I am rapidly gaining another favorite on my list which is the “Harvard Business IdeaCast“. I’ve worked my way through eight episodes, so I’m still withholding judgment, and today in Episode 95, I found even more gold.

In this episode, or the accompanying Business Week article, Tammy Erickson tackles one of the biggest challenges facing corporations in the next 10 years, one I wrote about recently.

We’ve heard of developing future leaders, from Professor Linda A. Hill, but Tammy makes us aware that the roles being “prepared” may not align with the ones being desired by those leaders.

She writes about it in Top 10 Talent-Management Challenges and I hope there are a lot of people reading and acting on her insights. From the dangers of “extreme jobs” beginning to normalize our performance expectations and we’re in danger of forming a corporate environment that Gen-Yers (and some Gen-Xers) simply don’t want to join.

Posted in business, career, frustration, social | 2 Comments

One bit of Python I’ll never get…

>>> “hello”[2:4]
>>> “hello”[2:]
>>> “hello”[:4]

Do any of those not make sense to you? Here’s how I see it, and my confusion;

“hello” represents a 5 character string… and indexing starts at 0, something most programmers are all familiar with. The “[” “]” characters are used to subscript (or index) the string (which is actually a list of characters).


>>> “hello”[2:4]
>>> “hello”[0]
>>> “hello”[2]
>>> “hello”[4]
>>> “hello”[-1]

Get it? The 0th character is ‘h’, 2nd is ‘l’ (the 1st one) and the 4th (or -1 i.e. 1 from the end) character is ‘o’. The ‘:’ in between the “[]” is used to separate out the various indexing parameters.

Holistically, it’s actually referred to as “slicing“. So [1:2] says slice using indexes 1 and 2 (sorta… wait for the punchline below), and you can also say [0:20:2] which will slice in ‘steps’ of 2!!

It’s a handy technique, but let’s return to our example for the rub… Notice how “hello”[2:4] gave us ‘ll’ and not characters 2,3 & 4!!! That’s because the slice includes the 1st index but excludes the second!

Man I hate that…

Posted in code, frustration, python | 2 Comments

Poor sad Oogle…

I don’t know if that’s how he spells his name, but just now… I think I broke his heart…

If the records are correct, unbeknownst to me, Oogle and I have apparently had a close knit relationship. Oh, and there’s Ivan too… who was much happier to learn about my existence, “3 years!” he exclaimed. But, ultimately, it was Oogle who had to bear the brunt of the bad news.

It probably seems a strange post, but you see I feel the need to represent Oogle just a little bit. Perhaps it’s because we’ve been such old friends. Or maybe it’s to cover the remorse I feel for having to call it off after so long.

You see today, I canceled my Vonage phone number. I was expecting some horror stories, but for me it was a mostly non-painful process.

I logged into my Vonage account and couldn’t find a way to cancel (or even a contact number) so of course I did the next best thing… I googled it! What I found was more then a few dire warnings, but I managed to find a phone number to call and screwed up my courage as well.

Someone posted a number so I gave it a go and was promptly greeted by an automated message telling me the number was out of service and that I should call “1-Vonage-Help”… Now of course I’m hoping you all are as puzzled as I was, by why they didn’t simply redirect me, but remember Ivan…

Once I dialed the proper number there was a nice set of prompts asking me my phone # and what I wanted to do. I said “cancel my account” and the system was quite happy to have understood me correctly and sent me, without a significant delay to Ivan.

Apparently, Ivan works in the Billing Department and after expressing his dismay at losing such a long valued customer (“3 years! Why would you want to cancel?”) he informed me I needed to talk with someone from Account Management and happily transfered me over (honestly, he was quite pleasant to talk to).

That’s when I met Oogle… Imagine stopping by the southeast corner of the Hundred Acre Wood and having to tell the resident the sad sad news… Oogle offered me a discounted package but was shocked when I told him I had no highspeed internet at home. “I get enough of it at work” I told him, though I believe my wit, as usual, was underappreciated.

After assuring him I had no immediate plans to change my connectivity situation, he inquired as to whether or not I would transfer my number to someone else… That was an interesting twist, but I assured him that everyone I could think of already had phones and even though he made on last inquisition if there was any suggestion I had that would make me stay he asked a few questions (with long pauses in between) and graciously closed me account.

I know Vonage has had issues as a company but things might be looking up for them. They’ve been exactly what I needed (i.e. not much) from a home phone service and apparently they’ve learned that not all relationships are built to last, even ones with guys like Ivan and Oogle…

Posted in business | 3 Comments

What if stocks were movies?

As you’ve seen from my previous posts, I’ve been playing with python, couchdb and been working my way through the “Programming Collective Intelligence” book. However, what I haven’t been talking about much is what I’ve actually been doing with it!

When learning something, I’m at a disadvantage unless I can relate the technique toward an application, even if it’s just hypothetical. Since my day job is mostly spent at an IT / Architecture level it can often be difficult to get a chance to move beyond theoretical “what ifs”.

It’s a constant balance to make progress through a book or tutorial vs. branching off to investigate and actually apply something. As a rampant “consumer” I naturally error toward the “more data” side of things rather then being able to take time and explore in depth (I still have Google App Engine in my queue to revisit).

With the potential of PCI, I’ve been really focused on working through the examples and trying to explore what a good tangential application might be. Outside of technology I have a lot of varied interests (e.g. some of my friends call me ‘Longbow’) not the least of which is the idea that business and money is always an interesting area to investigate.

So I decided to mess around with applying PCI’s recommendation techniques to the field of stock analytics. There’s a theory called the “efficient market hypothesis” which holds that the crowd is wise and that if someone does have some corner on knowledge it (a) won’t be you and (b) won’t be legal.

Ok, the last two implications are my own but the theory basically suggests that you shouldn’t try to (and in fact can’t) beat the market because it’s the one making all the rules. Also, consider that if a stock is priced at $90, even if the stock is “worth” $100, it’s actually not worth $100 because the market will only pay $90!

Let’s leave off arguing the truth (or un-truth) of this hypothesis, we all know fortunes are made by being ahead of the crowd (whether by skill or luck) and see what sort of insights we can gain from the data itself!

Here’s what I did;

  1. I took a list of 125 stock symbols and built a python class to help me out ( can someone please share a good wordpress plugin for code? ). The class is used to parse Google Finance data and extract stock information (currently just the closing price information).
  2. Once I had this data and as an educational aside (and since I was certain Google didn’t want me hitting up their servers all the time) I built a couchdb database for this information. Now that Google finance has an API it might be unnecessary but I’ve yet to investigate it.
  3. Now I can query the database and build a python dictionary of stocks and their historical information and apply the PCI techniques for “recommendations” on this datastructure.

I don’t know about you but I think that’s pretty cool!

Let me corral my excitement for a second and explain my thought process. The initial examples in PCI are based on movie recommendations; a critic will watch a movie and issue a numerical rating. In my stock analogy a critic => stock_symbol a movie => date and a rating => closing_price.

That might be a stretch for the relationship mapping but remember the PCI techniques can rate clusters for nearly everything which has a numerical value (or can be turned into a numerical representation).

So since they’ve been nice enough to share the financial data, let’s take GOOG as an example;

>>> stock_values[“GOOG”]
{u’26-Mar-08′: u’458.19′, u’4-Dec-07′: u’684.16′ … }

In my example GOOG’s is not actually a critic but being critiqued by the crowd and on March 26th they rated it a 458.19 on the scale (from 0 – infinite). Here’s the rating for a different stock on that same day;

>>> stock_values[“YHOO”][’26-Mar-08′]

Obviously sim_distance() (PCI’s Euclidian measure) won’t do because of the massive discrepancy in the stock prices. However, the sim_pearson() rating will take these “rating tendencies” into effect, just like it will for critics who always judge movies optimistically, in effect normalizing your data for you. Note, you’ll have to tweak these functions from the original PCI to cast the value to floats before summing.

Now, for a given stock I can find the one other stock (among my sample of 125 stocks) which matches it most (or least) similarly in price fluctuations based on the closing price per day traded.

>>> topMatches(stock_values, “GOOG”, n=1)
[(0.92134859322750906, u’LOGI’)]
>>> topMatches(stock_values, “YHOO”, n=1)
[(0.45166743704701778, u’BIIB’)]

You might also consider finding relationships based on trading volumes but I haven’t yet learned how to do correlations based on multiple relationships.

So let’s look at all the stocks;

>>> for s in stock_values.keys():
… rank, stock = topMatches(stock_values, s, n=1)[0]
… print “%s is best matched (%s) by %s” % (s, rank, stock)

AAPL is best matched (0.903380774431) by BIDU

That’s the “best matches” for 125 of the NYSE’s top stocks, and a quick bit of shell scripting;

cat matches | cut -d ” ” -f7 | sort | uniq | wc -l

Shows us that the prices (up and down) for the 125 stocks I’d selected are in fact represented by the movement of just 68 overall stocks!

That’s like being able to capture the excitement from a full summer of movies by only going to see 55% of the movies!

Posted in code, python, visualization | 2 Comments