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.

August 28, 2008

GrapeVine Voice: Source Code Is More Important?

I have just checked Code Beautifier Collection homepage on Google Code and found out an interesting thing. In a short time period, it seems that people prefer the installer, so for most GrapeVine milestone builds the installer download count is larger than the source code count. It is reasonable because during milestones, the code has changed a lot. However, for a long term (about 4 months), the source code download count is nearly 3 times of the installer count (for 6.0 Final).

There must be a reason, but I haven't got it yet.

August 25, 2008

GrapeVine Voice: Delphi 2009 Is Coming

Since GrapeVine is not as active as usual, I have to say there will be no new features coming in the next few months. But two things will go on soon.

The very first is a new release for Delphi 2007. This will be the August release (or September release). Even though four months passed, there are only a few small fixes added in the repository. (Sorry guys, I have spent so much time on #SNMP.) And the second one is a new release for Delphi 2009.

I really hope I can do one release for both IDE versions, but the possibility relies on CodeGear's implementation. Therefore, all new releases will be available only after CodeGear releases Delphi 2009 officially.

Yes, you may already know Delphi 2009 is "available" today, but it only means you can place an order from now on. The final release day is not yet published, so nobody knows when you can have it installed on your development machines (or virtual machines).

Stay tuned.

#SNMP Design: Under The Surface

How to use #SNMP Library in your applications? I suggest you drag a Manager component into your WinForms or WebForms. This Manager instance allows you to configure default SNMP protocol version to be used and the global timeout count in milliseconds. Then wherever you need to do SNMP operations, simply call Get, Set, or GetTable with appropriate parameters. But what's more? Is it possible to manipulate PDU level data? Is it possible to play with bytes?

The general answer is, no surprise, YES. I provides several ISnmpMessage derivatives to serve you. Take GetRequestMessage as an example. You can create an instance from raw bytes you received from the peer and get access to parsed properties (such as variable bindings) easily. Or you can create an instance from known properties, and send out raw bytes from ToBytes.

In my opinions, starters can easily accomplish basic works with the Manager. And hope advanced users enjoy the low level functions exposed by those message classes.

Alex: License Changed to MIT

Finally I think it is time to release Alex under a real open source license. Therefore, now the whole source code is released under MIT license. You can play with it if you like in almost any way. Hope you enjoy this change.

You may notice that right now StyleCop Addin for SharpDevelop is part of the default distribution of SD 3. So why not submit Alex to SD? My consideration is that SD already has a default format algorithm, so Alex may not add values to all its users. Therefore, I rather keep it a separate project at this moment. But if the SD team want to merge Alex inside, I can do whatever it takes.

Until now, I do not receive any mail from SD team members yet, so my guess is that they are not interested in Alex.

August 20, 2008

Promoting Open Source Projects

It is quite hard to make an open source project popular if you don't push it really hard. Sometimes people cannot find your project easily, or another project takes them away. So a little bit advertising won't hurt. But how to advertise depends heavily on the project characteristics.

For example, my every first open source project was born in 2005 for Borland Delphi 2005 (a small add in). In order to make it known, I published news in one of the most popular Delphi sites here in China Mainland. Then I went to Borland Developer Network, and at last hit the newsgroup.

But what about #SNMP? Although I have been using C# for long, I really don't know where to publish news at first. And Google helps a lot in such a case. How? It simply shows me what are the HOT links for SNMP and C#.

If you search with "C# SNMP" on Google.com now, you can see two AdWord items at top and then a few normal links. I did not want to pay Google so there is no more AdWord items for #SNMP :-) However, I have made #SNMP visible in the top three links below. But where?

Because all of the three links are old forum threads, so I did append a message at the end of them all to promote #SNMP. In this way, a lot of traffic has been redirected to #SNMP homepage at CodePlex.com as people want to try something new. Nice.

And what's more? I bravely contacted the author of the very first threads, Malcolm, to tell him I created something new based on his research. If you read this post, you know what happened soon. Even more traffic comes from Malcolm's page.

OK. Want to promote your open source projects now? Hope this post help :-)

#SNMP Design: Change Sets From Steve

Steve checked in twice this morning. I must confess that he adapts to Team Foundation Server much faster than me (cannot recall how many experimental check-ins I have done in the past). So, I am looking forward to seeing nice changes and bug fixes for the browser in the next few days or weeks (take your time, Steve, BTW).

One thing that makes me astonished is that Steve and I have similar coding styles. And it is so hard to tell what changes (or mistakes possibly) are made by me or him. :-)

Another interesting thing is that he uses the SVN way while I am forced to use Teamprise Explorer once again by my ISP. Will there be any conflicts happening in the near future because of these clients? I don't know. But any way we will settle them down at last.

Stay tuned.

August 19, 2008

Knowing Issac

As a not-too-bad singer, I like to collect instrumental version of songs. And it was last summer that I came across Issac's blog when I tried to search instrumental version of Iris. Although his guitar version was not as perfect as the original, his words moved me a lot.

I never have a chance to visit Hong Kong, but thanks to those posts I can see a snapshot of the city through Issac's eyes. Hong Kong is far from Shanghai, but it is surprising that Issac and I suffers similar pains.

Hope I can know him better.

#SNMP Design: Joint Forces

If you notice, I have added another developer to this project. His name is Steve Santacroce (CodePlex ID: Lister). He will focus on the browser side while I focus on the library itself. It was nice to talk with Steve on August, 9th. And I was totally impressed by his ideas.

Stay tuned.

#SNMP Design: Breaking Changes Coming, Part II

In this part, I am going to talk about IDisposable. If you have mastered the Dispose Pattern designed first for Java and now for .NET, you already notice in the past, a lot of #SNMP types implement this interface. However, my latest research shows that it is unnecessary.

Why? Your type must implement IDisposable only if one of the fields implements it. So, a simple approach is used. Remove those UdpClient from fields, move them into methods that use them, and catch them inside using clause. Done. At last, I can clean up a lot of code to make things simpler.

Thus, you may get compiler errors if you have used those ISnmpMessage derivatives directly with using clause because the using clause can be deleted now.

I do not know yet if there could be a Part III because I think I can freeze the library code for 1.5 today.

Moving From Delphi Hours To Delphi.org

I have just discovered a new podcast named The Podcast at Delphi.org. It is quite funny that Nick Hodges will show up in the upcoming episode 2 as a guest.

I take it as a sign there are no more Delphi Hours episodes. Sad. But this time, I am happy that I can subscribe to the podcast easily in iTunes.

How to subscribe? Simply launch your iTunes, open iTunes Store, and search for "Delphi".

August 18, 2008

XP SP3 Bug: One in A Million

I believe there are a lot of guys suffering this, but unfortunately, I am the only one in my office. Yes, after reinstalling my computer, I suddenly notice I cannot use Windows Update without an error, and even fail to install Windows Live tools.

It is this post that finally saves me this afternoon. Hope it helps when you meet this issue, too.

August 17, 2008

#SNMP Design: Poll Result

The first poll about #SNMP future was closed a few days earlier. The result shows there are guys who are interested in agent development on .NET. Quite surprising because I thought only C, C++, and Java are popular.

So I will put this requirement on the list but with a low priority (but higher than SNMP v3 at this moment). It is really challenging as this may require a powerful MIB compiler implementation ahead.

OK. That’s all for this time. Stay tuned.

August 16, 2008

#SNMP Design: Breaking Changes Coming, Part I

Every time I read Manager.cs, I feel bad. Like I expressed on the discussion board, I hated overloading functions a little bit. Yes, imagine if you are new to #SNMP, which one of these Get, Set, or GetTable should be called? I thought I could move overloading methods to a separate assembly like the unit tests. However, Extension Method is only a .NET 3.5 feature. In order not to bother those .NET 2.0 guys, I delay this move.
But the upcoming release, TwinTower, has breaking changes in these methods. I think it is not bad because you no longer need to pass two parameters (an IPAddress instance for agent address and an Int32 for port number). Instead, an IPEndPoint replaces them all. It is also more meaningful as you are managing a remote endpoint.
It is the first significant change. Stay tuned.

(Updated: Suggested by Michael, the changes described in this post is going to be rolled back. The final overloads presented in 1.5 final may look different. Another post will be provided before that release to state the new approach.)

August 15, 2008

#SNMP Design: A Little Bit Broadcasting

Maybe you have this question just like me. If I already know there is a lot of SNMP enabled devices in my network, how can I add them easily? Yes, when I am not the administrator, I cannot have a list of IP addresses at hand. So, there is no hope, isn’t it?

In the past few weeks, a serious #SNMP user have been working with me on this topic (YttriumOx, isn’t that you?). And finally, this feature is done today. I am happy to announce that now you can try Manager.Discover to find those devices. The IDictionary returned by this method contains an IP address list you expect. The TestDiscovery demo can guide you.

But I have to say it is not perfect (maybe some agents just ignore the broadcast packet). I find that I cannot get a response from the Windows Vista SNMP agent on my own computer. Maybe Microsoft knows why.

Also I’d like to state here that another major release is coming. Yes, the 1.5 (TwinTower) release is 90% done. All I need to do now is integrate all parts and clean up the code base again. Stay tuned.

August 11, 2008

#SNMP Design: Serious Discussion Sessions

Sometimes, maintaining an open source project is just like running a one-man show. There could be a lot of users, but most source code came from you and you were the only player in the field. I felt so lonely in the past.

In fact, there were people who wanted to join me. However, they were either too busy or not well prepared. I was disappointed. Luckily, receiving suggestions and bug reports from users is also fun.

I guess Code Beautifier Collection and Alex will remain like this in the near future. Unexpectedly, the last project goes differently, because this time I finally pick up a general topic, SNMP.

I did know there is a lot of guys doing SNMP out there in almost all main stream languages and platform. But I never knew so many are doing it in C# and .NET. Thus, I was surprised at the download count. Can you imagine a just released new project such as #SNMP has a similar download count in the first month like a three year old project?

And the latest news inspires me more. The sessions on CodePlex now turn out to be serious. Guys start to post design suggestions, new feature requests, and even ask if I can focus on the library while they work on the browser. Wonderful.

I confess that I do not have enough experience on how to host an open source project with others, but I believe that I try my best to learn.

Stay tuned.

#SNMP Design: Library Update

After the Refresh release (1.1), I did change #SNMP basic API again, and some of them are significant,
  1. All Manager methods require an extra port number argument. Even though normally you can use 161, in some cases you may want to use another.
  2. More SNMP v2c related classes are added. You can check how many work items have been closed during these weeks. Wow.
  3. At last, by using InternalsPublicTo attribute, I successfully split all unit tests into a separate assembly.
  4. Now you can try to discover SNMP enabled devices in your network by calling Manager.Discover. A new demo project is added as well.
That’s all for this time. Stay tuned.

August 04, 2008

#SNMP Design: Soaring

It is really hard to focus on the browser design because it is a complex task. I got a lot of pains last weekend on the agent profile section, and had to stop to do other stuffs.Coffee-cup
The final result, surprisingly, is awesome. I finally implemented what are missing in SNMP v2c support. Yes, now you can use Counter64, and there is even a basic Opaque type. However, even though REPORT, INFORM, and GETBULK messages are there in the repository, they are not tested. I coded them simply according to the book, “Understanding SNMP MIBs”, so maybe something is not right. Tongue out
In all, right now the SNMP v2c support in #SNMP library is still experimental. Please play with it and provide me suggestions if you are interested. Stay tuned.
BTW, I’d like to say thank you to all guys who left kind words and suggestions in the Discussion board. You did help a lot.Thumbs-up

August 02, 2008

#SNMP Design: UnicornHorn Refresh Out!

Hi, I am happy to announce that #SNMP UnicornHorn Refresh is available now. Please take a look at it if interested.

Stay tuned.

August 01, 2008

CodeGear Is Hiring, But…

For a long time, the Jobs section has been quiet and now you can see something new there. But what’s wrong with it? Is there only one opening?

Open-mouthedAs a newsgroup subscriber, I do know at least another opening is there but why Embarcadero guys forget to publish them somewhere?Surprised