Author: elvisboats

Short Version: I'm married to the amazing (and amazingly forgiving) Jennifer, proud possessor of two amazing kids, crazy about all things trouty with fly fishing. I'm an Application Development Manager with Microsoft, and am based out of Portland, Oregon. Long Version: I grew up in Oregon, and moved down to California with the original goal of finishing my education in Civil Engineering, but I found application development and RDBMS systems much more exciting! I do miss the mountain biking in California and the awesome Mexican food, but Oregon is my home and I have never regretted moving back to start a family. Plus it gives me more time for fly fishing for trout and steelhead on the beautiful Deschutes river in central Oregon! ;-) Working for Microsoft has by far been the best experience of my professional life; it's great working with a group of people that are passionate about writing good code and continually improving development practices and firepower. Past assignments have included Providence Health Plans, Kroger, and managing a .NET development team at Columbia Sportswear. Working at Columbia in particular gave me a great customer-side perspective on the advantages that Azure offers a fast-moving development team, the dos and don’ts of agile development/scrum, and the cool rich Ux experiences that SPAs (Single Page Applications) can offer with Breeze, OData, WebAPI, and modern Javascript libraries. Microsoft did a fantastic job of engaging with Columbia and understanding our background and needs; I witnessed their teams win over an initially hostile and change-averse culture. The end result was a very satisfying and mutually beneficial partnership that allowed Columbia to build dynamic applications and services using best-of-breed architecture. I’m a MCDBA and a Certified Scrum Master.

Hot interview tips.

 

Here’s some good interview tips when you sit down in front of a panel:

  • Use first names. Most people only want to talk about themselves. Me, me, me…. WRONG! On a single sheet of paper, as large as possible, you write down the interviewer(s) name – and refer to that person by FIRST NAME. “You know, Jim….” This is powerful – since people that are referred to by their first name are friends, this tends to break down walls.
  • Clarify. When they ask a question, ALWAYS ask them to clarify that to narrow scope. This shows you’re listening and gives you time to respond. To a question about what you’d do if it started to rain, you say – “You know, Jim, I want to know what the nature of the rain is and what time of day it’s raining.”
  • Have 3 STAR stories, memorized. A STAR story is a Situation/Task/Action/Result, about 20 second long success stories – SPECIFIC to that position. “What I did with the team was… the result was we figured it out.” Keep them short but powerful.
  • Always be closing. For your close, when the interviewer asks if you have any questions, say something like – “First of all, I’m so excited about the opening and to meet the team. In the short term, if I was to come onboard, what do I need to accomplish for you in the first 60 days?” Then go back to your STAR story and tell them you’re confident you could do that. Your second question is, “Over the next year, what do I need to do to get you a gold star with your boss? Is there a project or initiative that you’ll need me to take care of?”
  • Handshake. Look them in the eye, a firm handshake, “Hey, thanks so much, I would like to work with and learn from you.” That phrasing is very important. There’s going to be people you’ll meet that’ll feel threatened by you – if you use the word “learn from”, that is saying you’re humble and ready to learn – as a subordinate, not a threat.

Does this feel sneaky? Dishonest? It shouldn’t. You genuinely do want the position, right? And isn’t it in everyone’s best interests to keep your responses short and not fill the room with a lot of hot air? If you are projecting the image of who you are, that’s not dishonesty – it’s putting your best foot forward. These tips came from a life coach – a psychologist – and a friend of mine paid thousands of dollars for these five tips. Try them, and see if you don’t have easier interviews that actually go somewhere.

Dave Barry’s 15 things

 

This is floating around the internet; there’s different versions (anywhere from 15 to 19 to 25) – all are funny.

Dave Barry’s 15 Rules To Live By (That Took Me 50 Years To Learn)

  1. Never, under any circumstances, take a sleeping pill and a laxative on the same night.
  2. If you had to identify, in one word, the reason why the human race has not achieved, and never will achieve, its full potential, that word would be ‘meetings.’
  3. There is a very fine line between ‘hobby’ and ‘mental illness.’
  4. People who want to share their religious views with you almost never want you to share yours with them.
  5. You should not confuse your career with your life.
  6. Nobody cares if you can’t dance well. Just get up and dance.
  7. Never lick a steak knife.
  8. The most destructive force in the universe is gossip.
  9. You will never find anybody who can give you a clear and compelling reason why we observe daylight savings time.
  10. You should never say anything to a woman that even remotely suggests that you think she’s pregnant unless you can see an actual baby emerging from her at that moment.
  11. There comes a time when you should stop expecting other people to make a big deal about your birthday. That time is age eleven.
  12. The one thing that unites all human beings, regardless of age, gender, religion, economic status or ethnic background, is that, deep down inside, we ALL believe that we are above average drivers.
  13. A person who is nice to you, but rude to the waiter, is not a nice person. (This is very important. Pay attention. It never fails.)
  14. Your friends love you anyway.
  15. Never be afraid to try something new. Remember that a lone amateur built the Ark. A large group of professionals built the Titanic.

 

Honorable Mention Rules:

  1. People who feel the need to tell you that they have an excellent sense of humor are telling you that they have no sense of humor.
  2. The most valuable function performed by the federal government is entertainment.
  3. The main accomplishment of almost all organized protests is to annoy people who are not in them.
  4. No matter what happens, somebody will find a way to take it too seriously.
  5. When trouble arises and things look bad, there is always one individual who perceives a solution and is willing to take command. Very often, that individual is crazy.
  6. The value of advertising is that it tells you the exact opposite of what the advertiser actually thinks. For example:
  • If the advertisement says “This is not your father’s Oldsmobile,” the advertiser is desperately concerned that this Oldsmobile, like all other Oldsmobiles, appeals primarily to old farts like your father.
  • If Coke and Pepsi spend billions of dollars to convince you that there are significant differences between these two products, both companies realize that Pepsi and Coke are virtually identical.
  • If the advertisement strongly suggests that Nike shoes enable athletes to perform amazing feats, Nike wants you to disregard the fact that shoe brand is unrelated to athletic ability.
  • If Budweiser runs an elaborate advertising campaign stressing the critical importance of a beer’s “born-on” date, Budweiser knows this factor has virtually nothing to do with how good a beer tastes.
  1. Nobody cares if you can’t dance well. Just get up and dance.

Warren Buffett’s Ten Rules.

Went to Jimmy John’s the other day, and this was on the wall. Love it!

Warrant Buffett’s Ten Rules for Success

1. Reinvest Your Profits. This makes sense not only in the stock market, but in a small business as well. Entrepreneurs who bleed all the profits out of a business find that they may struggle to grow the business into something larger and more valuable.

2. Be Willing to be Different. Buffet didn’t make his fortune by following the crowd. Instead, he invested when everyone else was panicked, and sold off when everyone else was buying. That strategy always beats the market. Doing what everybody else is doing – the same way they are doing it – is the recipe for becoming average. Nobody pays extra for “average”.

3. Never Suck Your Thumb. After you gather the information you need, make a decision. To Buffet, any time wasted to get to a decision is just “thumb sucking”. Success comes from immediately grabbing every opportunity that you can recognize.

4. Spell out the Deal In Advance. Your bargaining position is never stronger than before you are committed. So, advantage of that opportunity to spell out the details and specifics of any deal before you start. This is especially true when working with friends or family.

5. Watch Small Expenses. In the investment world, this translates into watching not just the returns offered by investment funds, but also the fees charged by the fund managers. This is so true in every aspect of small business and personal finance, as well.

6. Limit What You Borrow. Buffet claims to never have borrowed a significant amount of money. His advice is to remain debt-free, and then save and invest money. This is a very counter-cultural (see #2) contrast to those who preach getting rich using Other People’s Money.

7. Be Persistent. This is an advantage that the small entrepreneur has over larger, more established competitors. Persistence and ingenuity can, and often does win against large odds. If you’ve done your research, taken care of the details, watched your expenses and stayed out of debt, your success through persistence may only be a matter of time.

8. Know When to Quit. Don’t throw good money after bad. Resist the temptation to salvage a bad deal with a last-minute home run.

9. Assess the Risk. Buffet recommends thinking through both the best-case and the worst-case scenarios. This helps clarify the risks and rewards for any venture, which is critical to the decision making process.

10. Know What Success Means. Buffet doesn’t measure success in terms of dollars. As he says, “When you get to my age, you’ll measure your success in life by how many of the people you want to have love you actually do love you.” Here is wisdom.

Fun with Ebola

Spent the weekend camping at the coast and ended up with bronchitis. Probably not the best time to be reading “The Hot Zone”, but that’s what I did. Frankly, it scares the hell out of me. Collapsing and bleeding out must be one of the worst ways to die.

Taking some #’s off the internet and playing around with it in Excel gives some interesting facts. Notice how close the red and blue bars are below. That’s showing, just about everybody that catches Ebola – and these aren’t small samples, often they’re in the hundreds – die. So far, Ebola hasn’t spread widely outside of a few areas of outbreak (helped along by hospitals with substandard hygiene practices like sharing needles). But we know it can spread via the respiratory system – it did in Reston VA a few years back with a colony of crab monkeys, and also in 2012 with pigs. The virus hasn’t successfully made that animal-to-human and then human-to-human respiratory jump yet.

 

The above includes all five varieties of the virus (including Marburg). Using a slicer, let’s look at just Ebola:

So, an interesting little look at the kinds of analytics you can do with PowerPivot in Excel and a simple data table. And a glimpse into Big Data. I could have sliced this up by country, etc.

And it illuminates how data can shed light on a big problem. In this case, Ebola is hiding out somewhere in Africa, and trying like a safecracker to “break into” the human race – different combinations each time. Notice the cluster of events after 1994 – on an almost yearly basis, you see more outbreaks. The chart below shows the gaps more across time. If and when the virus can spread through the air human-to-human, and with our global communications net shuttling the virus across the globe – there’d be no stopping it. With a 67% average fatality rate, it’d be a new Black Death. Terrifying.

 

Data warehousing and working within structures

I saw the great Hilary Hahn a few days ago at the Oregon Symphony.

The amazing thing about a great concert violinist like Hilary is, they’re fantastic innovators – but always within bounds. You see her rattling off 45 minutes (more or less straight) of beautiful, expressive music – but always within the framework of the larger orchestra. They work in perfect synch.

It’s similar with data warehousing. Twenty or so years into my career, I’ve seen it done wrong multiple times (and right only a few) – and it always comes down to not working within the framework of what analytical databases are designed to do. It’s MUCH cheaper to not try to make up your own organizational definition of what data warehousing is… yet that tends to be a strange kind of compulsion that dogs many DW projects. It’s odd why so many companies choose to go down this route. You NEVER see people quibbling over relational rules with OLTP systems the way we do with analytical stores!

Microsoft’s BI best practices doc is pretty plain vanilla but it does break down DW into these pieces. Failing to understand any of these could mean wasting many, many man-years of effort and millions of dollars in rewrites.

The guide is, sadly, a real snoozer. I’ll break it down in a few sentences:

  1. Data source is where get our data from. (Duh.)
  2. Data integration is a layer that handles data extraction and cleansing.
    1. It will likely contain both a staging area (a temporary area that houses raw tables from the source) and…
    2. a loading area (data is now cleansed, validated, transformed, and in a consumable format by a DW).
  3. A data storage area that holds your dimensional model, including partitions for truly huge tables (yes, you’ll have these). Heavily indexed.
  4. Data analysis area holding OLAP cubes from SSAS/Cognos/etc and other data mining business logic.
  5. Data Presentation, including dashboards, flat reports, and moldable data (Powerpivot yay!)

Let’s not get bogged down in details here, but you want to have a staging area that contains your raw tables (and deltas) – this looks EXACTLY like the source data, without relational ties (or even indexes to keep load times to a minimum). Sometimes I drop and add indexes post-load to cut down on ETL times. Your loading area contains consumable objects that are multi-purpose and generic – think a “Products”, “Customers”, and “Suppliers” set of tables, where each row defines a customer, a supplier, etc. This is a relational store but not a OLTP system- you won’t (or shouldn’t) be seeing tons of lookup tables here. Think very flat, breaking some rules with denormalization (i.e. ProductCategory1, ProductCategory2, etc) in the name of performance. The goal here is a set of objects that will be a “one stop shop” of data, hopefully robust enough to survive organizational change with a minimum of bloodshed. For example, currently we’re writing a DW based on an ERP that we’re ‘pretty sure’ will be going away in three months. But I’m reasonably sure, even if we cut over to SAP, that I’ll still have a table of “Items”, “Products”, etc. By having a staging area, I minimize disruption to our users that are becoming dependent on our reports.

So breaking this down even further, for a data warehouse you need:

It looks like this:

  1. A staging area separate from your source data.
    1. Format: Raw tables exactly like your source tables, maybe split out using schemas.
  2. A loading area that contains a canonical view of your data from an organizational/decisionmaking standpoint.
    1. Format: Denormalized tables that define specific entities, highly indexed, relational but not hyperrelational.
  3. A storage area with your star schema.
    1. Format: A central fact table(s) and dimensional tables for slicing. You can have many fact tables and several different data stores to present your data in a way that’s most consumable by different departments/groups.
  4. A set of OLAP cubes for consumption by your client tools.
  5. Client tools so your users can slice and dice data themselves instead of bogging your development teams down with reporting.

Links