Total Pageviews

Disclaimer

This is a personal web page. The views expressed on this blog are mine and do not necessarily reflect the views of my current employer.

I am currently employed by Morgan Stanley.

September 29, 2007

Finally This Blog Is Inaccessible From My Office Too

I know my blog cannot be accessed at home. I also know a lot of my friend cannot access it from other cities in China. And now I find out at last I cannot access it at office.

So how can I make a post now? And how can I see what I have posted? Luckily blogger.com domain is not filtered out so Windows Live Writer is still working and I can use Google Reader to subscribe to my own blog.

Wish some day we can have some precious freedom here.

September 26, 2007

Block Breaker: Google Reader's Difference From Thunderbird

In China, it seems that Blogger.com's domain blogspot.com is blocked. This means billions of people are deprived of the chance to view billions and billions of blog posts around the world. For me, this is very annoying because many technicians I admire are Blogger users.

The fun side is that using Google Reader, I can see the posts I love again. How this happens? Let's compare Google Reader to Thunderbird.

When you add a RSS source to Thunderbird and start to read the posts, it is in fact Thunderbird who connects to the source and downloads the content. As a requirement, your PC must have access to the source. That's why I cannot read Blogger.com in Thunderbird. However, Google Reader does things in a different way. The posts are in fact downloaded by Google servers in background. Then content is sent to your browser by AJAX. Haha, as Google runs Blogger, its servers have full access to Blogger.com's RSS sources or sites like FeedBurner (now also part of Google). So, I can read those interesting posts now.

However, this workaround sometimes fails. That's because some authors choose to publish a compact RSS source, so you can only see portion of the posts. Hallvard, a Delphi guru, has a compact RSS source. Wish he could change the settings one day so I can fully enjoy his wonderful reports on Delphi.

GrapeVine Voice: Issue ID 2 On Homepage

This is an urgent notice to my dear users of Code Beautifier Collection 6.0 M5. It seems that there is something changed in ToolsAPI so a new bug is found in M5. The details are described in this report.

I have already reproduced this bug and started to see what's wrong inside. I am not sure whether it can be solved in a week, so please follow the workaround I provided in the reply to that report and turn off TypingSpeeder feature.

issue2

Sorry for the inconvenience. Stay tuned.

BTW, this case strongly reminds me of an important feature that CBC lacks. Whenever there is a big issue I want all users to know, I should publish the notice somewhere and CBC should be able to find it and display to the users. I will see how to achieve this in a later version of CBC. Also I believe the design can be reused in a lot of other applications.

(Updated: I have found a fix but it will take me two or three days to code and test. M6 will be out once I finish.)

(Update Again: Sorry that the first fix failed. And I have to try another way this week. Wish I can publish M6 soon. Stay tuned.)

September 24, 2007

Wait Wait Wait For Open Source Alternative

I love PDFCreator but it does not yet support Windows Vista. And now I have found CutePDF Writer which does similar things. The only difference is that PDFCreator in face provides much more options for me to choose from. This means sometimes open source shines.

September 22, 2007

The Power Of AD

Sometimes it is hard to convince myself to do some AD for Code Beautifier Collection, and I have so little knowledge on how to publish AD. But this time, with the help of Google Analytics I see the power of AD. Surprising!

On September 19 I published a small AD about Code Beautifier Collection 6.0 M5 on CodeGear newsgroup to announce support to RAD Studio 2007. And I never thought that on September 20 there were 110 visitors to CBC Homepage from all around the world. Never believe there were so many counts from Russia and Ukraine. *

There are a lot of things I did not do this time to make a complete AD,

  1. There is no screen shot.
  2. There is even no direct link to CBC Homepage. I just publish the link to Code Central ID of CBC.
  3. There is no line about any feature of CBC. One user reminded me of this last month but because of my poor memory I failed to make it this time.**

Forgive me if I messed up this time. Next time I will be more careful.

*Forget to mention that ArtCSB author, Artyom Fedyuk, comes from Ukraine. And now ArtCSB has been a Plus of CBC with some out-of-date features removed.  Artyom, I owe you so much. Because I cannot contact you by the mail address you left in ArtCSB readme file, I'd like to say thank you so much here.

** After installation you can easily find the user manual. It documents most features.

September 18, 2007

GrapeVine Voice: M5 Is Now Available

CodeGear released RAD Studio 2007 a few days ago. And Delphi 2007 Update 3 was then available, too. They both require a new version of Code Beautifier Collection, which  now I happily announce is available at Google Code Homepage.

According to old posts, there are only changes in the installer while other changes are scheduled to M6.

Notice that you need to install latest Update 3 of Delphi 2007 or C++Builder 2007. CBC installer will warn you if necessary.

Stay tuned.

September 16, 2007

The Guys

In 1989 I entered a famous local primary school and started my study. In that exact year, Peter Weir made a film named Dead Poets Society, which wins an Academic award. I watched that movie when I was a Bachelor, and was moved by the tragical story. Neil, Todd, and so many names were carved in my mind. Today I watched that movie again after 5 years. I was moved again too. Nice movie.

What about those guys now? Do a little search on Yahoo Movie, and I can see after nearly twenty years what has changed. Yes, Robert Sean Leonard and Ethan Hawke are still active in the field and play many roles after D.P.S.. However, I can see they are older, different from the young faces in D.P.S..

(Robert and Ethan now)

Can you still recognize Neil and Todd?

I watched American Pie 1, 2, 3 after D.P.S.. A.P. stories happen in a modern U.S.A., so no more serious topics is covered and funny silly things are filled in. Those guys are completely different.

Time goes by! It seems the world has changed a lot. The only question is after 20 years, can we recognize them?

GrapeVine Voice: Delay Because of Bandwidth

I have to say running an open source project is not easy. I knew this when I read about open source for the first few months. I never thought I could make money from Code Beautifier Collection. Unexpectedly, this project seemed to provide me some advantages when I applied a job.

However, I am still not rich, and cannot afford a faster Internet access. I cannot finish downloading CodeGear RAD Studio 2007 today. This means I will try to make it tomorrow so my dear users can see 6.0 M5 comes on Monday morning. Wish it were not too late.

How I wish I got faster access some day so I can do things on time. Stay tuned.

September 14, 2007

Windows Service File Name

When you get a ServiceController instance, how do you know the executable name and path? WMI makes it possible. You can use this GetServicePath function to query service executable name and path.

private static string GetServicePath(ServiceController service)
{
    //construct the management path
    string path = "Win32_Service.Name='" + service.ServiceName + "'";
    ManagementPath p = new ManagementPath(path);
    //construct the management object
    ManagementObject ManagementObj = new ManagementObject(p);
    if (ManagementObj["pathName"] != null)
    {
        return ManagementObj["pathName"].ToString().Replace("\"", null);
    }
    else
    {
        return null;
    }
}

GrapeVine Voice: DXCore for Visual Studio

CodeRush for Visual Studio is now 100% native .NET code. Yes, the same as Code Beautifier Collection for CodeGear RAD Studio. And what else do the two look alike. Both use plug-in architecture so easy to extend.

I have just installed Refactor! for evaluation and also taken a look at DXCore. Yes, I have to say I learn a lot from the User Guide and soon decide to update CBC heavily in 6.0 M6 to provide a more flexible architecture.

Maybe one day I can move CBC to Visual Studio with DXCore. Quite possible.

Why not in M5? M5 is due to release this week so you can play with it on Delphi/C++Builder 2007 Update 3 and RAD Studio 2007.

Dundas Chart Help Hell

I thought Dundas Chart was great, so I recommended my company bought it. However, when I installed and used it, I found the help in fact helpless sometimes.

I can provide an easy example. When a user change chart parameters which results in a refresh, the axis by default is not changed. This is tolerant but there must be a way to change the axis.

I think this is a common case, but I cannot find any information in ChartArea class overview or Axis class overview. Only when I navigate to ChartArea class members, a ReCalc method is there.

How I miss TeeChart for .NET. Not just the convenient default actions (axis recalculation), but also a nice help.

Also I cannot edit Dundas Chart components in SharpDevelop, my favorite .NET editor.

September 10, 2007

Summer of Code: Google's Plan

It is so wonderful that Google holds Summer of Code every year. After subscribing to Monologue, I can see how SoC helps Project Mono.

When those talent students join the projects during the summer, we can nearly always expect Wows in the fall.

This summer an experimental WinForms designer for MonoDevelop is done and there are other nice things. I just cannot wait to see the long list of creations SoC triggers.

Why does Google support this kind of activities? Innovation. Yes, it changes the world.

We know Microsoft tries to do something but I never feel any changes its activities bring. Those innovations seem frozen once touched by Microsoft's hands.

Sometimes I think this is why I prefer Google to Microsoft.

Product Review: GhostDoc for Visual Studio

There are so many add ins for Visual Studio designed by MVPs and I can almost draw a conclusion that if you make a popular VS add in, you may become an MVP some day.

GhostDoc is one of the best add in and created by Roland Weigelt. What it does is to generate XML comments for you semi-automatically.

I have been using it several times and today I found it so powerful that I must blog about it. When you commented an interface, you know all derived types need the exact same summary words and you need to manually type them again and again here and there. With GhostDoc, it is much easier. It seems that GhostDoc remembers you have commented this interface, so when it generates comments for derived types, the same words are copied there. Great.

My only wish is that someone could port it to SharpDevelop some day so I can enjoy this nice tool there. Most of the times, I find SD light weighted but still powerful enough.

September 09, 2007

Product Registration Extras

I believe most people do not understand why registering your purchased products is important. I was one of those people until CodeGear provides extras for its registered users of Delphi 2006. Since then I have registered every products I have. The benefits are,

  1. Extras. Delphi 2006 users receive Castalia,  QuickReport and so on. Microsoft Visual Studio Express registered users enjoy a lot of free add ons. I registered my Visual C# 2005 Express last month and now I can start Ribbon development with free telerik r.a.d.ribbonbar for WinForms Q4 2006. Other vendors provide similar extra values for their users.
  2. News and resources. Although some companies provide public resources, others insist only registered get news and important resources. In this case, if you do not register, you miss a lot of nice things.

Always, registration helps yourselves a lot. Beside it is also good for the vendors. They need to know who use their products, what the users want in the next version, and what they can do to ensure your success.

I filled out every surveys Borland/CodeGear provides during the last three years, as well as some Microsoft surveys. I believe my success cannot be possible without these vendors so I want to support them as much as I can.

What is your attitude about the venders? Do you want to support them? Start from now on, before they disappear some day and live you helpless.

BTW, I shall start to provide registration in Code Beautifier Collection some day. But now you can easily register yourself by sending me a mail to lextudio@gmail.com. Remember to add CBC or GrapeVine in the mail title so my Junk settings do not affect that mail.

GrapeVine Voice: M5 Is Drawing Near

Because of You-Will-Soon-Know-It, I am planning to release a new Milestone of GrapeVine. Main changes are in the installer. It should be able to tell if you installed necessary Update of Delphi/C++Builder. The side effect is also clear that you have to install latest Updates. If not, the installer is going to exit. I believe some users may complain about this. However, it is a must from now on. Because CBC is an IDE plug in, it cannot live healthy without latest Delphi IDE.

Now I start to do some final tests. Wish everything okay. Stay tuned on both this blog and CodeGear homepage.

Product Review: Windows Live Photo Gallery vs. Picasa


I have been using Picasa for a long time so you can see I am addicted to Google most of the times. However, you cannot double click on an image and open it in Picasa as you may expect. Picasa is not ACDSee. So I have to prepare Paint.NET as back up. Somebody in my team thinks the double click feature is a must so now I recommend him to use Windows Live Photo Gallery.

There are a few things WLPG lacks,

  1. Cute look. Picasa UI is really cool and easy to use. Especially I can double click to navigate between gallery and image modes. In WLPG, I have to click some "back to" button.
  2. Powerful Editing. Picasa can help you edit photos. Even though WLPG provides some similar functions, the range is limited. But WLPG is still a Beta, and Picasa has been there for years as a commercial product.

Have to say except these two, WLPG can replace Picasa on my computer. I will keep trying WLPG to decide which one lives and which one dies.

September 08, 2007

Windows Live Writer Welcomes Blogger.com

I have said in an old post that *.blogspot.com domain is blocked here in Shanghai. The only workaround is that I can log into *.blogger.com to publish posts. It is really inconvenient to copy content from WLW to Blogger.com. But WLW Beta 2 cannot log into my Blogger account because it is not designed for Blogger.

When I installed WLW Beta 3 at home this morning, Wow! It can log into my Blogger account now! Even though it still cannot receive the style I use, that is not a big problem.

Nice to see Windows Live Team do something this wonderful. Their support for Blogger.com as well as other blog spaces does make millions of bloggers happy.

Inno Setup Script Sample for Version Comparison (Advanced Version)

Compared to last post on this topic, this time I will show how ISPP makes thing much easier.
First, some important information can be defined only once and used everywhere. The definition should be written before [Setup] section like this,

Note that I have hard-coded application information here because the script is for Code Beautifier Collection only. You must specify a new GUID for your own application.

The [Code] section is modified too,

You can see now I make a lot of changes here in order to remove CBC pre-install helper named install.exe. Yes, using Pascal script is much easier. In fact, I find a lot of tips on ISXKB.

BTW, after publishing my version string comparison article on Inno Setup Newsgroup, I got several replies. According to the replies, there are already two topics on ISXKB about version string. They are this and this.

Jernej Simončič also provides his code,

Thanks Jernej.

[Update: You can find all my Inno Setup posts at http://www.lextm.com/search/label/Inno%20Setup]

September 07, 2007

Innovations Behind Blackfish SQL

If you are now reading this post like me, scroll to the third paragraph, and you can see why it is version 8 here.

Yes, it is wonderful that a Java to C# translator does exist and produce this wonderful product on both platforms. (If you move on you can see Java can be translated to Object Pascal too.)

It is easy to understand why CodeGear drops the NDataStore name and also renames JDataStore to Blackfish SQL for Java. When you have a product on both sides, neither "J" nor "N" is necessary.

If you are looking for tiny database, Blackfish SQL is a choice (1.2M engine).

BTW, Blackfish will be included in CodeGear RAD Studio 2007 DVD.

September 06, 2007

Product Review: InstallShield 2008

One reseller of InstallShield strongly recommend me about InstallShield 2008. So why not take a look at it?
Nice features of InstallShield are,
  1. Dialog Preview. When I work in IA, I need to open a dialog to see what it looks like but that's not yet straight forward. IS generates previews for dialogs so it takes me no time.image
  2. ISICE & ISBP. They are additional installer validation rule sets added by InstallShield. I am not sure whether IA contains additional rules except Microsoft's standard ICE.
  3. RSS feed. Yes, I really want to know why IA does not provide a friendly RSS feed so I can get latest information through Google Reader.
However, after all I prefer InstallAware, because some great features I cannot live without,
  • Debuggable MSIcode. I can set break point and watches to locate bugs.
  • Ribbon UI. Yes, it is cool.
  • Cheap. I can save a lot of money.
  • Customization. I can write my own runtime packages easily. I can modify dialog box just like using Delphi.
  • Localization Support. You do not need to buy the dearest SKU in order to get localization support.
  • Great showcase. CodeGear switches from InstallShield to InstallAware to build installers for Delphi and C++Builder. Because Delphi is one of the most complex application on Windows platform, the new installation experience can reflect that IA is better than IS. Microsoft used IS in the past but since it defines MSI, it seems to use home cooked MSI builder for most of its products.
But of course, you need to learn about what IA is not capable of and whether you can receive good support from the vendor.

If you want open source alternatives, I strongly recommend you consider WiX or Inno Setup.

BTW, IMHO there are some not-so-useful features in InstallShield too,
  1. Require EULA Reading. I believe most users like me hate this feature so why IS adds this feature to the installers. I can see no value it adds to my installers. But I know somebody likes that.
  2. Visual Studio integration. I'd like to integrate installer creation into continuous integration process but that only requires a command line install script builder. So I really do not think Visual Studio integration is necessary. I enjoy working in InstallAware Studio outside VS because the Ribbon UI is much easier to access than menu and tool bars.
(Updated: Christopher Painter dropped a comment here earlier today. He let me know some important logic behind the scene.
I know little about TFS in fact except I use its service through CodePlex.com. Even if it is possible to do everything in VS as he pointed out, I still want to run a batch file and make everything down. Why? Launching VS on a not-powerful-enough computer wastes a lot of time while running a batch file is much faster. If you like to use a batch file, then VS integration is not that necessary.
About EULA reading, even if installers created by InstallShield require me to scroll down to the end, I do not read those terms to make me silk. In fact, end users are not lawyers so how can they understand those words?)

Windows Live and Google Updates Today

Have you seen the latest version of Windows Live Writer and Messenger? Yes, today their new Betas are out (in one installer). And I am already writing this post in the new Beta of WLW.

What's more, when I opened Google Reader today at noon, I saw a post from the Reader Team that search engine for feeds is added so I could start to search within the feeds I subscribed. Interesting that I need to manually refresh the page in order to see those new features. Yes, they were upgrading Reader while I was still reading in the old version. Nice experience.

The most important thing now is that I can post pictures to Blogger in WLW because pictures can go to Picasa site. Wonderful workaround.

The only disappointing is that I can no longer use the WLW patch to make English spell checker work again. As a result, if I spell something wrong here, forgive me.

September 05, 2007

Product Review: Silverlight Lights Up What?

Silverlight 1.0 is out. I haven't heard something on CSDN. Why? In China, new techniques need a long time to adapt because programmers are working hard on their projects. And I am one of them after April.

My best excuse is WAIT until the second version is out. This is correct because Silverlight 1.0 lacks of .NET support which will be added in 1.1.

However, even then I may not touch this piece because I am not familiar with XAML and WPF. Yes, WebForms and Windows Forms have nothing to do with Silverlight.

Someone has created an iTunes clone with Silverlight. But do you like to use a media player in a web browser? Can it minimize to tray or do some other common tasks a Windows client can do?

IMHO, only if one day Windows Forms and WebForms die, I will switch to WPF. I cannot stand the pains most Java developers now feel. Yes, Java has a lot of UI framework without interoperability. And .NET is on the same path today, trying to provide as many frameworks as it can.

I know I cannot learn so much when my time is so limited.

BTW, Novell has officially signed agreement with Microsoft to provide Silverlight on Linux. Remember, that is Moonlight, part of Mono project. Nice to see Mono shines also.

InstallAware Runtime Authoring

It is nice to see InstallAware 7 bundled lots of runtimes. As a result, you can easily add .NET runtimes and other into your installer. The magic is that the runtimes can be included in one executable setup.exe if you let IA generate Single File from your project.

However, sometimes your applications need extra runtimes that are not listed in IA. What to do next? It is easy to write your own runtimes and share with others.

I created a runtime package for WinPcap last week and published it on IA forum. It is funny that MSIcode is easy to author (just drag and drop) but hard to master (you need to read a few examples before diving to it). I started by reading this post, and it helped me a lot.

Later I will try to write a Mono runtime package because now Mono has implemented 98% of System.Windows.Forms classes and methods maybe I could use it someday without Microsoft .NET runtime installed. Yes, it is quite possible.

Did you create runtime packages for IA. Better share it on the forum so everyone can enjoy your work.

September 03, 2007

Product Review: Eclipse vs. Visual Studio

I subsribed to Slashdot.org last month. Since then I have been enjoying those discussions. What is that latest hot discussion? Check the title and you know it.

However, it is hard to compare the two because not so many guys use and both well. For me, either of these is that familiar. If I have no choices but the two, I prefer Eclipse.

Why Eclipse win my heart? Important points are,

  1. Totally open source. You do not need to pay. If you do not want to pay Microsoft, you have to use those Expresses.
  2. So many plug ins. Up to now, I see no major companies create plug ins for Visual Studio. IBM, Oracle, Rad Hat are all Eclipse biased.
  3. Big community. Even though there is no MSDN on Eclipse side, user base of Eclipse is rather large. So many languages host themselves in Eclipse so as to target most platforms so for a long period, I believe all languages would be integrated into the IDE one day.

However, we have to confess there is no silver bullet. Even Eclipse has a weak point that nobody can ignore - it must be extended using Java.

Sometimes, Visual Studio is still the only choice. The good news is that both side start to learn from each other.

Anyhow, you can read this article in order to gain more information about Eclipse and Visual Studio.

Product Review: Visual Intercept and SourceGear Vault

You can check the result of poll on this blog right now: I am asking if you'd like to use a .NET application. The result shows more people prefer not.

Yes, binding to .NET Framework means you cannot use those applications on other platforms such as Linux, Unix and Mac OS. This limitation may not be even more terrible for enterprise users.

Visual Intercept and SourceGear Vault, although both are excellent products with amazing features, are tightly bind to Windows platform.

I never fall in love with any ASP applications because generally they are installed on Windows and require you to use Internet Explorer to access them (Firefox users know what I mean). That's why I find Visual Intercept's web interface hard to use (because I am a Firefox crazy).

Sometimes I do use Ubuntu to try out new techniques on Linux, where Vault clients are not officially compatible to Mono.

In all, if you want to target enterprise market, you'd better choose some platform independent language, such as Java, standard C++, Ruby, PHP, Python and so on. Only in that way, you can see your customers running your applications smoothly on most platforms.

(Updated: Paul, thanks for your comments. I know there are changes in Vault, and the Eclipse plug-in is a very promising one. However, there are still lots of things on the TODO list - like better Linux support without Eclipse. For an Embedded Software Engineer working on Linux, Eclipse is not a quite convenient IDE writing C/C++ code IMHO (I personally prefer NetBeans). Maybe SourceGear can follow Teamprise's way, develop a client with Eclipse RCP.

I admire your Vault guys because I do C# programming, too. Vault is so amazing that it is totally built on .NET. The only pity is that Microsoft does not want .NET to go anywhere like Java and Mono is net yet strong enough.

Also now Elsinore releases IssueNet to replace Visual Intercept. Although I do not have a chance to touch that, I think Elsinore must make things better somehow.)

Who Should Support Mono?

In fact, Microsoft should support Mono. And it does something now! Mono project now has something called Moonlight runtime which enables Silverlight on Mac OS and Linux. Also there is a Lunar Eclipse project to replace Expression Blend.

More and more Linux distros start to support Mono, such as SuSE, Ubuntu, Debian, and Red Hat which makes Mono a much more well known runtime. So IMHO it is time to test your .NET applications to see if they are Mono compatible.

It is a pity that SourceGear Vault clients (command line and GUI) is not officially Mono compatible. Because Mono has implemented most of Windows Forms, a test would not be so hard.

I have tested CBC but the result is really useless. Why? Is there going to be a RAD Studio for Linux?

September 02, 2007

GrapeVine Voice: Missing Feature

I am a guy who always tries something new. As a result, I want to be notified of every important updates. RSS and Google Reader helps me a lot these days. However, there are still some products fail to provide a RSS source about updates.
In fact, an auto update feature inside the product can make things much easier. Today I find out that even Daemon Tools includes this feature now.
But your customers can sometimes mess things up. Yes, even Delphi 2007 can check updates automatically, some users not yet install Update 1 and 2 according to a recent bug report I received at CBC Homepage.
If you do not install Delph 2007 Updates, you only miss hundreds of bug fixes. But CBC cannot load in Delphi 2007 RTM, because it requires those Updates.
So, I decide to add a new feature in later version. That is during the installation, CBC will check if critical updates are installed already. I know it is complex for me to do this, and users should do updates themselves. But it seems to be a "must have" feature if CBC want to build up its user base.
Stay tuned.

GrapeVine Voice: Missing Feature

I am a guy who always tries something new. As a result, I want to be notified of every important updates. RSS and Google Reader helps me a lot these days. However, there are still some products fail to provide a RSS source about updates.

In fact, an auto update feature inside the product can make things much easier. Today I find out that even Daemon Tools includes this feature now.

But your customers can sometimes mess things up. Yes, even Delphi 2007 can check updates automatically, some users not yet install Update 1 and 2 according to a recent bug report I received at CBC Homepage.

If you do not install Delph 2007 Updates, you only miss hundreds of bug fixes. But CBC cannot load in Delphi 2007 RTM, because it requires those Updates.

So, I decide to add a new feature in later version. That is during the installation, CBC will check if critical updates are installed already. I know it is complex for me to do this, and users should do updates themselves. But it seems to be a "must have" feature if CBC want to build up its user base.

Stay tuned.

September 01, 2007

GrapeVine Voice: Installer Again

When I published this post, I did not expect ISPP changed most of things easily.

What is ISPP?

ISPP is Inno Setup Pre-Processor. From its name you can guess what it does. Yep, it preprocesses your script and then builds the installer. In this way, ISPP provides you so many macros and build-in functions which free you from writing error prone Pascal scripts.

Changes

Now I use marcos to store version information and other strings. Thus, every time I need to create an installer, only a few changes are required. When I release 6.0 M5, you can check up the new Inno Setup script for details. Also you need to install Inno Setup QuickStart Pack instead of Inno Setup.

Limitation

Although ISPP solves a lot of problems, it is hard to write my own functions in its language. It is not similar to Pascal but C/C++. Luckily right now I do not need to do some customization here.

I am still planning about M5 because a plan is not yet finished. Stay tuned.