Friday, August 20, 2010

On Visual Studio styles

I’m almost sure that everybody knows StudioStyles.info website, where tons of various syntax highlighting styles for Visual Studio 2008/2010 are being added and updated everyday.

Right after its appearance I decided that default VS style is too bright and therefore, too tiring for my eyes and switched to a darker one, named “Son of Obsidian”:

sonofobsidian

I thought that I would feel positive result but I was wrong. Watching on dark screen and seeking for light symbols of code seemed to be even more tiring than the default color scheme. Soon I started to search for less contrast schemes and after several minutes of looking over styles on the website I found “Old Book”:

oldbook

This one was much better, it was really easy for eyes, and mimicked an old, pergameneous book. I used this style for several months, until I realized that it was not ideal and there might be more optimal one.

Today I’ve made a draft of a new style, which is going to be clean and tidy. Here it is:

silk

I’ve named it as “Silk” because in my opinion it is smooth and clean. If you like it, it can be found here.

I would like to hear any comments or remarks.

Friday, August 13, 2010

Fast Reflection Library

Hi there,

Recently while browsing Microsoft Codeplex projects I’ve found another good thing. They call it ‘Fast Reflection Library’, it is written in C# and its purpose is to provide the same as part of the reflection features like executing method dynamically but give simple and faster implementations.

Example of usage:

using System;
using System.Reflection;
using FastReflectionLib;
    
namespace SimpleConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            PropertyInfo propertyInfo = typeof(string).GetProperty("Length");
            MethodInfo methodInfo = typeof(string).GetMethod("Contains");
    
            string s = "Hello World!";
    
            // get value by normal reflection
            int length1 = (int)propertyInfo.GetValue(s, null);
            // get value by the extension method from FastReflectionLib,
            // which is much faster
            int length2 = (int)propertyInfo.FastGetValue(s);
    
            // invoke by normal reflection
            bool result1 = (bool)methodInfo.Invoke(s, new object[] { "Hello" });
            // invoke by the extension method from FastReflectionLib,
            // which is much faster
            bool result2 = (bool)methodInfo.FastInvoke(s, new object[] { "Hello" });
        }
    }
}

Although DataObjects.Net contains its own implementation of fast reflection (see: Xtensive.Core.Reflection), I like in this one the following aspects: clear & minimalistic design, simple and obvious API & ease of use. It took several seconds to understand the general idea and start using it. I think that this might be a good example of how library should look like: it should solve 1 concrete problem in most efficient way and do nothing more in order not to turn into another dinosaur.

Friday, July 9, 2010

The useful finding

Just’ve found on the web an amazing resource full of nice CSS templates, licensed under the Creative Commons Attribution 3.0 Unported License — FreeCSSTemplates.org.

Here are some examples:

Well done!

Thursday, May 27, 2010

Time to get your discount on X-tensive products

Hey guys, great news for you!

If you are interested in getting a discount on DataObjects.Net or HelpServer, take a look at this link and this one.

Saturday, May 15, 2010

On blog changes

Hi there,

Recently members of DataObjects.Net team have finally agreed on principal alteration of news and announces publishing policy. By this I mean that in order not to spread your attention between several personal blogs we decided to concentrate on exactly one, dedicated to DataObjects.Net development. So I’d strongly recommend you to update your RSS subscriptions.

In case you are interested in using the ORM under Visual Studio 2010 & .NET 4.0, there is a big announce for you, don’t you miss it!

Thanks for your attention!

Thursday, April 8, 2010

Update on Envy project

Despite the fact that the initial post concerning Envy project was published on April, 1st, it was not a joke as you might thought. We really were going to deliver all that sort of stuff (standalone editor, plug-ins for various IDE and everything). But one thing has changed. I am very pleased to announce that TytanNet project came back to life and its author is going to continue his work on this excellent product. But how such a good bit of news might influence Envy?

It is rather obvious. As me & Denis were thinking that TytanNet is being supported no more and that there was no any chance that it would be updated to meet Visual Studio 2010’s plug-in infrastructure requirements, we decided to develop a version of Envy which could be plugged-in to various IDEs such as Visual Studio, SharpDevelop, etc. As far as the necessity of such sort of plug-ins is no more actual (TytanNet has its own powerful environment editor), we can concentrate on standalone application which is intended to replace standard Windows environment variable editor.

To be honest, the main goal of the project is a temptation to combine the idea of getting more familiar with new technologies such as WPF, MVVM, etc., with development of a simple but useful application, at least for us or may be anyone else also.

In case you still doubt that I am sincere, here is the link to the repository.

Here is a blueprint of the main window:

Envy

As you might noticed, it is rather simple and straightforward. Add/Remove, in-place editing, apply or discard, nothing special.

BTW, thanks to Kenny Kerr for his excellent window clipping tool.

I’ll write more on Envy development in the upcoming posts. Stay tuned.

Thursday, April 1, 2010

The birth of Envy project

Introduction

“Envy” goes for an advanced environment variables editor that has a standalone version as well as plug-ins for various IDE.

The very idea of creating such kind of stuff came spontaneously to me and Denis Krjuchkov while we were discussing the upcoming release of Visual Studio 2010 in terms of compatibility with plug-ins made for the previous versions (VS 2005/2008). As you know, both of us at the current moment work for X-tensive company in a rather ambitious project called DataObjects.Net 4. In the project the approach with unit tests configuration through specialized environment variables is widely used.

In order to cope with such kind of task Tytan.Net plug-in for Visual Studio 2005/2008 is utilized. It provided the ability to manage environment variables of Visual Studio's process, but unfortunately had several minor drawbacks, for example, environment variables editor had quite poor keyboard support, it has no ability to remember variable values set in previous sessions, etc. The most important one is the fact that the project's development had stopped, so there is no any chance that the plug-in for Visual Studio 2010 will ever be released.

Thus, we came to the idea that we should make an attempt to create at least a replacement for it, a better replacement, we hope. In addition, the standard environment variables editor in Windows OS is the ugliest thing I've ever seen, especially when you have to edit the PATH variable. You know what I'm talking about, don't you? =) So why don’t just kill two birds with one stone and create the plug-ins as well as standalone one?

The vision

We are going to deliver a convenient and user-friendly environment variables editor which can be used as a standalone applications or can be plugged-in into Visual Studio 2008/2010 and SharpDevelop.

List of features:

  1. Simple and intuitive user interface
  2. Full keyboard support
  3. Automatic multiline editing for variables with multiple values, such as PATH
  4. Standalone application – a replacement of standard Windows environment variables editor
  5. Plug-in for Visual Studio 2008/2010 & SharpDevelop
  6. Ability to save and load a set of variables from external files.

The roadmap

Version 0.1 – Standalone application, just a window which contains a grid with 3 columns: variable acope, name & value. The 2 latter columns are editable. The form contains 2 buttons: Save & Discard which updates environment variables and resets the state of the grid contents to initial one, accordingly. In-place name & value column editing & variable removing are possible.

Version 0.2 – The same standalone application but with some features such as:

  • Filtering by text pattern
  • Multiline editing
  • Adding new variable

Version 0.3 – The standalone application again, but with another set of features:

  • Full keyboard support
  • Variable values history (remember a list of previous values for variables)
  • Application settings & auto-update

Version 0.4 – Plug-in for Visual Studio 2008. The source code of Tytan.Net should be investigated in order to find out how to create and register a plug-in into Visual Studio. At this step the installer will be provided as well because the procedure of plug-in registration might require additional steps.

Version 0.5 – Plug-in for Visual Studio 2010. As it is reported that the plug-in API in Visual Studio 2010 changed significantly, this step might take more time than the previous one.

Version 0.6 – Plug-in for SharpDevelop 3/4.

In the future posts I’ll write more detailed information about our competitors, development model, software architecture and so on. Stay tuned.

P.S.
Happy April Fools' Day! =)