.NET 3.5 introduces a JSON formatter. So I am considering giving up Yaowi's XmlSerializer and XmlDeserializer some time later. I know this may break compatibility. So I will do that only if .NET 3.5 becomes really popular. This depends on CodeGear RAD Studio. If RAD Studio requires a .NET 3.5 installation, you can then see CBC switches to a JSON based setting file format.
My name is Lex Li. I love pop music and badminton. Now I live in Shanghai, P.R. China.
Disclaimer
I am currently employed by Morgan Stanley.
December 29, 2007
Visual Studio Clones RAD Studio?
After releasing Visual Studio 2008, MSBuild team asks its users what should be implemented in next version of Visual Studio. It is funny to see the following items are highlighted,
- Make .sln files MSBuild compliant.
- Make .vcproj files MSBuild compliant and remove VCBuild.
Why I find them funny? Because CodeGear RAD Studio 2007 already makes all project group files and project files MSBuild compliant. Take a look at .groupproj/.dproj/.cproj files you will see MSBuild script.
I was wondering why there was no .sln files in RAD Studio. At last I know that .groupproj files are much more convenient than .sln files.![]()
Vista SP1 Performance
I was expecting Vista SP1 and had installed SP1 RC as soon as it was available. But I did not see any significant improvement. Today I saw a piece of news on CSDN.net that Vista SP1 RC performs even worse then RTM in some aspects. OMG, terrible!
Should I ask for a refund?
December 26, 2007
Product Review: Amazon.CN Service
I have bought a lot of books online and I like Amazon.CN a lot.
My Harry Potter 7 copy was delivered to me by Amazon.CN. Have to say I made a wrong decision and let it pass through China Post system. The first service dropped to a intolerable level because as all known China Post is the worst I have ever seem. After about two weeks I got the book.
So this time when I ordered a pair of headphones the day before yesterday, I asked Amazon to ship it directly to my office. OK, I got it this morning.
I used to love China-Pub.com, but since it failed to send me a book this September I stopped to try something new.
BTW, Taobao.com is nice if you want to buy something unavailable on Amazon.CN. Because on Taobao you can always receive the goods first and pay later, you can pay without any fear. I bought an out-of-print "Refactoring" copy there. However, the book was sent to me by the seller directly without some official supervision, so I was not that confident until the book arrived.
December 25, 2007
Product Review: SNMP Libraries for .NET Evaluation Report
In TCP/IP stack, HTTP, FTP, SMTP, POP, IMAP are popular so you can easily find free libraries to use for those protocols in nearly any language. But to do something about SNMP on .NET the range is quite limited.
So let's first take a look at what SNMP libraries are available in other languages.
- Net-SNMP (BSD like license) should be the most popular all around the world because it is written in C. So you may find it on any Linux/UNIX system.
- SNMP4j (under Apache 2.0 license) is most popular open source choice for Java developers while commercial products from companies like AdventNet are also quite nice.
- For native C++ developers, SNMP++ (BSD like license) should be a natural choice, although there are tons of commercial products too.
However, while you can find a lot of choices that sometimes drown you in other languages, there is only a few choices you can make on .NET. After googling for a long time, I can only find 5 libraries suitable. They are,
This one is open source also under BSD license, but I could not compile the source code to a binary file. I am not a master of C++/CLI so I give up. My last attempt was to read the comments inside and found out that there might be some memory leak somewhere because wrapping over SNMP++ is really a hard job.
Because this library is developed with C++/CLI, I am sure it is not Mono friendly. If you need to target Mono, this library may not be a choice.
Dart provides this excellent product which supports SNMP v1-3. And the demos are fabulous. I was happy when I read the references. Why? Have to say the interfaces are well organised and defined, so every name is natural and meaningful. The only weakness of this library is that it is not Mono compliant (one PInvoke with a few Mono TODOs). An ActiveX edition is also available for native Windows development.
IP*Works! Secure SNMP for .NET
/n Software has a complete product line for SNMP (full spectrum including Java, C++Builder, Delphi, ActiveX and .NET). However, the weakness is indirect PDU manipulation like creating a PDU from scratch and sending it out. This library has 9 Mono TODOs and supports SNMP v1-3. Notice that /n Software never sells source code to customers.
Updated: Lance, I know I can access PDU raw bytes, but it requires me to parse the bytes myself which is not convenient. Why not provide a PDU(Parser) class?
Updated again: Now #SNMP may be used to parse those bytes.
NetToolWorks focuses on .NET library, so its library for SNMP is the only product and quite powerful. The weakness points are,
- Data containing in the response messages are raw string, which means I have to do custom parsing on the data string.
- Only numerical OID/IID can be used because I find no translation utility class inside. So it requires you fully understand the MIB files you use and doing the translation yourself.
- There is no MIB browser demo. If you need to understand the MIB files yourself, no doubt you need to DIY a MIB browser.
I know MIB parsing is optional because you can use numerical OID/IID nearly everywhere, but textual OID/IID support is really a plus because some developers (especially the maintainers) find textual forms more readable.
This library has 8 Mono TODOs and supports SNMP v1-3.
Updated: I don’t have time to evaluate the latest version of this library so things may change rapidly.
AdventNet ports its famous Java library to .NET. And the only issue I see is that there is no SNMP v3 support. And this library is fully Mono 1.2.6 compliant so the best choice if you also target Mono.
Conclusion
If you are developing a SNMP related product on .NET, you'd better pick up one of the four commercial libraries above to speed up development. The generic requirements you should specify are,
- SNMP v3 support
- Mono compliance
- Low level/PDU interfaces
Do not forget to try the products before buying because all of them are quite expensive (over 1000 USD). If your MIB files cannot be consumed by one library, surely you should choose another.
Also I know there are other open source SNMP libraries for .NET but none of them is feature complete so you cannot easily development a complete SNMP agent or manager out of them.
Update:
After so many months, things change. For example, SNMP.NET is now 3.1 and a few weak points listed here are fixed in this new release. However, I don't have time to initiate a new round of evaluation , so dear readers, please do it yourself and I am sure you can find a good choice.
Updated Again:
The Nstrument .NET Snmp Library
I suddenly came across this library this afternoon and moved by its API design. Impressive. But I did not try it so I don’t have more to say.
What's more? The open source SNMP implementation for .NET and Mono maintained by me is approaching 1.0 release. Now SNMP v1 support is done, and I am working on a MIB browser demo to reveal the power of this library. Like PowerSNMP and Nstrument, #SNMP uses a natural API interface. If you are interested, please have a visit.
Merry X'mas & Happy New Year
2008 is coming, so now let me send out my wishes to all best dear friends (and surely myself),
- Wish you all Merry X'mas and Happy New Year
- Wish you enjoy the upcoming Code Beautifier Collection 6.0 Final
- Wish CodeGear RAD Studio 2008 a successful product
- Wish Windows Vista SP1 ends my nightmares
- ...
December 24, 2007
RAD Studio December Update
InstallAware and CodeGear has been blamed because RAD Studio installation is really slow. But I am still believing that Microsoft holds the key.
I am really disappointed that installing December Update takes me three hours on Windows Vista Home Basic with rollback off. But after all, I met only one warning (some file was missing). After clicking Retry, everything went on well.
It seems that I am still a lucky man while others meet issues when installing this Update. Am I that lucky? I just follow the official measures available on CDN.
In fact, I think InstallAware is better because I remember that original CD/DVD is required if you want to install Delphi 8/2005/2006 (correct me if I am wrong).
So now, I can focus on GrapeVine Final and try to deliver it as soon as possible.
GrapeVine Voice: Free Unmanaged Resources
I have been programming in C# for a few years, but I never dig deeper to unmanaged resources related topics until last Friday I met an exception when launching Favourite feature is WiseEditor Plus.
I set break points in order to locate the bug but I failed. The debugger just could not tell me where the issue was. Suddenly I noticed some modifications I introduced a few weeks ago in ExtractIcon.cs.
I followed MSDN reference to Icon.FromHandle to free the handle with DestroyIcon. The following is the sample code from MSDN.
1: [System.Runtime.InteropServices.DllImport("user32.dll", CharSet=CharSet.Auto)]
2: extern static bool DestroyIcon(IntPtr handle);
3: 4: private void GetHicon_Example(PaintEventArgs e)
5: { 6: 7: // Create a Bitmap object from an image file.
8: Bitmap myBitmap = new Bitmap(@"c:\FakePhoto.jpg");
9: 10: // Draw myBitmap to the screen.
11: e.Graphics.DrawImage(myBitmap, 0, 0); 12: 13: // Get an Hicon for myBitmap.
14: IntPtr Hicon = myBitmap.GetHicon(); 15: 16: // Create a new icon from the handle.
17: Icon newIcon = Icon.FromHandle(Hicon); 18: 19: // Set the form Icon attribute to the new icon.
20: this.Icon = newIcon;
21: 22: // Destroy the Icon, since the form creates
23: // its own copy of the icon.
24: DestroyIcon(newIcon.Handle); 25: 26: }You can check GrapeVine code to see what I have written and the bug is not hard to find. I destroyed the handle already but continued to return the Icon instance to the caller. Even though the exception is raised later, you cannot locate the bug in a glance.
David's original code fails to free the unmanaged resource because DestroyIcon is not called. It is a horrible mistake that my modifications mess things up. BTW, the fix is really easy after reading MSDN carefully ("since the form creates its own copy of the icon").
Yes, simply return a clone (created by Icon.Clone) of the Icon instance (created by Icon.FromHandle), and call DestroyIcon on the first Icon instance (created by Icon.FromHandle). And there should be no more baggage.
This fix is part of GrapeVine Final which will be available soon. Stay tuned.
December 23, 2007
Harry Potter 7 Extras
The seventh should be an end but it seems that J.K. Rowling did hide a few stories somewhere. So an encyclopedia may come some day to reveal those hidden stories about dark, hope, and love.
When I touched the first book (Simplified Chinese translation) in 2002, I never thought that this series could give me so much joy all through the years, especially when the future is unclear.
Thanks, Ms. Rowling.
MS, A Terrible Disease
Next time when I type the word "MS", I should be thinking of this terrible disease at first.
Multiple sclerosis is the disease that took J.K. Rowling's mother's life.
Open Source Licenses Puzzle
I am not a law school student, so I cannot understand those words. So today when I suddenly came across this link, I found that Code Beautifier Collection may break some rules somewhere.
"That is, a module covered by the GPL and a module covered by the MPL cannot legally be linked together."
This line may indicate that CBC cannot make use of jcf.exe and jcfstyle.exe which are MPL covered. However, if we consider that CBC in fact is shell executing them and does not link to them, this may not be an issue.
Should I find a lawyer to help clear the clouds and dusts? Who can solve this puzzle? Certainly I would remove incompatible parts in future releases.
If you want to start an open source project under GPL, I recommend you take a look at this link at first and know what kind of code can go into your project.
Opposite Sides of Delphi Parser
If you read this post you know that Daniel is searching for a native Delphi parser written in Delphi. And definitely, the comment there provides the best solution right now, an open source parser contributed by Castalia author, Jacob.
I have been searching for Delphi parser too, but I cannot make use of Jacob's parser because I need something for .NET. If you take a look at HardQuery and GrapeVine source code you know that I was trying to parse Delphi by using Code DOM but that was not a pleasant trip. So when I read Daniel's post and found DGrok, I surely would try it.
Thanks, Daniel. Your question answers my question by accident. Merry X'mas.
December 22, 2007
Failed to Extend Windows Live Writer
There is an SDK for extending Windows Live Writer. However, I do not know where to start.
I want to create a plugin that archives existing posts so you can easily backup your precious words. Also I think it can be further improved to help you migrate posts from one provider to another.
But even though WLW SDK provides three categories of API, I cannot find what I want.
Provider Customization API is for blog service providers like Windows Live Spaces, WordPress, and TypePad.
Application API is for launching WLW from an external application.
And I am not going to write one of Content Source Plugins which are common.
BTW, It is sad to see that a plugin installer should be MSI based. That prevents me from creating an installer with Inno Setup.
Why not release this project as an open source project so everyone can play with the code in order to meet all requirements out there? Should I wait until certain APIs are posed in later WLW? Sorry I won't wait. I would try other ways.
Brazil Trip Cancelled
I won't go to Sao Paulo because the project related is cancelled. Wish I could visit that beautiful country some day.
Product Review: Doc-O-Matic Express
NDoc was used to build Code Beautifier Collection references file until it became obsolete. From then on Sandcastle has been a good helper even though it is far from perfect.
I tried Doc-O-Matic a long time ago when it was hard to configure the settings. And yesterday because I read on CodeGear newsgroup that a free Express of DOM is available, I thought I should have another try.
I have to say now DOM is much easier to use. For LeXDK references, all I should do is just choose the .sln file and a few more clicks. Because it is an Express Edition, so at last a Command Prompt must be launched so as to call domexpress.exe to run the DOM project file.
Even though the compilation takes a relatively long time (just like NDoc and Sandcastle), the final result is nearly perfect!
Now Delphi help is powered by DOM too. Wish in Delphi 2008 we can see a better help system.
I am considering moving from Sandcastle to DOM Express as soon as possible. And hope you enjoy the help file then.
GrapeVine Voice: Delay A Little Bit
I know the X'mas is coming, but December Update of RAD Studio 2007 updates Borland.Studio.ToolsAPI.dll again, so GrapeVine Final needs to be recompiled and tested.
I will try to release it before 2008. Stay tuned.
December 21, 2007
Who Meets MSI Hell
I have installed and uninstalled Visual Studio 2005/2008 several times without tough problems until suddenly I cannot install Microsoft SQL Server 2005 any more. That installation seems crushed and cannot be easily restored.
On MSDN forums, it is not hard to find similar reports about failures of installing Microsoft products, such as .NET Framework, .NET SDK.
And CodeGear at last finds out that using InstallAware to build Delphi setup is still buggy.
What happens? It seems that all MSI based installations are not stable enough! Yes, even though my project powered by InstallAware is small and easy, it just takes so long to install which causes a lot of complaints from my representatives.
Should Microsoft improve MSI badly now? I am on bended knees.
December 19, 2007
Windows Live Writer Frozen Issue On Vista
The Windows Update brings me the latest WLW last weekend. But from then on I have experiences several WLW frozen issues on Windows Vista Home Basic. The problem is that after clicking the Publish button, the dialogue freezes and I cannot operate it any more. The terrible thing is that I cannot even kill the process to get rid of the frozen WLW (it is closed if I log out or shut down Windows). This issue is rather annoyed but I do not know if anyone meets the same issue. I have Vista SP1 RC installed. Wish this RC is not the cause (if it is I have to uninstall it soon).
BTW, WLW latest version runs well on Windows XP SP2.
Should RemObjects Purchase CodeGear Delphi?
This post is triggered by a CodeGear newsgroup thread.RemObjects is running Chrome well. This pure Pascal for .NET compiler and related Visual Studio add ins really show why Pascal is not dying even if .NET and C# is there. Because Chrome 1 and Delphi 8 came nearly the same time, a simple comparison can reveal why RemObjects is bit of lucky over Borland/CodeGear.
How to Build the IDE?
In the past, if you need to sell a compiler, you need to sell it with a good IDE. This rule is setup by Borland with its Turbo Pascal, but Borland failed to match it with Delphi 8 for .NET/Delphi 2005/2006 (lack of resources). But how did RemObjects come through while it had nothing at all? The marriage of Chrome to Visual Studio really saves RemObjects at last even though at first selling Chrome to Visual Studio owners is not that easy.
We cannot easily draw a conclusion that Visual Studio contains more interesting features than Galileo (Borland Developer Studio), but VS is more stable and extensible. Thus, RemObjects gets rid of IDE nightmares (although headaches are unavoidable because VS source code is not that open like Eclipse). Now Visual Studio Shell is out there, so maybe RemObjects will get out of Visual Studio bundle, and starts to build a Chrome Studio some day.
How To Release the Product?
RemObjects adopts to a subscription based model much earlier than Borland/CodeGear who is still fighting to get there. Who buys Chrome today can receive later update easily, even bundled Visual Studio update is available. This kind of offer can strongly inspire the users and increase loyalty.
Borland used an out-of-date model for so long and failed to deliver extra values to its loyal users, so when new technology was coming, its user base crushed. Even now, CodeGear cannot easily get rid of the clouds and mists. People who fear of "I will fix this in the new version" cannot trust CodeGear naturally.
I'd like to say in fact CodeGear tries its best to improve the experience now. Delphi 2007 is a good example. Even though the installation experience is still far from optimal, we get update all over the year which not only fix bugs but also deliver new features (like Blackfish SQL). A funny thing is that there are so many updates so it is hard to name them in numbers (numbers mess things up this time like Delphi 2007 Update 3 and Release 2), so for the first time we get something called December Update.
How to Improve the Language?
Old languages like Pascal need new features just like new languages like Java and C#. But Borland/CodeGear lost so many gurus along the path (Andres, Chuck, and Danny), so it is really hard to bring something new and useful in every release (generics is the best feature in Delphi 2007 for .NET). Also maintaining two compilers is not easy.
RemObjects is lucky that Marc Hoffman is such a nice leader, so some features added to Chrome is really cool (like design by contract). And building Chrome on .NET is much easier (than maintaining two compilers for two platforms).
How to Earn Trust?
Chrome always releases something free so you can touch (free compiler and runtime). Even though at first Chrome was full of issues too, it grows up and build up a user base. When Chrome 1 targets Mono, I doubted whether RemObjects can enhance that field of support and now Chrome officially supports Mono and targets Mac OSX with an interesting idea of coding in Visual Studio. The continuity in roadmap clears doubts.
But Borland kept losing users by messing up with its roadmap. Sometimes the trial edition is not up-to-date (Delphi 2005 and 2006) which may lead users to the wrong conclusion. Wish CodeGear can focus on the current roadmap which is still promising and meets major voice and deliver something as perfect as possible in 2008.
Conclusion
Yesterday I joined a fierce discussion on CodeGear newsgroup about whether RemObjects should acquire CodeGear Delphi. The idea was so original but reflected the truth that some users were still doubting CodeGear's future.
RemObjects' way may not be clonable because time goes by. However, because so many people still care about CodeGear, Delphi still has some hope.
Product Review: InstallAware Advantages Over Inno Setup
I do not like to do this kind of comparison because IMHO a commercial software should be better than the open source one or it is going to die. But this post makes me speechless so I guess I can at least put down my opinions here.
We all know that CodeGear's partnership with InstallAware does not come easily but in all the decision should be rational. What is unexpected is that part of the current result is happiness while the other part is pain.
Pros,
- Delphi can be installed without a media kit. This kind of installation experience is cool.
- One installation for all languages.
- InstallAware enables you to debug the installer script with a debugger. Using break point is fantastic and a performance boost.
- Visualization really reduces your time on the script. Support for those runtimes (.NET FX, SDK, and J#) are just a few clicks away.
Cons,
- MSI based installation is slow. Even though Microsoft holds the key, its Visual Studio and Vista SP1 installation is rather slow too.
- Downloading such a large project from Internet kills people who used to fast pace. For me, it is still tolerable.
- MSI installer can kill the author sometimes. There has been a lot of complaints over CodeGear's installer especially for the December Update (and I just cannot install Microsoft SQL Server 2005 Express on my computer).
Can Inno Setup save CodeGear or Delphi users at last? I do not know. What I know is that,
- I cannot easily debug IS script (some of my script can be debugged in Delphi but that just verifies the algorithm without runtime break point and live information).
- lack of first class .NET or other runtimes support. I have to search for .NET related script sample here and there.
- There is not enough visualization so you have to write code most of the time. So the quality of your script is dependent on your experience with IS.
But I believe IS is best in at least one way. The installer created is not MSI based, so it runs as a flash. Pascal script is more capable of MSIcode.
Do not know what CodeGear will do in the near future but wish those guys can make something right - clear the clouds and mists around InstallAware, or switch again to miserable uncertainty.
Long live Delphi
(Update: I do not mean to look down upon Inno Setup, who serves Code Beautifier Collection well for so long. But more evidence is needed to prove it is perfect for CodeGear RAD Studio, isn't it? CodeGear is building something critical for other developers' success, so every step it takes should be careful.)
December 18, 2007
CursorFX Is Coming to Replace CursorXP
If you want a nice cursor on your screen, you may give CursorXP a try. But today, Stardock publishes a preview of CursorFX which surely is better than CursorXP.
Something interesting is that Stardock starts to use InstallAware to package setups. Yes, WISE is no longer optimal in this land today.
BTW, CodeGear is going to tune its install package for RAD Studio. I doubt how much InstallAware can contribute because it is the MSI engine inside Windows and the Windows itself that cause so many problems. The only hope is the upcoming MSI engine 4.5. It seems that this last hope is not yet part of Vista SP1 (or XP SP3), so Microsoft must be working hard on it.
December 17, 2007
Life of Programmers
Today I finally added Corbin's blog to my list. Although he joined Apple, his posts are still worth reading because his life is amazing.
I never thought a programmer can enjoy so many funny things in life. Corbin is good at unicycle and rock climbing, and contributes his spare time on those interesting activities. And now Corbin has moved to his new house with his girlfriend.
Now switch to boring life of a programmer in China. He or she is not paid well, and cannot afford buying an apartment in Beijing, Shanghai, or Shenzhen (BTW renting a room is also expensive). He or she needs to work more than 8 hours a day in order to finish projects on time. He or she has limited time to play sports or visiting friends...So, being a Chinese programmer, it seems that you are doomed to be a bit of unhealthy, isn't it?
My Shanghai life is kind of in between. I do not need to work that long, so I have time to enjoy badminton, to watch movies, and to maintain my open source project.
In your country, what is the life of a programmer?
December 16, 2007
Powered By Visual Studio Shell
Finally Microsoft releases something like Eclipse RCP and several projects soon pop up.
If you've subscribed to VSX Team Blog you may already know there is now a free and standard alone IronPython Studio out there with other interesting pieces.
Now what I am waiting for is a Chrome Studio from RemObjects. Because those guys know so much about how to extend Visual Studio, a Chrome Studio must be possible.
The only issue you might meet some day is that you cannot modify the shell because Microsoft does not provide the source code like Eclipse.
December 11, 2007
GrapeVine Voice: JCF for Generics
CodeGear RAD Studio 2007 introduces generics to Delphi for .NET. This new feature would be ported to Win32 side too in the next version of Delphi. Therefore, JCF's support for generics is coming today!
As a result, I will add this nice piece into 6.0 Final. Stay tuned.
December 09, 2007
NAnt Update
When I was developing HardQuery R2 Update 3, I thought I should move to MSBuild completely because NAnt would be no longer active.
But today, I saw a post on Monologue that announces new NAnt and suddenly found that I was absolutely wrong. So why this project goes live again?
I tried xbuild which is part of Mono and clone of MSBuild targeting non-Windows platforms and the latest implementation was not ready for my usage.
So NAnt is still the best choice on non-Windows platform before xbuild goes older. According to the release notes, this new version is very promising.
BTW, I always think the guys should create an icon for NAnt!
Lucky Stars
I still love one of Britney Spears songs named 'Lucky'. And one of these days I watched Disney's movie 'High School Musical 2' and met those 'lucky stars' again in 2007.
I guess the power of old media such as TV channels, newspapers, music industry and film makers has been weakened by Internet, but still that power keeps updating our vision with new guys.
Who will be the next Zac Efron (Troy Bolton) or Daniel Radcliffe (Harry Potter) that makes every young guy jealous?
December 08, 2007
Embedded CLR Choice
I know a lot of Chinese companies choose Windows CE and .NET CF. It is OK, but just not that convenient, isn't it? You must compile the source code differently from the desktop .NET (even the source code should be modified somewhere which is boring).
I remember that when Danny Thorpe talked about CF development, he commented that Microsoft shouldn't have ripped so many things out of CF. Guess if Microsoft provides better binary compatibility between desktop .NET and CF, this post would never be written like this.
Is there an alternative? Obviously, Mono + Linux is a better choice. Linux has been a successful embedded OS for a long time while Mono CLR is compatible to .NET desktop. Therefore, you can build and test on your laptop and download the assemblies to the embedded device. Run, and it is done.
Give Mono a try, because someone has already succeeded.
December 05, 2007
NetBeans 6
It is now available but I have to download JDK 6 separately. I wonder why Eclipse requires only JRE but NetBeans for C++ requires JDK.
Interwise Experiences
CodeGear uses Interwise technology to host online live training sessions. I joined one session in September about Delphi for .NET Generics. And just right now I joined Luke Fan's session on Blackfish.
Have to say the first experience is fine because so many people joined and the topic is hot. However, the second one is not pleasant. Both of Luke and I are in China. Therefore using a North America centric hosting system made the connection so fragile that it broke several times.
Another important thing is the telephone numbers. When you dial it outside North America, it charges you. Sad that it is not really international.
Now I am looking forward to the session given by Gordon Li which is due to December 19th. ECO for VCL for .NET should be a fine topic.
December 04, 2007
GrapeVine Voice: Turn It Off
I modified CBC installer heavily in the GrapeVine process. And now this installer does more tasks than HardQuery ones. For example, a significant feature is that it will exit when CodeGear RAD Studio is not installed or critical Updates are not there. In this way, I can ensure that CBC works fine but this prevents some developers from consuming my assemblies.
I may change the behaviour a little bit in 6.0 Final. Maybe a confirmation dialogue is better. Stay tuned.
Windows XP Themes: Luna, Zune And Royale
I have been using Windows XP for what, about 6 years. The default theme Luna looks nice for the first few years but I got tired of it at last. Then I met Royale, a theme for Media Centre. This fancy theme helps my eyes. But tiredness comes again.
It is yesterday that I knew the existence of the third theme, Zune. And this morning I could not help installing it and found it perfect. I love dark colours thus this time I can start to feel good again about Windows XP.
Also I change my Windows Live Writer and Messenger colours to met this dark brown theme.
At home, I use Windows Vista. Have to say black is my favourite choice.
BTW, I know WindowBlinds and StyleXP can bring you a lot of other styles. However, official themes from Microsoft is not only certified but also tested completely (no tiny flaw can be easily found by my critical eyes).
December 03, 2007
MonoDevelop for Windows
It is reported that future versions of MonoDevelop will run on Mac OS X and Windows. That is nice news. But I wonder who will use MD on Windows? What more it can bring when SharpDevelop is already there.
And soon I figure out that SD focuses on Microsoft .NET more than Mono. Thus Mono support is limited in SD while MD is mainly targeting on Mono. So we can expect to use MD to target Mono more easily.
Even though I do not like GTK#, I think a cross platform MD is necessary. Yes, it could be a wonderful demo to show how open source .NET client applications can be. We already see several successful Mono based/supported applications, but most of them are still ASP.NET applications (MojoPortal) or mainly used on Linux (Banshee). Wish after porting MD, the community can port something else to Mac and Windows soon.
(Update: According to this post and this, a Windows installer will be available soon (as well as a Mac version).)
December 02, 2007
GrapeVine Voice: Issues Open
It is until I started to capture new images for GrapeVine that I found out a few small flaws inside. Therefore I think releasing GrapeVine later is a better idea. In this way I can spend more time on the documents to deliver something worth reading.
Although it is said that most people do not read user manuals, I think it is still the best way to describe what CBC can do for you when I cannot afford redoing the same thing on Google Code because I know so little of WIKI markings.
The biggest problem is that Stardock Cursor XP conflicts with TechSmith SnagIt 7.2.5. Thus I cannot remove my cursor from the results. I will uninstall Cursor XP later to see if things go well again.
Now, stay tuned. GrapeVine will be available in weeks.
(Update: After uninstalling Cursor XP, SnagIt starts to work fine. However, I still cannot capture CBC menu items correctly. I will ask my technical writer for help.)
December 01, 2007
Cross Platform Object Pascal (Part II)
In this part, I am going to do comparison between Delphi and Chrome. I try to illustrate why Delphi goes this way and Chrome approaches another. Correct me if anything is wrong.
The IDE
Chrome package consists of a runtime plus a Visual Studio plug in. The runtime ensures you can build and run Chrome applications without any IDE which is also named the command line version of Chrome.
In the past, Chrome VS plug in enables you to develop Chrome WinForms and WebForms applications in VS. And now, the plug in also enables you to develop Cocoa# applications for Mac OS X in Visual Studio.
Because Visual Studio 2008 introduces something named Shell, I guess one day RemObjects can build a standard alone Chrome IDE within it.
RO preferred Visual Studio because,
- RO does not have an IDE.
- Visual Studio is stable.
- no need to maintain this IDE.
Borland used its own IDE because,
- you can do anything in the IDE. That is why we have Together and Live Templates now.
- no need to sell Visual Studio with Delphi.
- there was no Shell at that moment and Eclipse was not perfect.
After about 3 years, everything changes. Now, Eclipse based IDE is so popular (CodeGear uses it for JBuilder and 3rdRails) and Microsoft releases Visual Studio Shell. Look like that RO made a better choice.
RO announces that it will add support to MonoDevelop. Let's wait and see what will happen.
The Language
I do not want to start a language war.
Chrome is purely .NET and no VCL is there. Therefore, learning Chrome is like learning C#.
Delphi has VCL, so you need to learn it as well.
Both languages are evolving. RO and Borland/CodeGear did add a few interesting extensions to Pascal, an old language, but most of them are not well known.
Chrome does not support Win32, and Delphi does not support .NET 2.0, 3.0, and 3.5 completely (e.g., no visual editor support for Windows Forms and WPF).
The Conclusion
You must make a choice if you want to learn Object Pascal today, but if you already use either of them, stick to it and keep an eye on the other.
Cross Platform Object Pascal (Part I)
This post was original named as RemObjects Updates because after reviewing what RemObjects has done in the past two years, I am sure this company is doing something good. But soon there was a thread on CodeGear newsgroup about Delphi and the .NET platform which I involved, I thought it is now the time to write about something different.
Object Pascal is not a new language. However, its cross platform support is required by many developers. Therefore, there are totally three major groups working on this issue.
Borland/CodeGear Delphi/Kylix
In the past, when we talked about Object Pascal, we must be referring to Borland Delphi. So when Kylix for Delphi was out there, we all knew that Delphi became cross platform (for Windows and Linux). Even though Kylix was not yet perfect, it was once the best way to do cross platform Object Pascal development. However, Borland stopped this product line and CodeGear now has not enough resources to revive it.
FPC Community
The second trial in this field is Free Pascal Compiler. And have to say it is wonderful that FPC supports so many platforms (not only Windows and Linux). This reminds me of GCC, but it is sad that there are still lots of issues. First, it is not 100% Delphi compliant. Second, the IDE for it is not that perfect. Third, there are some copyright issues unresolved. Even though it is a very successful open source project but using it in commercial applications seems impossible.
RemObjects Chrome
The latest and promising solution is provided by RemObjects. Yes, it is Chrome for .NET/Mono. Even though there is no more VCL in Chrome, the .NET BCL is still powerful enough. And as Microsoft continues to add new pieces into .NET, Chrome has lots of libraries and components. Novell tries its best to make Mono stronger each day, so now Chrome for Mono applications can run on Linux and Mac OS X.
My Choice
So what is the best solution? I believe if CodeGear can revive Kylix or take over FPC, Delphi is still the best. Win32\64 + .NET/Mono + native cross platform is most complete solution that meets everyone's requirements. Chrome is the second because cross platform .NET/Mono can handle most problems. You can try FPC if either Delphi or Chrome fails you.