Thursday, October 28, 2010

Microsoft FY11Q1 Results

How about some FY11Q1 Microsoft earnings!

My usual suspects for earnings discussion:

Once more, with feeling.

I expect that we'll have yet another break-out quarter, a better idea that Kinect is poised to be a great seller for the holidays (sell-out pre-orders and screaming Oprah audiences can't be too wrong), and some glow from reasonable WP7 reviews (oh, and yes, we all realize that it doesn't have copy and paste - and yet the apocalypse will not arrive).

So this seems like a do-over with more good news from the last quarter. Will Wall Street react with the same "Meh?"

An interesting pre-earnings release article: Sleepy in Seattle - Microsoft learns to mature.

Again, not much love for Mr. Ballmer. So, since the last quarterly earnings, Ms. Friar at Goldman Sachs dropped a bomb on Microsoft and there's been serious concern that Mr. Ballmer is clearing the executive bench at Microsoft. Or is it cleaning house? Since we're unable to criticize any mistakes our departed leaders have made, it remains a big unknown.

iPad, iPad, iPad!

Once it was "Google, Google, Google." Now it's Apple's iPad meant to be Microsoft's undoing. First of all, major props to Apple's continued success. It's been a long journey for Steve Jobs and Apple - especially for those of us who read The Journey is the Reward back when it was new. I like my iPad. It's fun. It's also no notebook replacement. I'm not even going to use it for writing tweets on Twitter, let alone writing emails. It's for screwing around, and I like screwing around... so I like my iPad. I'm blessed that I've got the spare cash for such a luxury device and the spare time to play with it.

It's a new, quick consume experience that our Tablet vision failed to realize because our Tablet vision (like all visions of that time) was so firmly shoved up the Enterprise's butt we didn't care for consumers who'd pay good money to have a fun device to facilitate their screwing around.

We continue an expensive lesson in enlightenment. And spanking: Microsoft's consumer brand is dying.

And goodness help us if Apple TV takes off. Our inability to string together a coherent TV strategy (despite having been in the TV realm for over a decade) is yet another dropped pants embarrassment waiting to happen and represents the anxiety that Wall Street has about our future despite having successes in the present.


Cost cutting's slippery slope continues. I'm sure if we don't talk about continued overhead management (people, benefits, etc) that it will be an analyst question. I still believe we need to chuck about 15,000 positions (and half of our super-ballooned contingent staff) rather than continue the slow squeeze around the company that's making this an ordinary job with some extraordinary wonderful people who just haven't given up on the company. Yet. I hope that the analysts realize that continued, consistent bloodletting because a negative for hiring, and (allow me to be pro-hiring for a moment) if we can't bring in deep-talented new blood to replace the departed dead wood, our future is doomed to mediocrity.

And that doesn't get you a good dividend.

New Talent

And we're losing the battle for hiring new talent. If you review who we're losing to, it's a big surprise. You look at who is ahead of us in preference and you say, "Really? Graduating students think they are a better place to work than us?" It's a cold splash of reality that makes me - they guy who said we've turned things around and things are going great for our major initiatives - wonder if things are worse outside of the Microsoft bubble than I thought.

Frank, you're fighting an epic battle.

-- Comments

Tuesday, October 19, 2010

Mr. Ray Ozzie and Microsoft's Chief Software Architect - So long, farewell, auf wiedersehen, adieu, adieu, adieu

A Microsoft position got retired this week: Chief Software Architect.

That used to be - quite unofficially - Mr. Bill Gates by the sheer nature of his intellect. And it led to many entertaining and terrifying BillG Reviews. A good friend of mine at the time, an architect for his team before we got all hung up about titles like that, bragged: "I've never been to a BillG review and I intend to retire without going through one." He did.

But I think he missed out. As have, unfortunately, many intellectually shallow PowerPoint B.S artists who rose up the ranks in the meantime.

When I was a teenager, one book I loved to contemplate over was a series of quotes by Robert Heinlein's character Lazarus Long. One goes like (courtesy the internet vs. hard-copy because the book is lost behind a stack of neglected Col Solare): "[...] Roman matrons used to say to their sons: 'Come back with your shield, or on it.' Later on, this custom declined. So did Rome."

The rigor of a focused, intellectually deep and sturdy software development declined with BillG's departure. No more technical assistants. No gauntlet of the BillG review. On his way out of the company, Bill anointed Ray to serve as Chief Software Architect. I don't think that was Ray's idea. In fact, I can only imagine him tilting his head and saying, "Wha-?" He didn't take a broad view of Microsoft at all, but rather focused on growing the Groove momentum into other areas for the future.

As part of any enduring legacy, it will be interesting to see what happens to Mr. Ozzie's groups over time, Windows Azure especially. And I can only hope to the Good Lord above that the "I'm all in" cloud claptrap takes a retirement, too. We get it. We have The Cloud as a platform. In my mind, it makes as much sense as saying "Compilers! We're all in!" or "Layered Windows! We're all in!"

I feel with Ray Ozzie's departure that Steve Ballmer has finally asserted his complete control over the company. We've had some house cleaning this year, ranging from Mr. Ozzie to Mr. Bach & Mr. Allard to Technical Fellows to continued targeted layoffs. Perhaps this is due to the big, contemplative review Mr. Ballmer had with the Microsoft Board this year. Mr. Ballmer has hit the reset button. Do we have a Hail Mary pass, or is this Ballmer 2.0?

We'll see how that goes. In the meantime, here's hoping that the technical Presidents reporting to Mr. Ballmer can take up the custom of intellectual rigor. Because that is one custom we can't let decline anymore.

-- Comments

Sunday, October 10, 2010

Microsoft Health Care Pops a Cap in One Big Week

Wow, what got in the corporate water for this week? Coming off the glow of last week's Company Meeting Koolaid we first got hit by the Goldman Sachs downgrade hang-over, then, to channel Mr. Ballmer, "Boom-Boom-Boom!"

  • Health care changes on the way.
  • Live Labs gets shut down.
  • Technical Fellow Gary Flake, one of Microsoft few-TED stars, resigns.
  • Technical Fellow Brad Lovering leaves.
  • A survey that shows a lowly 50% approval rating for Mr. Ballmer.
  • IEB gets re-orged.
  • Massive gets shuttered (like we were all looking forward to billboard ads while blowing crap up in Xbox).
  • Adobe acquisition rumors.
  • Matt Rosoff leaves Directions on Microsoft.

All this right on the eve of Windows Phone 7 being launched. Feels like one big... purge.

As for the Microsoft health plan changes: I haven't personally taken a bunch of time to figure it out yet. I had a fully scheduled Friday and I half listened to the Town Hall while working. My attention lapsed and the next thing I know they are talking about a Health Visa card against our Health Savings Plan we can use for paying our share of a visit to the doctor and roll-overs and portability. I realized I just missed some detailed stuff. Microsoft has set-up internal forums to help the employees figure this all out, so I encourage everyone to utilize that. But in the meantime, a commenter on the previous post added this:

OK, I just watched the Health Care Town Hall replay. Hard thing to do early on a Saturday morning.

Let's see if I have this straight. If I go with the Health Savings Plan:

  1. All my preventive care is still free (to me). Annual physicals, dental checkups, immunizations, etc. - no charge. Wellness programs are actually beefed up even more.
  2. For a family of 3+, the most we would have to pay out of pocket annually is $2500.00.
  3. At the beginning of each year, MS will themselves add $3725 or thereabouts to my Health Savings MS is more than covering my $2500 obligation anyway.
  4. Even if I have a catastrophic illness or injury, I'm still ahead $1225.

I hope more insightful minds will follow up to correct any misunderstandings I have about this, but my takeaways from LisaB's deck are:

  1. Switch to HSP.
  2. Lose both legs in a snowboarding accident.
  3. Profit!

A follow-up to that:

Not quite right on the healthcare costs. Worse case scenario for family of 3 is:

  • All your preventive care costs are covered 100% by MSFT
  • You pay 100% of the first $3,750 in non-preventive costs. This is your deductible.
  • After your deductible is paid, you pay 10% of non-preventive costs. This is your co-pay. You pay a max of $2,500 in co-pays per year.
  • So your max annual costs are $3,750 + $2,500 = $6,250
  • MSFT will pay $2,500 into your Health Savings Account each year, so your net out of pocket cost is $3,750. If you sign up for the HSP account in 2011-2013, then MSFT will contribute an additional "early adopter incentive" of $1,250. But after 2013, your max out-of-pocket costs are presumably back to $3,750
  • You could pay that $3,750 out of tax-free contributions you make to your own HSA account, but then that money is locked away and can only be used for health expenses. If you don't want your money locked away then you have to pay with after-tax dollars.
  • In order to come up with $3,750 in after-tax dollars, you'll need to earn about $5,000 in pre-tax dollars.

So, in the worse-case scenario this is equivalent to a pay cut of $5,000 per year. Maybe not too bad for someone making $200k, but that would be a 10% pay cut for someone making $50k.

Will increasing health care costs follow Ms. Brummel's charted path? It's interesting that the excise portion of the future ended up being a small little bump. Next: wellness - excellent idea. I love ensuring that we're all well and stay healthy upfront. But that includes affecting the ecosystem in which we live and ensuring people actually put time towards preventative health and making a place like Redmond a healthy place to live.

Sidebar: Just to whine a bit: for self-proclaimed bicycle capital, this is one hell of a scary place to ride a bike. Actually ensuring there's an infrastructure from the suburbs-to-work to safely ride a bike to encourage healthy living is some local influence Microsoft should have.

Sidebar two: Via DareO: The exciting nature of being ordinary - Sorting it all Out - one snippet: "Microsoft now looks ordinary to me."

I'm very supportive of whatever they can do about wellness (though the paranoid side of me hasn't liked the 'Know Your Numbers' campaign - who gets access to my numbers? Curiously, this extra overhead might prevent me from getting my flu shot this year).

Do I think the health changes will affect recruiting? Probably not. Do I think it will affect retention? Yes. See the above "ordinary" link. If other tech companies hold steady on their coverage then they close a big gap to hiring experienced people at Microsoft. Look, once you have a family and one or two big boo-boos (medical term) you realize: "holy crap, we are so fortunate... I love this company for caring for me and my family so well!" It's no golden handcuff, but it still anchors you.

Anchors away.

Given cut-backs like this, whether out of cost-saving necessity or not, the Senior Leadership Team has to realize there's zero tolerance now for major money screw-ups like KIN and Massive. The bumbling flushing away of millions or billions of dollars is going to be compared directly to the reduction in benefits: if this company was actually run by people who knew how to consistently achieve profits, we wouldn't be looking at these losses and saying, "Yep, that could have paid for US health-care for a while..."

All-in-all, though, I think (not having immersed myself in the details) our coverage remains a better-than-average benefit. And as long as we don't have to revert back to the Pacific Care Primary Care / Referrals model (talk about a time-waster during work-hours) I'm personally satisfied.

Regarding Live Labs being shutdown: so what's left that Ray Ozzie is running? FUSE labs? You know, the people who blew their internal reputation by hijacking and hacking the Office Web Apps for ? I would not be surprised to see Ray finding a new endeavor sooner than later. First Mesh, now Live Labs.

As for Live Labs going into Bing... what the? I've watched a lot of curious hiring and initiatives at Bing. All the best wishes to you Bingsters, but you're beginning to resemble an organization that has way too many people and now you're just creating work to keep them busy. We've seen this before, and curiously, with some of the same leadership that's in Bing now. Better to put them on a productive profit making endeavor or risk having them cut loose.

From the comments:

Let's see if the latest round of "This will bolster the stock price works." IEB re-org and benefit changes. Doubt it.

Checked with some friends in the Interactive Entertainment Business and they glumly report "We're getting Sinofskied." (Not reporting to Sinofsky, but picking up the same kind of management structure.) Ah. I've always been curious if the Sinofsky model holds up in a creative group. Now we have one big example in the making.

Looping back to Mr. Kaplan's ordinary comment: Mr. Matt Rosoff's parting post on leaving Directions on Microsoft expresses it in a different way:

In Seattle, Microsoft was where the all the best and brightest worked, had worked, or wanted to work. People even pronounced it with a particular tone of voice, hushed but awful, like people back East say "Harvard." All-caps. "Yeah, he owns a coffee shop now. But he used to work at MICROSOFT." [...] it's not MICROSOFT anymore. It's just Microsoft. Even in Seattle.

How do you feel about that? You're not ordinary and you don't live an ordinary life. You don't expect to do ordinary work for an ordinary company, do you? What needs to change?

-- Comments

Wednesday, October 6, 2010

A Case of the Microsoft Downgrade Blues

Oh, great, we've hit a case of the downgrades as a sequel to the quarterly results that no-one bought.

Specifically, Ms. Friar at Goldman Sachs downgraded us with a variety of reasons and expectations. From Mr. Todd Bishop: Goldman downgrades Microsoft, makes case for major overhaul. Snippet of some gold Goldman Sachs from there:

Flashbacks to MSFTExtremeMakeover's last blog entry: Eight Years of Wrongness. Upgrade the "Eight" to a "Ten".

The more interesting follow-up by Mr. Bishop is adding up the numbers in Goldman Sachs' assessment comes up with a $30 share price vs. Goldman Sachs' downgrade to $28: Numbers How Goldman Sachs values each Microsoft division.

Now then, if this report was dated, say, 2006 I would be remarking at the exceptional smarts and bravery of Goldman Sachs to step forward from the meek institutional investor crowd that have been giving Microsoft a free ride. Instead, now that the farm's barn doors have been wide opened for a while, Ms. Friar is walking around saying "Without preventative re-enforcement and diligence of door utilization, it's possible for the horses to escape from here."

The timing is just peculiar, and is resulting in the resumption of resignation requests for Mr. Ballmer: CNBC's Fast Money Microsoft's Steve Ballmer Needs to Go Analyst. Also, Ms. Victoria Barret follows-up with Goldman to Microsoft Do Something - and reflects on her summer story Time to Break Up Microsoft.

Sorry Mr. Institutional Investor, your voice was needed years ago. You have been complicit and ineffective during the worst of it. What's the agenda here? It would have been better for a coalition of institutional investors to speak with one voice, vs. Goldman Sachs. Because... given how Goldman Sachs has proven itself untrustworthy in attempting to destroy the American economy for its own fortune (cue their extended pinky touching edge of mouth), you have to wonder if they have their own greedy agenda - are they betting against the Microsoft stock and expect to benefit from its near-term decline? Or hope to force in a Neutron-Jack CEO to wipe out half the employees and all non-profitable groups?

Or do they expect within a year for Microsoft to have had a very successful consumer cycle and then reward that with an upgrade, in the meantime having had bought up a good bit of cheap stock? Are they looking for quick short-term gains vs. a thoughtful consideration of long-term growth? I feel a baleful gaze cast on us.

And mainly: it's a very poor matter of timing for a break-up. We're about to have a mobile phone come out that actually binds the companies divisions far closer than ever before: Office, Windows Live, Xbox Live, Bing, and Dev Div: this damn thing is the antidote for break-up talk. WP7 wouldn't be impossible to create with a break-up, but it'd be exceptionally difficult. WP7 is pulling together huge resources that none of our direct competitors have.

Now then: stepping back to Classic-Mini mode. Would I like to spin off parts of Microsoft. Oh yes. Less money wasted and less people? It's a Win-Win two-fer. How about our health solutions group to start with? Other Fools: Online Services Division: Microsoft Time for a Break-Up?

I think it would be healthy to actually encourage spin offs. Give new groups funding for two years and then assess whether this will continue to be a Microsoft endeavor or not. If not, the group can spin off as their own new company, with Microsoft as a stake-holder, and go their own way. So if Midori is not in our future then tip the hat to them and let them take off on their own.

Back to Mr. Ballmer. If you want to end on a high-note, now's the time. Mr. Ballmer can declare victory in the continued success of Windows 7, the innovation of Bing that's rattled Google, the alignment of products around the cloud, Kinect, and Windows Phone 7. It's going to be a while until the stars set themselves up like this again. Better to go out with victory than be chased out of Salmonberg by a bunch of fed-up institutional investors wanting real dividends and stock performance. You know: shareholder value.

-- Comments

Tuesday, September 28, 2010

Microsoft Company Meeting 2010

Best. Company Meeting. Ever.*

(*excluding the classic Company Meetings, especially the one where Cheap Trick played afterward.)

-- Comments

Monday, September 27, 2010

Here Comes Microsoft Company Meeting 2010!

Hello, SafeCo Field! Another year, another Microsoft Company Meeting!

Anyone who has read this blog for a while knows that I'm a big fan of the Company Meeting, though I have to admit this is the first year I've thought of skipping and just go out for some beers instead. Well, instead I'll peruse the past and conjure up some enthusiasm:

Alright, I'm in. So what is there to talk about going into the Company Meeting?

No Elop: yeah! So no repeat of last year's late-night telemarketing demo unintentional-skit. In fact, we might have one big demo cut altogether...

Unique Demos: anyone who repackages a demo from earlier in the year should just get boo'd off-stage. Any demos should be new and quick quick quick.

Dreading Mundie: please spare us. If the Company Meeting had a chatter meter for when the audience stopped paying attention and started talking with their seatmates, this would be the peak.

WP7 Microsoftie Demos: I think it would be sweet and smart to have some of the top-notch Windows Phone 7 apps created by Microsofties - under the application developer program to support employee apps - get up on stage and do 1 minute demos of their apps. Microsoft exists only due to the great work of the geeks who work there - celebrate it.

Financials: a nice review of *profits* from the various groups.

Stealth Layoffs: are we done yet? I'm all for making Microsoft a smaller company, but not at the morale busting cost of layoffs lurking around campus like the Spanish Inquisition. It will eventually take a toll on people considering moving to groups that are in a start-up mode with unclear Senior Leadership Team support.

LisaB: she tried something big, Ballmer didn't go for it, and then she faded and became busy with layoffs. And her basketball team. Ms. Brummel kicked off another Listening Tour this year. Now would be a good tie to roll-up any insights and results. What is my dream result? Team based awards. And it's pretty simple.

Every VP-level person has to stack rank their organizational teams, top to bottom. For Sinofsky-fied product teams, this would be at the Dev Manager / Test Manager / General Program Manager triad level, typically defining a product team such that every product team get a rating. Every team gets ranked just like individuals and the team gets a rating just like you and me: Exceeded / Achieved / Underperformed and 20% / 70% / 10%. This - along with the concise VP-level written evaluations - gets pasted into every team member's annual review and part of the overall bonus / stock compensation now comes out of this result.

The reasoning: strong, well-run and results-producing organizations should be rewarded. And poorly run, low WHI organizations should be disinfected with some mighty strong corporate sunlight. When it comes to informationals with new teams, you can ask: "What was the team's rating last year?" in addition to MSPoll results.

Reviews: as long as we're on LisaB and HR: how about them reviews this year? At least we had merit increases back. If you're feeling a sharp-blow about your results and you're up for an interesting point of view (along with a bunch of other good things), I suggest reading Philip Su's goodbye note for leaving Microsoft and joining Facebook: Goodbye Microsoft, Hello Facebook! « The World As Best As I Remember It. (you might remember Mr. Su from the high-profile post-Vista blog-post Broken Windows Theory). That whole post is worth discussing soon. As is the always popular observation: if you're not happy with Microsoft, there's abundant opportunity around you. Try checking it out.

Ballmer vs. The League of Meh. Maybe because we have a lull with our major product groups either coming in for a landing (WP7, Natal) or just taking off (Office 15, Windows 8) that my circle of friends have hit a patch of corporate ennui like never before. True, some of them work on products way on the fringe but others work on some pretty core products and they are feeling... full of meh.

I still believe that Microsoft has turned the corner. Or, as someone else wrote this week, it has turned the tanker: The Microsoft Tanker Has Turned and You Ignore it at Your Own Peril. Why this meh? First of all, the stock: if you are investing in the success of Microsoft, you cannot underestimate the power of the stock to energize the employees to create break-through results. We had great quarterly earnings and what did the financial market say? "Meh." Maybe they started it. Part of it I'm sure is that even though we've turned the corner, sometimes we screw up and spill the Big Gulp in our lap and skip the curb and take out a mailbox (KIN). That startling inconsistency to deliver focused results I'm sure puts fear and doubt into Wall Street, and if there's one combination that Wall Street underperforms dealing with it's fear and doubt.

After the dismissive reaction to our last quarterly results, we had article after article written about Microsoft's Lost Decade, covering how poorly Mr. Ballmer and The Board have been doing running Microsoft and calls for their dismissal. That's not cool, and if anything, it's draining. Under that context, to see Mr. Ballmer screaming and running around high-fiving a bunch of MBAs riding our two cash cows until the milk's dried up is challenging to your self-motivation.

Going back to my friends: some are very loose in their seat, and others have already left to enjoy unfettered engineering (one in particular happy to realize how much unexpected joy results in the 'make Partner or take the 10%' cloud going away).

I expect a CEO like Mr. Ballmer to revisit his previous Company Meeting talks and discuss where those ideas are now. Some of those ideas were quite exciting, but went... where? Otherwise, without the follow-through I guess this is another throw-away show that's in-between me and my beer.

-- Comments

Thursday, September 23, 2010

Tutorial: Undocumented behavior of kernel functions min()/max()

I was recently reviewing some code written to be shipped with AX6, and noticed an unfamiliar pattern being used in it. I investigated a bit deeper, and turns out it actually works fine on previous versions of AX as well.

I am talking about 2 kernel functions for finding the maximum or minimum of the specified values.
The signature of these methods is shown on the below image:

As you can see, it takes 2 arguments of anytype, and returns an anytype which is the largest of the two values. But it can accept much more than 2 arguments, even though it is not documented as such.

I wrote a small job to showcase this behavior. The code is provided below. You can also download it from my SkyDrive Dynamics AX share.
static void Tutorial_MinMaxFunctions(Args _args)

Random rand = new Random();

int counter;
int arrayInt[#ArraySize];
str arrayIntAsString;
int arrayIntMaxValue;
int arrayIntMinValue;

for (counter = 1; counter <= #ArraySize; counter++)
arrayInt[counter] = rand.nextInt();
if (arrayIntAsString)
arrayIntAsString += ', ';
arrayIntAsString += int2str(arrayInt[counter]);
info("Generated array of integers: " + arrayIntAsString);

info("The typical way to find a maximum is by looping through all the values one by one, calling the comparison function multiple times");
arrayIntMaxValue = minint();
arrayIntMinValue = maxint();
for (counter = 1; counter <= #ArraySize; counter++)
arrayIntMaxValue = max(arrayIntMaxValue, arrayInt[counter]);
arrayIntMinValue = min(arrayIntMinValue, arrayInt[counter]);
info(strfmt("Max.value: %1 and Min.value: %2", int2str(arrayIntMaxValue), int2str(arrayIntMinValue)));

info("Using max and min with 11 arguments works just as well");
arrayIntMaxValue = minint();
arrayIntMinValue = maxint();
arrayIntMaxValue = max(arrayInt[1], arrayInt[2], arrayInt[3], arrayInt[4], arrayInt[5], arrayInt[6], arrayInt[7], arrayInt[8], arrayInt[9], arrayInt[10], arrayInt[11]);
arrayIntMinValue = min(arrayInt[1], arrayInt[2], arrayInt[3], arrayInt[4], arrayInt[5], arrayInt[6], arrayInt[7], arrayInt[8], arrayInt[9], arrayInt[10], arrayInt[11]);
info(strfmt("Max.value: %1 and Min.value: %2", int2str(arrayIntMaxValue), int2str(arrayIntMinValue)));

info("Note that comparing an integer and a real also works, as well as outputing the results straight into an infolog message");
info(max(12, 12.001));

Another interesting point is that it can actually accept different types of arguments, for example, a real and an integer, as shown above. And it actually returns an anytype, which implicitly gets converted to a string when sent to the infolog.

Disclaimer: Since this is not a documented feature, it can theoretically change in the future releases, but I doubt it in this particular case.

Friday, September 17, 2010

Microsoft Annual Review 2010

Just a quick post: some of you enjoy posting information relevant to your review, both looking at numbers and a critical view of the message given to you. It has started to happen a bit in the last post (I'm going through the comments now) so I'm just going to capitulate (again) and put this small post up for the 2010 Annual Review share and compare. Yes, this is a bit late.

Oh, and obviously grab yourself a few grains of salt. Folks seem to like this format:

  • L# (promo'd?)
  • (Exceeded|Achieved|Underperformed) / (20|70|10)
  • Bonus $K
  • Stock $K
  • Merit % (/Promo %)
  • Optional comments about Division / Group, discipline, impression of review

Administrivia: yeah, that was another long pause moderating and posting and all that. I was on an extended vacation that continued as an extended vacation of the mind. My apologies. I've got at least one short post in mind before our Company Meeting 2010.

Thursday, July 22, 2010

Microsoft FY10Q4 Results

FY10Q4 Microsoft earnings are upon us. So, what's been going on since last we met over the quarterly results?

  • The KIN phone collapse put WP7's future in doubt. Would WP7 meet the same fate? Is it under the same level of mismanagement? Fortunately, some fairly positive takes on pre-release WP7 have been coming out ahead of earnings to shore up confidence and excitement.
  • Market Cap - yes, Apple passed us by and there was an abundance of articles and postings questioning just how much longer Microsoft would have to endure Mr. Ballmer as CEO (hint: a long loooooong time).
  • Itsy-bitsy-layoff-committees: targeted small layoffs to kick of FY11 team budgets. If they are that low key and only disclosed on some random bit of the blogosphere, do they really amount to much accountability on Microsoft's sake? Again, our contingency hiring is out of this world so it's not like we're saving a bunch of money - we just have folks on the payroll we can easily cut loose as needed.

What kind of questions might be / should be posed during the earnings call?

  • Dates: firm dates for WP7 devices and Kinect and associated Kinect titles beyond the kind-of-interesting launch titles.
  • Win7 + Office 2010: are the cash cows still, err, bringing home the bacon?
  • Bing / Ad-center: is Bing on the upswing? Is Bing / Ad-Center doing anything more than eating the bacon that our cash cows bring home?
  • Legal: it's been very quiet on the European Union front. Office 2010 was released without a single investigatory squeak, as far as I know. Is this all behind us for now? That would be great.
  • WP7: application developers in the queue? We need to re-enforce the cool apps that we'll have ready when WP7 is launched. In a move that has totally delighted me, Microsoft is giving every employee the ability to write and deploy WP7 applications (and, what, ability to get a device at launch, too?) - wow! Now's the time to truly show off your stuff and write for WP7 and get your app out the door.

The glow of Windows 7 has dimmed and Office 2010 and the VS2010 eco-system need to pick up the steam as we head to WP7 and Kinect launch. Apple is rolling in the moolah being a content delivery channel and our story, other than some Xbox features, is still pretty fuzzy. For instance: Windows Media Center is one of those crown jewels we've let plop out of the crown and get kicked around the court. I love WMC but it seems to be a neglected feature, caught in the chop between E&D / Zune and Windows. After a phone, it's the next experience we should bring out some reference hardware for to easily DVR HD channels off the air and plug right into your HDMI system and watch it go.

My usual suspects for earnings discussion:

(I'll update the post later if there are interesting developments from the earnings release.)

-- Comments

Wednesday, July 7, 2010

Advertisement: MDCC is looking for talent!

Hello, all.

Microsoft Development Center in Copenhagen has a number of open positions for Software Development Engineers in Test (SDETs), to work in the team responsible for shipping the latest version of the Microsoft Dynamics AX product.

Below is a detailed description of one of the currently open positions (SDET II role). Salary level and title are based on your education, number of years of experience, etc., nothing new here. Dynamics AX background is, of course, a plus (I assume this applies to all my readers).
The Microsoft Dynamics AX product group has an open position for a Software Development Engineer in Test (SDET) within our supply chain management teams. The position provides unique opportunities for professionals with a diverse background of business acumen and software engineering to work on one of the fastest growing Enterprise Resource Planning (ERP) products in the market.

Write and review technical requirements and design documents
Plan, design, and write code for automated tests of features within the supply chain management features of Dynamics AX
Create and use test tools and processes to both increase effectiveness in the daily work and assure quality of the product
Collaborate with other engineers to ensure all feature areas achieve the desired high level of innovation and quality our customers demand.

We are looking for engineers with a strong background in object oriented development. Experience with business applications or ERP solutions are pluses.

Software development experience, particularly within C#, C++ or similar object oriented programming languages
Strong technical and analytical skills
Excellent problem solving and design skills
Ability to work independently - and in teams
An excellent command of written and spoken English
Experience with Microsoft Dynamics AX or ERP products is a plus
Experience with X++ (a Dynamics AX language) is a plus
Software testing experience with an organized and structured approach is also a plus

We are also looking for less experienced people for the IAESTE student program, so all you excellent Computer Science students, interested in developing business applications and working for one of the world's leading software companies, welcome!

If you are interested in applying for the positions, please e-mail me your up-to-date CV at ivan.kashperuk(@nospam)

An additional request I would like to make is to leave a comment here, if you are invited to an interview, describing how it went, how you were treated, and what your impression was of the entire process, the MDCC campus, the interviewers, etc. This will help us make improvements in our hiring process, so I am really waiting for your comments. Note that anonymous comments are allowed.

Some additional information about MDCC:
Microsoft Development Center Copenhagen (MDCC) was created in 2002 following the acquisition of the Danish company Navision. Today, it has grown to be Microsoft’s biggest development center in Europe and a spearhead in the European IT industry. MDCC is Microsoft’s Center of Excellence for Supply Chain Management and drives the development of several of the Microsoft Dynamics ERP (Enterprise Resource Planning) products. Our products enable companies throughout the world to optimize the planning of their resources – and increase their revenues.

Today, the development center gathers around 650 people from more than 40 different countries. Every third employee is a non-Dane and that makes MDCC to one of the most international companies in Denmark. MDCC has been widely awarded for its unique work culture and is a coveted career booster for top talents from all over the world.

Tuesday, July 6, 2010

The KIN-fusing KIN-clusion to KIN, and FY11 Microsoft Layoff Rumors

Get out of the way Microsoft Bob, you have a replacement that Microsoft's Gen-Y employees can claim for their own! It's spelled K-I-N.

KIN's demise can't surprise anyone. When I looked at the phone's features, I thought: alright, an incomplete Facebook experience that I cannot improve by installing new applications... and I pay $$$ through the nose for a plan. But I've got a green dot and KIN Studio... maybe that will be enough to sell enough units to justify the Danger acquisition and the person-years of work behind getting KIN out. What the hell where all those people doing? I couldn't imagine anyone wanting the resulting iffy feature-phone at a smartphone cost, but KIN wasn't made for me. I was willing to let the market be the judge of KIN.

Verdict? Guilty, guilty, guilty.

The original Zune/Pink phone had interesting momentum but it all got squandered. What's the one ThinkWeek paper I want to read this year? Lessons Learned from Microsoft KIN and How Microsoft Must Change Product Development. You can't have a failure like this without examining it and then sharing what went wrong, all with respect to vision, execution, and leadership. How big was the original iPhone team? How big was the KIN team? Why did one result in a lineage of amazingly successful devices in the marketplace, and the other become a textbook extended definition for "dud" ?

Interesting comments:

All I can say as a former Windows Mobile employee who is now working for a competitor in the phone space is that this is good news for the rest of us. [...] Personally I quit because of the frustrating management and autocratic decision style of Terry Myerson and Andrew Lees. The only exec in the team myself and other folks respcted was Tom Gibbons who is now sidelined. Lees and Myerson don't know consumer products or phones. Gibbons at least knows consumer product development. We often talk about how Andrew Lees still has a job but Microsoft's loss is a gain for the rest of us.


And now Kin is killed *after* it has shipped in June 2010. You can bet Andy was involved in the development of Kin, the partnership agreements with the OEM, Verizon and most importantly the "ship it" approvals all along the way. And Microsoft discovers its a bad idea after it blows up in the broad market. Absolutely no thanks to any pro-active decision making on Andy's part.

Now there is spin that Andy killed kin to put all the wood behind Windows Phone 7. Er, the guy was in charge for two years of Kin development. He could have made this decision far earlier.

Similarly Windows Phone 7 has two years of development under his watch. Based on his past performance, 99% chance this is also going to be a total catastrophe. It further doesn't help that much of the Windows Phone 7 leadership team was kicked out of Windows when they screwed up Vista.

And finally, one Danger-employee's point of view of why they became demotivated:

To the person who talked about the unprofessional behavior of the Palo Alto Kin (former Danger team), I need to respond because I was one of them.

You are correct, the remaining Danger team was not professional nor did we show off the amazing stuff we had that made Danger such a great place. But the reason for that was our collective disbelief that we were working in such a screwed up place. Yes, we took long lunches and we sat in conference rooms and went on coffee breaks and the conversations always went something like this..."Can you believe that want us to do this?" Or "Did you hear that IM was cut, YouTube was cut? The App store was cut?" "Can you believe how mismanaged this place is?" "Why is this place to dysfunctional??"

Please understand that we went from being a high functioning, extremely passionate and driven organization to a dysfunctional organization where decisions were made by politics rather than logic.

Consider this, in less than 10 years with 1/10 of the budget Microsoft had for PMX, we created a fully multitasking operating system, a powerful service to support it, 12 different device models, and obsessed and supportive fans of our product. While I will grant that we did not shake up the entire wireless world (ala iPhone) we made a really good product and were rewarded by the incredible support of our userbase and our own feelings of accomplishment. If we had had more time and resources, we would of come out with newer versions, supporting touch screens and revamping our UI. But we ran out of time and were acquired and look at the results. A phone that was a complete and total failure. We all knew (Microsoft employees included) that is was a lackluster device, lacked the features the market wanted and was buggy with performance problems on top of it all.

When we were first acquired, we were not taking long lunches and coffee breaks. We were committed to help this Pink project out and show our stuff. But when our best ideas were knocked down over and over and it began to dawn on us that we were not going to have any real affect on the product, we gave up. We began counting down to the 2 year point so we could get our retention bonuses and get out.

I am sorry you had to witness that amazing group behave so poorly. Trust me, they were (and still are) the best group of people ever assembled to fight the cellular battle. But when the leaders are all incompetent, we just wanted out.

I guess we need another ThinkWeek paper on how to successfully acquire companies, too. Between this and aQuantive, we only excel at taking the financial boon of Windows and Office and giving it over to leadership that totally blows it down the drain like an odds-challenged drunk in Vegas. And the shareholders continue to suffer in silence. And the drunks are looking for their next cash infusion.

Dude, Where's Ray? You see more and more yearning for the days of BillG at the helm, perhaps because at least he was an uber geek that could drill your team's presentation like nobody's business and understand what your team was doing. And occasionally get enthralled by technology choices that would confound your average user (WinFS). Ray was supposed to serve as a replacement architect at Microsoft's technical helm, yet his impact seems to be superficial (and pretty disparaged if you chat with any leader in the company). Here's a snippet of a great comment about Ray and his impact at Microsoft:

The problem is, Ray doesn't see himself as the "Chief Software Architect" of the company. He sees himself as the "Chief Visionary Officer" (to borrow someone's phrase from early comments). He sees his job as being the person who regularly kicks "old" Microsoft in the butt to wake them up to whats going on in the world.

All of his behavior lines up with this: His correcting of Ballmer (in public!); His team's building Mesh, an expensive, buzz-generating, science-project app beloved by those who know about it, but irrelevant to those who don't (which is 99+% of the planet); More recently, his team's building of -- another expensive, buzz-generating app that has no business model and no path to ever having one (if you need an indication of how pointless an exercise is, just look at the visitor trends for it since launch:

Meanwhile, Ozzie has made enemies of most of the leaders of the actual products that pay for his "Labs". He's made no secret of the fact that he thinks that Windows is run terribly, or that Office is dead technology. Behind closed doors, he is openly dispariging of Microsoft development practices and Microsoft technology. His efforts to build product display a stunning lack of a caring about how much things cost to run, or whether they will ever make money. To my knowledge, he doesn't care in the slightest about the enterprise businesses at the company.

Dude, Where's My Job? Folks have been talking about ongoing stealth layoffs and the impending July FY11 layoffs reacting to teams with reduced budgets. I've scanned some various HR calendars and found some interesting appointments more around next week vs. this week, but the layoff rumors have spilled over beyond here and into TechFlash: Microsoft pruning more jobs. A follow-up by Ms. Mary-Jo Foley: More Microsoft job cuts coming ZDNet. So I'd expect more news next week than this week, but one commenter has noted:

Layoffs confirmed for tomorrow. I see long meetings booked by HR-types in Lincoln Square and RedWest-C. Didn't go through all the calendars for you main-campus types.

If Microsoft is doing this to appear fiscally responsible, they really can't tell just this half of the story. The other half of the story is the number of contingent staff positions, which if you open up Headtrax for yourself to investigate be prepared to tell Elizabeth you're coming to join her, because it about gave me a mild heart-attack.

If you learn anything, please comment regarding the group and the size of the hit and any impression about the folks impacted (e.g., 10%'ers, long-term employees, etc).

-- Comments

Thursday, July 1, 2010

Tutorial: Brief description of ways to close a form in AX

We had this question asked on one of the internal AX forums, and Michael Fruergaard wrote a short description of each method you can use.

Re-posting it here with some extra comments, so that new developers can read and understand, when to use what method.

There are “only” 5 ways to close a form:
  • Close - close the form. Similar to the 'X' button.

  • CloseOK – close the form, and set the OK flag – called by the Commandbutton::Ok

  • CloseCancel – close the form, and set the Cancel flag – called by the Commandbutton::Cancel

  • CloseSelectRecord – close the lookup form, and set return record

  • CloseSelect – close the lookup form, and set return value

The below methods (note their names are in past-tense) are used to determine if or how a form was closed:
  • Closed – Returns true, if the form is no longer open

  • ClosedOK – Return true, if the form was closed by the user clicking ‘OK’

  • ClosedCancel – Returns true, if the form was closed by the user clicking ‘Cancel’

Finally, CanClose() is called before any of the close methods get called. If CanClose() returns false, the form is not allowed to close.

Sunday, May 30, 2010

Thoughts on Wrapping Up Microsoft's FY10

Well, here's to wrapping up FY10. The kick-off of the Annual Review Season is our long, long, sloppy kiss goodnight to the fiscal year that was.

How are various things wrapping up?

Entertainment and Devices: with Bach and Allard out of the picture the E&D snow globe got a shaking where it's not clear how things are going to change. I was surprised at the number of pro-Bach comments in the last post, and a number of commenters believed that Mr. Bach had what it took to be the next Microsoft CEO. I respect your opinion, but I have to admit I did my best "ba-roo?" reading that.

Regarding Mr. Bach's departure: you can't call it accountability. Accountability would have been right after the red-ring o' death $1,000,000,000USD write-off. Come on, when senior leaders get together to consider what kind of emergent opportunities to get into, it's all about the billion dollar market. Perhaps they wrongly assumed that it exclusively meant income. It's pleasant that we have an entertainment presence like the Xbox and that Sony took a hard one on the chin, but did it really need to take that much money away from the shareholders and tarnish our reputation so much? And leave so much more unfulfilled around TV media entertainment that is getting rapidly covered by competitors?

Given the swirling flakes in the E&D snow globe, does E&D need to be Sinofsky'd? Discipline can be a good thing. You don't want every project to be like Forza. Willy-nilly feature development without stringent peer reviews and pre-checkin testing: dumb. Agile? So is using two hands instead of one to smear poo all over a wall. You've got twice the mess to clean-up. Those days should be behind us. More than anything, E&D needs leadership that oozes passion for everyday joys and who show up late Friday afternoon to play with what's new this past week and give praise and feedback. It needs joy and delight and laughter. And while running the trains on time is good for everyone, it doesn't need the stoic, passionless, data-driven rectilinear styling of a Sinofsky org's Switzerland.

No, rather than Switzerland E&D needs Italy. It needs curves and "oooo's!" and non-linear surprises. Sinofsky, I'd say, is on a three-release effort with Windows so he's busy anyways. I can't imagine if he was brought in to help pull things around, though, that it would go very well... I imagine his lieutenants first job would be to put the ribbon into the Zune client app and Media Center and then try to figure how to wedge it into the Xbox dashboard. Nanites would start flowing through everyone's bloodstream, and their skin would turn sickly pale... the trains would run ontime, just to dull destinations.

Kin: we put a lot of time + effort around Danger and producing the Kin (well, maybe more effort could have been spent on keeping the services running). Kin is not made for me or my social circle, so I can't judge it as a device. Sales will be the deciding factor here. And I'm sure when the first quarter numbers are released, we'll just say, "Well, we have an update to the Kin feature phone that we are sure will increase uptake significantly." Like fully supporting Facebook and Twitter features. I love the green dot, though.

And I do like Kin Studio, which I think pushes Kin over the top for some Millennials. If Kin Studio could be adapted soon to be a feature available for every WP7 phone user then we'd really surprise and delight potential phone users.

WP7: As for the WP7 phone: goodness. I'm hoping it's great and I like what I see. I like that a number of 3rd parties are already in the tube to deliver apps. I have sore glutes, though, from all the WP7 demos I see: every time a WP7 PM says, "Let me try this" my buns seize up hoping that it goes smoothly this time vs. the PM mumbling something about regressions in the latest build. There's still plenty of runway to go and time to fix all the various bugs and oddities, but it makes me apprehensive regarding the overall quality bar and wondering, "How did this go in so busted to begin with?" Several someones being agile, no doubt.

While we've been chasing the iPhone hockey puck (of what, two releases ago?) we risk that the real puck of today is Android. Maybe. The Android ecosystem is still too chaotic, but its potential is showing (thank you, Vic). We have to not only have great 3rd party apps on release but also show commitment in having our own series of Microsoft applications constantly going out of the door. For important as the mobile platform is, it's surprising how little we're invested in developing our own series of applications for it, hoping that developers will meander over to our party.

And as the mobile application platform grows up into more interesting devices, the Windows hardware platform is growing downwards to meet it. There's a collision of development philosophy dead ahead and it needs to be solved this summer, not within years. Microsoft seriously needs to woo developers, and if you're giving them an ever-changing flowchart of constantly updated development platforms when the competitors have straight lines, you've lost a big campaign and potentially the war. Windows, E&D, and DevDiv must be forced to reconcile the future of application development and distribution from mobile to client to cloud by Microsoft's CEO, or start FY11 with leadership that can.

Natal: I'll get a Natal device when it comes out, though I don't know how much I'll use it in the cozy space I have our Xbox in. I'm not redecorating for Natal, which means every time I boot it up I will look around at all the various potential ankle and knee injuries. It might be worth it, though, if I can swing a light-saber, force-push, and even wave my hand for a Jedi mind-trick. But not for playing paint kick-ball.

A big Windows opportunity for Natal: some smarty plugs it into his desktop and a driver installs and Win7 magically lights up for Natal interaction. Word spreads. Win7 works with Natal and you can go all Minority Report now with your laptop and desktop! That's a Jobs-worthy show-off moment: "Oh, yes, an iPad. How nostalgically quaint to have a device you have to actually smear your fingers around the surface to do something with. Now, watch my Cheetos plastered fingers bring up Media Center to play some recorded World Cup! And after that, I'll navigate the universe with Worldwide Telescope!"

Pop a cap in your ass: which by cap, I mean Market Cap and the reflections and abundant free advice issued forth when Apple passed Microsoft with-respect-to Market Capitalization this past week. A lot of focus came down on Mr. Ballmer, who shrugged it off as much as he shrugs off the lost decade of MSFT stock price. A nice case study of attitude begets results. While Microsoft has its three-screened head in The Cloud (can't wait to see that marketing campaign [eye-roll]) Apple continues a consumer-love affair of joyous design and content delivery. One bit of free advice I naturally loved: What Will It Take to Save Microsoft (MSFT) - a snippet from the end:

And I see no end to the misery. Microsoft should learn from longtime brother-in-arms Intel (Nasdaq: INTC), whose CEO Paul Otellini has cut a complicated beast down to the operations that really matter. That's the kind of sugar-free medicine it would take to save Microsoft from itself, and of course, something that drastic will never happen.

What a shame.

Yes, we need our Neutron Jack at this point. We have our supposedly endangered cash cows and then a lot of products and operations clinging on. Many of which that would never exist in a sane company. Spin-off those groups to live or die on their own, with Microsoft owning appropriate stock such that if their survival instinct kicks in and they flourish, it will be a nice hefty return. You also have to realize that product groups are way overstaffed and just need engineers, in this day and age, that can do it all vs. being silo'd into their coding, testing, or spec'ing narrow band. Specialization is not sustainable. And the Partner system needs to be nuked away: more and more it's leading to bad short-term shiny decisions meant to make Partner. Well, this list goes on. I think our next CEO comes from the outside, because only an outsider at this point can scrub the company clean and ensure that the corporate DNA is rewritten.

Stealth Layoffs: comments here for a while have been saying don't expect anymore large layoffs but do expect ongoing stealth layoffs, the kind that don't trigger the WARN act, let alone publicity. If you see your leadership meeting with HR far more frequently than usual, should you be nervous? Well, first step, ask what's up. If the answer is unsatisfying and doesn't ring true: yep, be nervous, especially as FY10 wraps up and new FY11 reduced budgets kick in.

If you or your group has indeed been affected, please, if you will, share as much as you can.

-- Comments

Tuesday, May 25, 2010

Microsoft's Robbie Bach Retires... Whoo-Hoo! (And J is gone, too.)

Just a quick celebration of this morning's news: Robbie Bach is retiring from Microsoft.

I'm so happy for him. And for Entertainment and Devices. And Microsoft.

This is a great opportunity for E&D to evolve and restructure. And, of course, a great opportunity to really screw up who to put in charge and such.

And yes, J Allard is out of here as well. Don Mattrick and Andy Lees step up. Also: David Treadwell side steps. And Office shuffles up a little bit.

What would you do with the various groups, products and who else would you put in charge?

-- Comments

Tuesday, May 4, 2010

Tool: DEV_SysTableBrowser and DEV_CreateNewProject tools now on AX 2009

3 or so years ago I created a couple of tools that provide extra capabilities for AX developers, specifically, ease up the creation of a new project with a predefined structure and name pattern, and add functionality to the way we browse tables with the standard SysTableBrowser, allowing to specify the exact fields you want to see, browsing temporary tables. Both tools were also available as Tabax plugins

You can read more about the tools, as well as Tabax, on the following pages on Axaptapedia:
DEV_SysTableBrowser home page on Axaptapedia
DEV_CreateNewProject home page on Axaptapedia

You can download the new versions of these tools through the pages on Axaptapedia, or directly from my SkyDrive: DEV_SysTableBrowser, DEV_CreateNewProject
If you are unfamiliar with these tools, I suggest you go through Axaptapedia, as it also contains a detailed description of the features provided.

A couple of things I would like to note:
  • There is a kernel bug in AX 2009 that heavily impacts the SysTableBrowser user experience. It takes around 10 seconds each time you want to browse the contents of a specific table. This bug was fixed with a hotfix rollup 3, so users of AX 2009 without the hotfix might have problems enjoying the DEV_SysTableBrowser tool.
  • In AX 2009 the behavior of SysTableBrowser changed a bit. Instead of re-opening the browser window each time the user changes from All fields to AutoGroup only, now 2 grids with these fields are added from the beginning, and hidden/shown based on user selection. DEV_SysTableBrowser provides much more flexibility when selecting the fields to display, so I was not able to follow the same approach. Thus, see bullet 1
  • I have not added any new AOT nodes to the template in DEV_CreateNewProject tool (Data sets, Report Libraries, etc). I don't think AX developers will invest that much time into SSRS reports and EP, and in these cases they will be able to manually create the remaining group nodes in the project.

Let me know if you have comments, suggestions or ideas for these tools.

Thursday, April 22, 2010

Microsoft FY10Q3 Results

Time for another quarterly update - all indicators point to a great quarter. With Win7's results and upcoming releases of Office 2010, Natal, and Windows Phone, things are on the upswing. Like I wrote back in July 2009, I believe that Microsoft has turned the corner and is headed in the right direction, though by no means is the corporation out of the scary neighborhood a lot of bad turns sent it into.

But we have hit the bottom with Vista and have emerged as the can-do underdog. If Microsoft knows anything, it knows how to do underdog. We really need to learn how to be the gracious competitive top-dog, too, but for now, underdog works.

Plus, given time, the context of the competitive marketplace has changed a lot. First: thank goodness for competition. Even pureblood Google and Apple fans should be thankful for competition from Microsoft, even if they deign its presence with faint of disdain and use air-quotes when saying the word competition (and for some reason, I can't get a vision of the Seattle Weekly's Uptight Seattlelite out my mind while writing that). Second: there's enough growing concern with Apple and Google's success that folks naturally want balance and by no means do they see Microsoft as dominating. Rather: underdog, fighting for balance.

Things have gotten interesting again. Let's check-in on some of the original reasons this random blog started up:


  • Microsoft needs to reduce employee size. It’s too big. It doesn’t need a quicky Atkins-equivalent. No, it needs to get itself on a corporate exercise program that will shed itself of unwanted groups and employees. And stay on that.
    • Wellll, we added a lot of jobs in the five years after that point, but when the cold harsh reality of over-hiring became obvious, it was handled (poorly) through layoffs.
  • Microsoft needs to stop hiring. It’s hard enough finding the scarcest of treasured corporate resources: the talented individual suitable for working at Microsoft. Stop hiring, trim down, and rebalance those precious scare employees inside to where they can be more productive and make products that delight our customers.
    • There have been freezes and slow-downs so that's good. But some hiring continues. What we really need is an efficient defrag to allow load balancing in the company.
  • Unleash employee driven innovation with a Microsoft Labs community area.
    • We have various labs now and other efforts that have come and gone.
  • Re-energize the home market. The home market is pretty tepid with-respect-to Microsoft-branded software. It can’t take that much effort to invigorate Microsoft for the home user and make it cool.
    • Yes, we realize now that the consumer market is worth pursuing vs. making the IT department happy with limiting features. People find cool technology now outside of work and bring it into the workplace (e.g., the iPhone). This is much improved and has a long way to go before we're great at it. Actually leveraging the power of the individual PC is still barely tapped, and probably groups are confused given Azure and three-screens about pushing more onto the desktop than we are.
  • Start working vigorously on Internet Explorer again. Winning the browser wars, dusting off our hands, and running away screaming from IE to the Next Cool Thing represents the very worst in less-than-competitive behavior.
    • Yep, we are working on IE with great passion. How we participate and influence HTML5 will be an interesting process to watch. I have no faith in the W3C (what was the last useful thing they helped create... XML namespaces?). HTML5 is the Next Big Thing if you listen to some folks who have large impact regarding Microsoft's future direction, so something is going to happen here. Have fun, IE-team!
  • Less research, more application.
    • Goodness knows most of the researches I know or occasionally work with are motivated to find out what product teams need and get inline with producing interesting features that the product team just doesn't have the background to create, so kudos there.
  • Continue the community effort and make it so if you’re not leading cool innovation, your butt is dedicated to some time per week helping out in the community, sharing all that wonderful knowledge between your ears. Reward that!
    • I did have this under the next section of "Not-addressed" until I realized that employee blogging covers this and has become so rampant that it has faded to a point that it's not acknowledged ("blogging is dead" and everyone now of course communicates in spurts of 140 characters. Uh-huh.). I'd like to see this turn into engineering employees writing more code that ships outside of our product line rhythm.


  • Re-interviewing: all employees below a certain life-time review average need to re-interview. Those that don’t make the cut the second time around get to look for new opportunities elsewhere.
    • Just an idea regarding what to do for people who do not have career momentum. Over the years, the question has been: "Will this person make Level 63?" - if not, they should find a new company.
  • Back to Basics. Win32 and C++. Bread and butter. Not everything can run in the freaking CLR.
    • Our development story is a complete mess. And I don't see it getting any better. I'd say we're on a collision course of Bach vs. Sinofsky given development options for the Windows Phone vs. Windows. In the middle of this is a meandering DevDiv organization. If we have a gap in our underdog armor, it is our development story.

Back to quarterly results: the analysis I look forward to:

Friday we have a Town Hall. I'm sure there will be questions about going forward competing with the iPhone and iPad and Google. And maybe questions / comments like:

  • Are the layoffs over?
  • Wow, what a great quarter. I'm really looking forward to my raise this year...

Administrivia time...

This old blog: hey slacker blog-writer, what's going on here? Well, obviously not much. Mainly, unlike many of you talented people, I don't do multitasking well. Writing especially. Back, going on six years now, this was my spare time focus for writing and reading & responding to all the great comments. It was a unique place that arose organically as a lone voice to ask, "Aren't other people concerned about where Microsoft is going?"

Well, this lone voice has other writing passions right now (not involving Microsoft) and that's where I'm putting the occasional spare time I squeeze out of my life. I'm sure you can understand. It also happens at a time where things are fairly good with-respect-to Microsoft's future and direction. Yes, there are problems but there have been more successes than failures and the success of our competitors have provided clarity regarding direction and what success looks like.

If there are interesting constructive topics you'd like to discuss, please let me know.

-- Comments

Tool: User preferred startup menu for Dynamics AX 2009

In AX 2009, the user has no control over which menu is opened in the navigation pane and address bar when AX client is started.
Most of the time you simply get the Home page, which is frustrating for a number of users. Another thing that is frustrating for them is the company account the application opens with.

The latter can actually be setup using standard application functionality in the User options form. Just set the 'Start company accounts' to the account you want for the user by default.

I wrote a small tool, that allows the user to select a preferred startup menu, ensuring that this menu is the one open every time AX client is started. Something similar existed in Axapta 3.0 application.

You can download the xpo for this tool from my SkyDrive.

Note, that it contains minor changes to a number of existing application objects.
I suggest that you compare the xpo from the import dialog and ensure that you don't override any of your changes during import - the best thing would be to re-implement these minor changes manually. Below is a list of changes that I am referring to above:
  • SysUserInfo table - 1 new field was added
  • SysUserSetup form - 1 new control was added. Lookup method on datasource field overridden
  • Info class - startupPost method changed

In order to enable the functionality, simply select one of the menus in the User options, as shown in the below screenshot. Next time you start AX, the selected menu will be open by default.

Start Menu in User options, Microsoft Dynamics AX 2009

Below is a short listing of "code patterns" used in the project, that can serve as examples for your future projects:
  • SysTableLookup - for displaying a lookup form with a list of menus
  • infolog.globalCache() - for storing a global reference to the navigator class
  • TreeNode iteration - for finding all menu references in MainMenu
  • QueryBuild classes - for constructing and filtering a list of menu references in MainMenu, used in the lookup form
  • infolog.addTimeOut() method - for scheduling execution of another method in a set period of time

Friday, March 26, 2010

Tutorial: refresh, reread, research, executeQuery - which one to use?

X++ developers seem to be having a lot of trouble with these 4 datasource methods, no matter how senior they are in AX.
So I decided to make a small hands-on tutorial, demonstrating the common usage scenario for each of the methods. I have ordered the methods based on the impact on the rows being displayed in the grid.
You can download the xpo with the tutorial on my SkyDrive.

1. Common mistakes

Often, developers call 2 of the mentioned methods in the following order:



formDataSource.refresh() / formDataSource.reread()

All of these are wrong, or at least partially redundant.
Hopefully, after reading the full post, there will be no questions as to why they are wrong. Leave a comment to this post if one of them is still unclear, and I will try to explain in more detail.

2. Refresh

This method basically refreshes the data displayed in the form controls with whatever is stored in the form cache for that particular datasource record. Calling refresh() method will NOT reread the record from the database. So if changes happened to the record in another process, these will not be shown after executing refresh().
Does a redraw of the grid rows, depending on the optional argment for specifying the number of the record to refresh (and this means the actual row number in the grid, which is less useful for AX devs). Special argument values include -1, which means that all records will be redrawn, and -2, which redraws all marked records and records with displayOptions. Default argument value is -2.
This method should be used sparingly, in cases where multiple rows from the grid are updated, resulting in changes in their displayOptions, as an example. So you should avoid using it as a replacement for refresh(), since they actually have completely different implementations in the kernel.
Also, note, that refreshEx() only redraws the grid, so the controls not in the grid might still contain outdated values. Refresh() updates everything, since this is its intention.

3. Reread

Calling reread() will query the database and re-read the current record contents into the datasource form cache. This will not display the changes on the form until a redraw of the grid contents happens (for example, when you navigate away from the row or re-open the form).
You should not use it to refresh the form data if you have through code added or removed records. For this, you would use a different method described below.
How are these 2 methods commonly used?
Usually, when you change some values in the current record through some code (for example, when the user clicks on a button), and update the database by calling update method on the table buffer, you would want to show the user the changes that happened.
In this case, you would call reread() method to update the datasource form cache with the values from the database (this will not update the screen), and then call refresh() to actually redraw the grid and show the changes to the user.
Clicking buttons with SaveRecord == Yes
Each button has a property SaveRecord, which is by default set to Yes. Whenever you click a button, the changes you have done in the current record are saved to the database. So calling reread will not restore the original record values, as some expect. If that is the user expectation, you as a developer should set the property to No.

4. Research

Calling research() will rerun the existing form query against the database, therefore updating the list with new/removed records as well as updating all existing rows. This will honor any existing filters and sorting on the form, that were set by the user.
The research method starting with AX 2009 accepts an optional boolean argument _retainPosition. If you call research(true), the cursor position in the grid will be preserved after the data has been refreshed. This is an extremely useful addition, which solves most of the problems with cursor positioning (findRecord method is the alternative, but this method is very slow).

5. ExecuteQuery

Calling executeQuery() will also rerun the query and update/add/delete the rows in the grid. The difference in behavior from research is described below.
ExecuteQuery should be used if you have modified the query in your code and need to refresh the form to display the data based on the updated query.
formDataSource.queryRun().query() vs formDataSource.query()
An important thing to mention here is that the form has 2 instances of the query object - one is the original datasource query (stored in formDataSource.query()), and the other is the currently used query with any user filters applied (stored in formDataSource.queryRun().query()).
When the research method is called, a new instance of the queryRun is created, using the formDataSource.queryRun().query() as the basis. Therefore, if the user has set up some filters on the displayed data, those will be preserved.
This is useful, for example, when multiple users work with a certain form, each user has his own filters set up for displaying only relevant data, and rows get inserted into the underlying table externally (for example, through AIF).
Calling executeQuery, on the other hand, will use the original query as the basis, therefore removing any user filters.
This is a distinction that everyone should understand when using research/executeQuery methods in order to prevent possible collisions with the user filters when updating the query.