NAVmoble - the pocket-sized ERP
Optimized for Microsoft Dynamics NAV and Windows Mobile powered devices

Saturday, April 28, 2007

The Most Revolutionary Microsoft Technology You’ve Never Heard Of

Marc Jacobs has an interesting post titled The Most Revolutionary Microsoft Technology You’ve Never Heard Of

He talks about the new application model based on the DSS/CSS DSS/CCR components shipped with the Microsoft Robotics Studio.

  • Do you want to easily create, host and discover lightweight services?

  • Do you want to be able to create massive distributed solution easily as you create an ordinary sequential Winforms application?

  • Do you want to be able to easily and effectively utilize multi core/multi cpu systems without even care about the standard thread primitives?



  • Then you definitely have to check out the Decentralized Software Services(DSS) and Concurrency and Coordination Runtime(CCR), which are currently part of the Microsoft Robotics Studio

    It is even more interesting: The DSS/CCR based services may be hosted in a Windows Mobile box. You may use .NET Compact Framework to create these services and run them on the mobile side.

    NOTE:
    Are you going to attend at the Microsoft Days 2007 in Sofia on 11 and 12 10 and 11 May 2007?
    Than you may check out my session about Microsoft Robotic Studio, where we'll talk about these impressive technologies.



    Links:

    Marc Jacobs's Blog
    Microsoft Robotics Studio
    The Most Revolutionary Microsoft Technology You’ve Never Heard Of

    Update
    Check out this post for CCR samples

    Thursday, April 26, 2007

    Imagine Cup Bulgaria 07 Summary

    I just came from the local round of Imagine Cup Bulgaria 07
    I was part of the jury and spent almost the whole day listening and watching the presenting teams. Despite of my expectations it was fun for me. I'm happy that I had the chance to watch these young motivated and smart people talking about their solutions.

    There were great and not so great presentations and we(the jury) had to pick up the best one - the one to present Bulgaria on the finals in Seoul,Korea.

    I've experienced a WOW! feeling, when BrainStorm(the winning team) presented their solution and as it turned out I wasn't alone - they won :)
    So guys, good luck in Seoul!

    NOTE:
    Actually, some of the other teams demonstrated interesting ideas and even remarkable technological solutions. Unfortunately, they missed to meet some of the basic requirements of the contest. Some of the teams even failed to provide a live demo during their sessions - we had to guess if they could eventually implement their ideas.

    Following some pictures:

    CC.NET Vista Sidebar Gadget

    Simone Chiaretta published his CC.NET Monitor for Vista Sidebar. It allows you to monitor the CruiseControl.NET projects from the Vista Sidebar without using CCTray.

    He took a better approach than mine and definitely his gadget has a far better appearance.


    Congratulations for the good job!


    Links:

    Simone Chiaretta's Blog

    CC.NET Monitor for Vista Sidebar 0.7

    Sofia .NET User Group Summary

    We had our regular monthly meeting again as announced before.
    Rosen Zhivkov told us the whole story about InfoPath2007, SharePoint Services and Forms Server.
    We used the food and drinks supplied by Microsoft for a while and then moved to get some beers and pizza in a local pub.
    Check out the photos:

    Wednesday, April 25, 2007

    Imagine Cup Bulgaria 07

    Imagine a world where technology enables a better education for all...


    The local round from Imagine Cup 07 will be held tomorrow. A several teams (students) will participate in a contest presenting their software solutions in front of a jury.
    The event will be held in the Education Center Elieff
    on 26.Apr.2007 at 9:30h and may be viewed on-line.
    The winner will present Bulgaria in Korea at the Imagine Cup finals.

    Meet you there.

    Tuesday, April 24, 2007

    Sofia .NET User Group Meeting

    We will have our regular monthly meeting on 25.Apr.2007 at the local Microsoft office
    Check out the official announcement here.

    Rosen Zhivkov will present "InfoPath 2007 and Forms Server".
    He will talk about using InfoPath 2007 and Forms Server with SharePoint,SharePoint 2007 Workflow , BizTalk , WinForms and more...

    This will be an interesting talk, so be there!

    If you'd like to attend to our meetings go and regitster on the Sofia.NET User group web site



    Tuesday, April 17, 2007

    Microsoft Days 2007 in Sofia

    Microsoft Bulgaria announced Microsoft Days 2007. It will be held in Sofia between 10 and 11th May 2007. There will be a lot of technical content, so be there.This time the event is payed.You may register at the Microsoft Days 2007's offical web site

    I will have 2 sessions during the two days:
    - Compact Framework For Desktop Developers
    - Microsoft Robotic Studio

    Hope to see you there. The capacity is limited, so be quick :)

    Note:
    All tracks are in Bulgarian language only.


    Links:
    Microsoft Days 2007's offical web site

    Tuesday, April 10, 2007

    SqLite: Improve database experience with managed user-defined functions

    Are you using SQLite?

    SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.


    A good .NET and Compact Framework Providers may be obtained from here

    It is very fast! However the speed comes to a price - no foreign keys, no stored procedures, etc.

    One of the major challenges with SqLite for me was related to a problem with the ciryllic supopport. In general, if one tries to execute an sql query containing the expression "upper(MyField) = @MyField " may get unexpected result. The SqLite UPPER function has a problem, when dealing with Cyrillic characters.
    So is there a solution?
    I came with 2 solutions(Both have issues):
    1. Store only upper characters in the database and do not use the UPPER function
    2. Implement custom managed "Upper" function for SQL:

    [SQLiteFunction(Name="CYR_UPPER",Arguments=1,FuncTyp=FunctionType.Scalar)]
    public class SqLiteCyrHelper:SQLiteFunction
    {
    public override object Invoke(object[] args)
    {
    return args[0]!=null?((string)args[0]).ToUpper():null;
    }
    }


    Then you may use it in the following way:

    SELECT * FROM my_cyr_table WHERE cyr_upper(cyr_column) = @cyr_string

    This all comes with a performance cost, however it is a very powerful way to enhance the database experience.

    SQLite supports custom aggregates , collate and scalar function and the sqlite.phxsoftware.com implementation allows these function to be written in managed code.

    UPDATE:

    Do not forget to register the function on application startup:
    SqLiteCyrHelper.RegisterFunction(typeof(SqLiteCyrHelper));


    Links:

    Managed SQLite Provider (.NET & compact Framework)

    SQLite.org - the offical SQLite web site



    Enjoy!

    Monday, April 02, 2007

    .NET Compact Framework: Mutex vs Critical Section

    What do you use for thread synchronization - mutex or critical section?
    Check out this blog post from Jeremy Cooke at the Windows CE Base Team Blog

    In short:
    Using a mutex is more expensive in terms of CPU utilization, but mutexes may be shared outside the processes boundaries.
    In .NET CompactFramework terms
    Critical section means using System.Threading.Monitor. For mutexes there is a class called System.Threading.Mutex.
    The problem here is that there's no easy way to assign a name of the Mutex instance - the constructor with the name argument exists only in the Full .NET version. Using the System.Threading.Mutex class from .NET Compact Framework will prevent you from creating system mutexes - e.g. you can't use the default managed mutex behind the process boundaries.

    However there is an implementation from OpenNETCF.org called OpenNETCF.Threading.Mutex2 which may be used to create system-wide named mutexe.


    You may see other CF.NET inter-process-communication techniques here as well.

    UPDATE
    Check this post: SDF 2.2 preview: IPC with EventWaitHandle for yet another IPC method to come in SDF

    Links:

    Jeremy Cooke about Mutex vs Critical Section
    System.Threading.Monitor on MSDN
    System.Threading.Mutex on MSDN
    OpenNETCF.Threading.Mutex2 from OpenNETCF.org
    Interprocess Communication with the .NET Compact Framework 1.0

    Windows Mobile vs iPhone or What did Apple invented?

    A lot of noise is going around the new tech. miracle called iPhone, announced by Apple.

    Some commercial bla bla from their site:

    Phone combines three amazing products — a revolutionary mobile phone, a widescreen iPod with touch controls, and a breakthrough Internet communications device with desktop-class email, web browsing, maps, and searching — into one small and lightweight handheld device.


    Hey, I had all these features from my first Windows Mobile 2003!
    May be the multi-touch display deserves credits (I hate the stylus stuff) , but let's wait the users to tell their words...

    Check out the differences between Windows Mobile and this outstanding tech.toy :)
    iPhone vs Windows Mobile

    Something strange about the Apple media presence:
    - Apple released iPod
    everybody says it was an outstanding innovation.
    as far as I know the PJB-100 is the first commercially sold portable player developed by Compac and marketed by HanGo Electronics Co., Ltd.


    - Apple released iPhone
    again a miracle , again an innovation
    as far as I know "some" of these features were on the market for quite some time :)
    Remember?The first idea for multi-touch display is not of Apple.. may be

    - Microsoft released Vista
    a lot of people claimed that MS stole this and that(search bar, gadgets, etc.). In other words Vista is not an innovation.


    I'm starting to think that the only one innovation developed by Apple is a method to manipulate the media and public opinion .. may be Apple (not Edward Bernays) invented PR.

    Anyway, the innovation in this business is not only about putting a single never-seen piece in the users' hands. It is more about getting a lot of new small precious pieces together and place it in the hands of the right user...