April 2007 - Posts
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 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
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
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 take place 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!
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
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 siteI 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
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
hereIt 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!
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 mutex.
You may see other CF.NET inter-process-communication techniques here as well.
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 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...