mfp's two cents

...on Dynamics AX Development!
  • mfp's two cents

    Compiler warnings - and so what?


    Every so often I find myself in a heated debate on what the quality bar should be for the code in the solution we are working on. This is an important debate, and for the project's success it should not be down prioritized. The quality bar may vary from project to project: If you are developing an internal tool for your team, you will have a completely different quality bar, than if you where writing software to control a spaceship. So in reality it all depends on the project you are working on. The important thing is to lock down on a quality bar and have all developers buy in and conform.

    A part of setting the quality bar for a project is to determine whether to treat warnings as errors. Warnings are an intrinsic part of the tools developers use everyday such as compilers, FXCop, X++ Best Practice Check, PreFast and StyleCop. And for this reason you can have a good, sound, opinionated and often long talk on this fine topic with almost any developer you may cross on your way.

    Being a devoted advocate for improving the code quality across any project, I want to share the following general considerations (courtesy of Ryan Harlicker) with you on why to treat warning as errors:

    1. They just look bad
      If your consumers are able to run the same tools as you are, and thus detect the same warnings, that you've chosen to ignore, it makes you look sloppy. For X++ code this is the case.
    2. Most warnings are really the tool reporting an error
      Most of the time a tool reports a warning it is really an error, but the tool cannot prove it. It is then reported as a warning so a human being can verify the issue and take appropriate actions.
    3. Too many warnings effectively means no warnings at all
      Warnings tend to breed exponentially.  It is best to deal with them at the time of creation as that person has the most context and knowledge of the right thing to do with the warning. If they aren’t handled right away then the knowledge barrier and the fact that they have always been there suppresses the urge to do the right thing and fix them (or suppress them if they are by design).
    4. They are there for a reason
      The warning detection code in the tools didn't come out of thin air. At some point in time someone felt strongly enough to invest time and money in improving the tool to report a warning. At the very least the reasoning for ignoring them should be well understood and not just ignored because they are a warning and not an error.
    5. Your project may become successful
      Even when you are working on a project for a small audience with a high level of tolerance for bugs, you may eventually be in a situation where your project evolves and will reach a broader audience. As the quality bar goes up, so does the cost of fixing warnings. Fixing them right away is cheaper than fixing them later.
    6. Hate to say I told you so!
      Have you ever been debugging a nasty problem for hours, and a split second after you finally reach the Eureka! moment, you realize you were already warned about the problem well in advance? You had just choosen to ignore the warning reported. Personally, I just hate when the tools laugh at me.

    If you are an X++ developer you can learn how to resolve X++ Compiler warnings here.

    If you are working on X++ development, but cant' figure out how many X++ Compiler warnings you have, you should read my blog post on AOT Metrics.

  • mfp's two cents

    Articles on X++ development


    While digging in my archives to service a request from a co-worker I stumbled across a few articles I wrote for Damgaard Technet. Those that are still valid, I've polished a bit and made available here.

    Behavioral information messages

    How to use a form tree control

    Delaying method calls

    The user friendly Infolog

    Showing operation progress

    Global variables

    I hope you find them useful.


  • mfp's two cents

    New blog from the X++ compiler team


    Make sure to check it out:

    They already got a cool post on how to implement the observer pattern in X++.

  • mfp's two cents

    Microsoft Dynamics AX Developer Center: Your one-stop resource center for AX Development


    This is the lastest of great AX resources becoming available. This site is an umbrella site for existing information. It ties together news groups, blogs, training materials, downloads, online documentation, and much more.

    It didn't take me long to realize this should be my default home page for my iexplorer - this is a site I'll be visiting a lot in the future. Make sure to check it out yourself!

  • mfp's two cents

    Dynamics University is live.


    Here is yet another way to hone your Dynamics skills. Both application and development tracks are available.

    This is the official statement:
    University for Microsoft Dynamics is a three-week, intensive training course with foundational and case-based instruction based on real customer situations. Responding to partners’ need for quality training classes led by trainers with field experience, Microsoft is working with selected training partners to offer five tracks covering the core of Microsoft Dynamics AX consulting and development.

    Please refer to global training website for pricing, current and upcoming training schedule at:

    As more classes and new locations become available, they will be posted to the link above.

  • mfp's two cents

    Right-to-left support in Dynamics AX 5.0


    In Dynamics AX 4.0 we introduced support for Unicode. This was the first major milestone in making Dynamics AX world-ready. With Unicode support we are able to correctly render text and symbols from all written languages in the world. This has enabled us to offer Dynamics AX 4.0 in China (and Japan is in the pipeline).

    Rendering text and symbols correctly is not enough to be world-ready. Correctly layout of the text and symbols is just as important. So the next natural step is to implement support for Right-To-Left, enabling texts and symbols to be displayed from the right to the left (Instead of the English layout which is left to right). This will enable us to offer Arabic and Hebrew versions of Dynamics AX 5.0.

    I've just received my first screenshot of a pseudo-localized Arabic version of Dynamics AX 5.0. What do you think? Isn't this awesome?


  • mfp's two cents

    Survey opened: Microsoft Dynamics AX MorphX Tool Usage


    We need your help to implement the right feature enhancements for MorphX in Microsoft Dynamics AX 5.0.


    Please spend 6-8 minutes on this short survey:


    Your input is much appreciated.

  • mfp's two cents

    Channel 9 Screencast - MorphX Best Practices


    The new installment of AX screencasts is now available on Channel9. It is a 20 minute video on MorphX Best Practices in Dynamics AX 4.0 - one of my favorite topics!

    Here is the link:

    I've attached the PowerPoint slide deck to this post. The deck contains a transcript of the talk in the slide notes.

  • mfp's two cents

    Dynamics Screencasts on Channel 9


    Here is a link to all screencasts published on Channel 9 with the "Dynamics" tag.

    Future screencasts will also show up here.

  • mfp's two cents

    Sneak preview - Code Upgrade Enhancements


    Today is ZBB for Milestone 1 for the next version of Dynamics AX. ZBB is short for Zero Bug Bounce, which basically means all known defects introduced since last release must be fixed. For the Partner Productivity team it means that all known defects in the new Code Upgrade toolbox are fixed. It also means I get to do what I like the most: Share exciting technology with you!

    A big thank you is due to everyone who helped make this happen. All the cool ideas stem from talks with customers, partners and from online surveys. Thank you for providing us your valuable feedback!

    Please notice that the icons and text resources below are not finalized yet.

    Detecting upgrade conflicts

    This dialog replaces the dialog you used to get, when you click "Create upgrade project". As you can see, you now have more options. For the normal upgrade conflicts, you are still able to delete obsolete elements (those casting a shadow on an identical element in the lower layer). A new option is to "Auto-resolve property conflicts". Enabling this will automatically resolve conflicts where one property is changed in Your revision, and another property is changed in Their revision on the same AOT node. If the same property is changed in both Yours and Theirs it will still be marked as a conflict.

    With the new toolbox you can also create upgrade projects for stale code, that needs to be revisited. By stale code I mean code that violates certain practices, and must be updated before going live. Basically the feature runs the best practice tool on your code and looks for certain types of violations and creates an upgrade project with the violating elements.


    The Upgrade Project

    The upgrade project itself also offers new functionality. Each conflict, and resolved conflict will have a new icon on the individual node. This makes it quite easy to get an overview of where conflicts are, and where to pay attention. As you work your way through the conflicts, you can mark a conflict as resolved, and the conflict icon changes from a red alert to a green checkmark.



    The compare dialog has also had a facelift. First off all the stylesheet has been updated to include some nice gradients. While this is merely eye-candy we also added many new cool features. First of all the compare dialog can now be started by a short-cut key (CTRL-G), and it is promoted to be at the same level as Find in the context menu. This should save you for some mouseclick. Secondly your preferences are now being stored, so the next time you open compare, you don't have to select (again) what you want to compare. And as if that wasn't enough, more information is now available to assist you making the right decisions more easily. For properties the Original value is now included, so you now can see both: Yours, Theirs and Original in the same window. 


    Estimation report

    Do you need to tell your boss when you'll be done with your work? I do. For code upgrade the help is near. You can now print a report, that is fully configurable with estimates for solving the detected conflicts of the various types. The estimates are broken down to the same granularity as the detected conflicts, which is on a per node level. Please note, that the data in the screenshot is staged, and not really meaningful.


    At Convergence in Dallas next week, my team will be present. They will share the same information as in this post. If you are there, make sure to pay them a visit.


    This posting is provided "AS IS" with no warranties, and confers no rights.

Page 16 of 20 (191 items) «1415161718»

mfp's two cents

...on Dynamics AX Development!