Monday, December 14, 2009

Regular expressions for connection string parsing

Collection of regular expressions for parsing of connection string:
Split to parts:
string regexSplitToParts = "([^=;]*)=([^=;]*)";
RegexOptions options = RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.Compiled;
Regex reg = new Regex(regexSplitToParts, options);


Fetch specific part of connection string (e.g. DataSource):
string regexDataSource = "Data\\sSource(\\s)*=(\\s)*(?<DataSourceName>([^;]*))";
RegexOptions options = RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.Compiled;
Regex reg = new Regex(regexDataSource, options);

Technorati Tags:

Wednesday, December 02, 2009

Shakespeare - Sonnet 66 – few translations

Samuil Marshak +1 !!! :o)
 
Бессмертный Шекспир
ШЕКСПИР, Сонет 66
Original Перевод Маршака Перевод Пастернака Актуальный перевод

Tired with all these, for restful death I cry, -
As to behold desert a beggar born,
And needy nothing trimm'd in jollity,
And purest faith unhappily forsworn,
And gilded honour shamefully misplac'd,
And maiden virtue rudely strumpeted,
And right perfection wrongfully disgrac'd,
And strength by limping sway disabled,
And art made tongue-tied by autority,
And folly (doctor-like) controlling skill,
And simple truth miscall'd simplicity,
And captive good attending captain ill:

Tired with all these, from these would I be gone,
Save that, to die, I leave my love alone.

Зову я смерть. Мне видеть невтерпеж
Достоинство, что просит подаянья,
Над простотой глумящуюся ложь,
Ничтожество в роскошном одеянье,
И совершенству ложный приговор,
И девственность, поруганную грубо,
И неуместной почести позор,
И мощь в плену у немощи беззубой,
И прямоту, что глупостью слывет,
И глупость в маске мудреца, пророка,
И вдохновения зажатый рот,
И праведность на службе у порока.

Все мерзостно, что вижу я вокруг...
Но как тебя покинуть, милый друг!

Измучась всем, я умереть хочу.
Тоска смотреть, как мается бедняк,
И как шутя живется богачу,
И доверять, и попадать впросак,
И наблюдать, как наглость лезет в свет,
И честь девичья катится ко дну,
И знать, что ходу совершенствам нет,
И видеть мощь у немощи в плену,
И вспоминать, что мысли заткнут рот,
И разум сносит глупости хулу,
И прямодушье простотой слывет,
И доброта прислуживает злу.

Измучась всем, не стал бы жить и дня,
Да другу трудно будет без меня.

Когда ж я сдохну! До того достало,
Что бабки оседают у жлобов,
Что старики ночуют по вокзалам,
Что "православный" значит - бей жидов!
Что побратались мент и бандюган,
Что колесят шестерки в шестисотых,
Что в загс приходят по любви к деньгам,
Что лег народ с восторгом под сексотов.
Что делают бестселлер из говна,
Что проходимец лепит монументы,
Что музыкант играет паханам,
А быдло учит жить интеллигента.

Другой бы сдох к пятнадцати годам,
Но я вам пережить меня не дам!

(с) не я, найдено в сети


Sunday, November 22, 2009

Tuesday, November 17, 2009

Silverlight HTML Control

If you need to display a piece of HTML in your Silverlight application…
Public/open-source Silverlight HTML controls:
Commercial Silverlight HTML controls:
Technorati Tags: ,,

Wednesday, November 11, 2009

Practical tutorial on using Sgen.exe to improve performance of XML serialization startup.

There is an overhead incurred when using serialization in your application, which is caused by generation of a ‘helper’ assembly for each type that is serialized with XmlSerializer (per-process-per-domain). (Btw – this has subtle adverse effect – if you use serialization – your application should have Read/Write permissions to %windir%\temp folder).

This overhead may be avoided by using Sgen.exe tool to pre-generate serialization assemblies.
Basically it should be pretty straightforward, especially if your FooBar.dll assembly for which you pre-generating serialization assembly doesn’t has a lot of references. Unfortunately – if you do have a lot of references – you would have to add them all using /reference:c:\foo1\foo1.dll /reference:c:\foo2\foo2.dll /reference:c:\foo3\foo3.dll ……

Here is a workaround:
To generate serialization assembly manually (could be done as a post-build step):
1) Visual Studio –> Foo.csproj –> Properties –> Build –> Generate Serialization Assembly –> On
You would expect it to work automatically now – but it wouldn’t, or saying it more precisely it would create serialization assembly only if your assembly includes proxy types (e.g. web-services).
Anyway – build your assembly, open MSVC output window and look for sgen.exe line in the end of output.
2) Copy whole sgen.exe line – it would include all the references needed.
3) Remove from it /proxytypes parameter – this will cause sgen.exe to generate serializers for regular types.
4) Add /force parameter to force overwrite of previously created assembly.

Now you almost done except of following caveats:
1) If you have types with the same name in different namespaces you would get error saying something like:
Error: There was an error reflecting type ‘FooNamespace.Foo’ – Types ‘FooNamespace1.Foo’ and ‘FooNamespace2.Foo’ both use the XML type name. Use XML attributes to specify a unique XML name and/or namespace for the type.
To resolve it – differentiate your types by specifying XML namespace:
   1:  using System.Xml.Serialization;


   2:   


   3:  [XmlType(Namespace = "urn:Foo1")]


   4:  [XmlRoot(Namespace = "urn:Foo1")]


   5:  public class Foo{}





2)  If you have properties with readonly or internal properties, or internal types – you would get the following error:


Error … property or indexer cannot be assigned to it is read only.

You may either mark such property with [XmlIgnore] attribute or (for internal) – add following line to AssemblyInfo.cs file:





[assembly: InternalsVisibleTo("<AssemblyName>.XmlSerializers, PublicKeyToken=null")]






You may still add it as part of build process manually modifying MSBUILD script in .csproj file.


Look here or here for details.




Technorati Tags: ,,


Monday, November 09, 2009

How to activate Fusion logs

Technorati Tags:

Fusion.reg file:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"LogPath"="C:\\FusionLogs"
"ForceLog"=dword:00000001

Monday, September 14, 2009

How productivity changes throughout the weekdays

Graph below shows distribution of my blog visitors throughout the weekdays (this picture depicts a specific week, but the pattern is consistent over the time.
Since my blog is mostly devoted to the technical issues I think it could be a measure of common productivity pattern throughout the week.

So:

  1. It seems that proverb saying “Monday is a holiday” looks to be statistically right.
  2. Well, actually it seems it talks about the Tuesday as well …
  3. Wednesday and Thursday are most productive days, Thursday is a bit better.
  4. Friday is in much better than Tuesday but shows clear decline to Thursday.

image

Insiders sell like there's no tomorrow …

Tuesday, August 25, 2009

Performance of Velocity distributed cache


I was looking for some numbers on performance and throughput of Velocity.
  • First of all here is some extensive performance data from Microsoft Velocity team blog: http://blogs.msdn.com/velocity/archive/2009/04/21/more-performance-numbers.aspx

  • My own test (single cache node, single client on a neighbor LAN computer - sequentially storing 100 .. 1000 instances of the same data into the cache) shown time of around 14-18 ms (per chunk) when storing data chunks of 100K up to 1Mb.


Monday, August 24, 2009

The requested upgrade is not supported by


Proxy should be updated...

No connection could be made because the target machine actively refused it...


Just a self-reminder... Could be caused by WCF security configurations. Either set Binding→Security→Mode→None or if Mode is Transport - then add Windows credentials of user running the service in security config section.

Wednesday, August 12, 2009

The server has rejected the client credentials - WCF Exception


Control Panel→Administrative Tools→Local Security Policy→Local Policies→User Rights Assignment→Access this computer from the network
Now add Authenticated Users if your services runs as an application or Network Service if it's service.

Sunday, July 26, 2009

How to: Update Windows driver from command line



  • Download DevCon from here
  • Create list of drivers on your machine: devcon drivernodes * > drivers.txt
  • Find driver you want to update in the list, e.g. SoundMAX Integrated Digital Audio
  • You may check that you've selected the proper driver running
    devcon status "PCI\VEN_8086&DEV_24D5&SUBSYS_80F31043&REV_02" Please note that you should include driver ID in "quotation marks" and use part of string up to REV_02 (revision part).
  • run devcom updateNI using following parameters:
      Use name of inf file from Inf file is ...
      Use driver ID from line in the end of that section, but only up to and including" "Revision" part, e.g. PCI\VEN_8086&DEV_24D5&SUBSYS_80F31043&REV_02\3&267A616A&0&EA
  • Command line would be something like:
    devcon update "c:\windows\inf\oem0.inf" "PCI\VEN_8086&DEV_24D5&SUBSYS_80F31043&REV_02"

  • Monday, July 20, 2009

    TBB Performance


    My colleague who is working on optimization of quantitative calculations and plays around with Intel's thread building blocks (TBB) shared with me interesting performance results.

    Let's say you trying to do a simple math operation, e.g. sum numbers in arrays A and B into correspondent cells of array S.
    The intuitive guess would be that this is exactly type of operation that would benefit form running it in parallel on few threads/processors. Well, it's not and here are results (test was executed on two Intel's core Dell laptop):





    As you may see - running it using a straight loop is around four times faster than running it using TBB (selecting manual splitting of 1000 pieces) and around eight times faster (almost order of magnitude!) than running it using TBB and letting it employ automatic splitting heuristic.

    Our guess is that processor is perfectly fine-tuned for such types of task (locality of reference, L2 cache, optimistic pre-fetching of commands from pipe etc). If you employ few processors you introduce "coordination overhead" and pay performance price for it.

    It seems that TBB would provide performance benefits for tasks of a certain complexity balance - more complicated than described here, but still not "too complicate" so that coordination overhead is not too high...

    Here is the code if you want to check it out.

    Calling a member function for all STL map values (in a single line of code)


    int newSize = 50;
    typedef std::map<int, vector<double>> MyMap;

    // call vector.resize(newSize) for all values (pair->second) of STL map
    for_each(m_map.begin(), m_map.end(),
       tr1::bind(
         mem_fun_ref(&vector<double>::resize),
            tr1::bind(&MyMap::value_type::second, tr1::placeholders::_1),
            newSize));

    Thursday, July 16, 2009

    Sociological poll's results are clustered


    Occasionally I watch some TV news programs that do polling on various political and social issues. First of all - the fact of existence of such polls is curious by itself, since it depicts how many simple minded peoples there is out there happily paying for the phone calls to poll numbers just to express their opinion. In my view all those polls are nothing more that side revenue generation options for TV/phone corps and specifically designed for it.

    Anyway I've noted an interesting fact - those results have some clustering patterns - both in time and quantitative space and let me explain what I mean.
    Quantitatively - results are always clustered around the following ratios:
    98:2
    90:10
    2/3: 1/2
    1/2: 1/2

    I didn't done a massive statistic on it, but it's my observation. Isn't that curious?

    Now regarding "time clustering" - if poll results would be very biased, i.e. huge majority in favor of a certain option (like 98:2 or 90:10) - then usually during the very first seconds (something like 30 - 40 sec's) of the poll - the minority option would be the leading one! It's seems like people supporting an option which is really not favorable in view of the majority are reacting much more actively than the average citizen.

    My lecture on distributed computing


    Here is my lecture on distributed computing which I presented recently to my colleagues.
    (Some of the slides were taken from open materials that I've googled out.)
    I think that Distributed Computing/Grid/Clouds and related technologies are going to be in the center of next technological boom/bubble cycle.
    This is both because technology seems to be cheap and mature enough to crop the fruits and since it would be employed by Energy Grid / EnergyNET..

    Thursday, June 25, 2009

    Use Beyond Compare with Team Foundation Server in VS 2008/VS2005



    VS2008 → Tools → Source Control → Visual Studio Foundation Service → Configure User Tools:
    • Compare → C:\Program Files\Beyond Compare 3\BComp.exe → %1 %2

    • Merge → C:\Program Files\Beyond Compare 3\BComp.exe → %1 %2 /savetarget=%4 /title1=%6 /title2=%7


    Sunday, June 21, 2009

    Addin favicon to your blog




    Here is how to add Favicon to your blog:



    ThreadPool.QueueUserWorkItem() could be very slow

    ThreadPool.QueueUserWorkItem() could be very slow if callback being executed as a work item calls Thread.Sleep(). Consider the following example:



    1. using System;
    2. using System.Threading;
    3.  
    4. namespace Test
    5. {
    6.   class Program
    7.   {
    8.     const int waitTime = 10000;
    9.     static void Main(string[] args)
    10.     {
    11.       for (int i = 0; i < 10; i++ )
    12.         ThreadPool.QueueUserWorkItem( TestProc, i);
    13.       Console.ReadKey();
    14.     }
    15.  
    16.     static void TestProc(object stateInfo)
    17.     {
    18.       Console.WriteLine("Item number #{0} at {1}", (int)stateInfo, DateTime.Now);
    19.       Thread.Sleep(waitTime);
    20.     }
    21.   }
    22. }




    The problem is that thread pool waits around 500 ms before allocating a new thread.
    You may solve it by pre-specifying a minimal amount of threads in your application:
    ThreadPool.SetMinThreads(20, 200);

    Sand Requiem - devoted to soviet soldiers and people fallen in war that started 69 years ago...





    Wednesday, June 17, 2009

    Howto: publish metadata for net.tcp endpoint and add reference to WCF service hosted in process/service/console



    1. app.config => Edit WCF configuration

    2. Open "Services" section, then "Endpoints" section.

    3. Select an endpoint for which you want to add metadata/MEX endpoint hosted with TCP binding

    4. Endpoints => New service endpoint
      • Set Address to something like net.tcp://localhost:5060/MyEndpointMex

      • Set Name to be something like MyEndpointMex

      • Set Binding to mexTcpBinding

      • Set Contract to IMetadataExchange

      • Set ListenUriMode to Explicit


    5. Advanced => Service Behaviours => Add "New Service Behaviour Configuration"
      Add serviceMedatadata section and set both HttpGetEnabled and HttpsGetEnabled to False

    6. Now start your service process, open VS 2008, select References and then Add Service Reference.
      Put net.tcp://localhost:5060/MyEndpointMex in Address field.

    7. Enjoy




    Metadata contains a reference that cannot be resolved net.tcp



    Error "Metadata contains a reference that cannot be resolved: 'service reference'.
    If the service is defined in the current solution, try building the solution and adding the service reference again." could be caused by specifying specific contract rather than IMetadataExchange in Contract section of service endpoint configuration.

    Barrier multithreading primitive in C#






    public class Barrier
    {
    public Barrier(int count)
    {
    Count = count;
    }

    public int Count{get; set;}

    public void Wait()
    {
    lock(this)
    {
    if (--Count > 0)
    {
    System.Threading.Monitor.Wait(this);
    }
    else
    {
    System.Threading.Monitor.PulseAll(this);
    }
    }
    }
    }


    Tuesday, June 16, 2009

    Productivity tools suite



    This post would be periodically updated and contain list of best tools for personal use.
    (Updated: 23/12/2009)



    Blogging

    w.bloggar - free blog editor; integrates with most of blogging platforms.
    Windows Live Writer – same… slim UI.


    Productivity

    • Office:
      Copernic Search Desktop - Index and search your e-mails (in non-commercial version indexes mails only). Interface is outlook-oriented and it's easier to use then Google Desktop.
      Google Calendar Sync - automatically synchronize Outlook and Google Calendar.
    • Health:
      Workrave - assist healthy work organization by reminding to make exercises and mini-breaks
      Aire Freshener - Nature sounds player - good for relaxation (see why).



    Security

    • Antivirus:
      Avira Antivir - Free Edition - great for home use
    • Firewalls:
      PC Tools Firewall Plus - easy to use personal firewall - the only one which is free for personal use and works with Windows 2003
      Agnitum Outpost Free Edition - great for home use
    • File system:
      Eraser - secure data removal tool.
      True Crypt - open-source virtual encrypted disk
    • Security Scanners:
      Secunia PSI - check whether any installed software requires upgrades. Download and install update patches automatically.
      Microsoft Baseline Security Analyzer - check missing security updates and detect some security breaches. May scan range of PC's in a network.
    • Passwords Management:
      KeePass - Manage all your password in encrypted container. Freeware; support search, groups, expiration control, language packs.



    Sound, Music, Video, Images

    • MP3:
      MP3 Split - Open-source & freeware application to split MP3 & OGG files by size, duration etc (without decoding). I using it really heavily to split audiobooks into chunks of 15-20 minutes and listen them while driving to work. It has command line and UI version (GTK). If you use it to split audiobook - select "auto-adjust mode" in Preferences to automatically split around silence zones.
    • Video:
      Media Player Classic - looks like old-style Windows Media Player but provides major features and supports many video formats.
      VLC Media Player - open-source media player, support virtually every format...
      XP Codec Pack - codecs for majority of video formats.

    • Image editors & viewers:
      Paint.NET - opensource image editor.
      FastStone Image Viewer - free image browser, converter and editor.




    System

    • Sniffers:
      Ethereal - comprehensive network sniffer - Windows + #nux. Free.
    • Web Sniffers:
      Fiddler - free web (HTTP/HTTPS) sniffer & debugger.
      HttpWatch - web sniffer & debugger with programmatic (C#, Javascript & Ruby) automation interface. Free in basic edition.
      TracePlus & Web Detective - bundle of regular & web sniffer - no free edition.




    System Tools

    • Download Managers:
      Free Download Manager - free, GNU license
      Flashget - Free, built-in ads
    • Miscellaneous:
      Process Tamer - monitor and dynamically adjust CPU usage of running processes.
      Shadow Copy - Copy files (including locked files!) or entire drives.
      Unlocker - check which process locks your file and unlock it.
      VirtuaWin - virtual desktop manager.
      Windows Installer CleanUp Utility - Uninstall any component installed on your system. Usefull to resolve installation problems.
      WinUpdatesList - list all windows updates on the system and provide extensive information on each (install date, install user, list of files) + show uninstall command for the update (properties window).



    Thursday, June 11, 2009

    Rally toward the multiprocessors and cloud computing





    The rally to multiprocessor/grid/cloud computing begins. I think technology starting gradually to approach maturity point, when it's possible to crop money from the technological break. It is especially important, since mentioned areas are essential for the next economy boom/bubble cycle, which seems to ride on energy consumption:



    Interesting development in this field is NVIDIA's CUDA technology which evolved from their developments done for the high-performance gaming video cards.Basically CUDA is a set of processors embedded in a GPU card, that are clustered in a blocks. Amount ranges from few hundreds in low-budget cards and up to thounsands in GPU-dedicated cards line (Tesla). There is a ready API enabling to utilize this enormous (and enormously cheap) computing power in software applications. (It integrates with VS 2005 / 2008 and from development point of view - the parallel code should be placed in a separate files [.cu], developed in plain C extended with some parallel notions. - You kind of specifying (by using special registers) which MP cluster and which processor inside of cluster is used for the specific code route.) For a now such integration is not really smooth and requires development effort, but by no doubts NVIDIA would extend it for C++ and .NET. There are some 3rd party SDK's already to integrate it with .NET actually: http://www.gass-ltd.co.il/en/products/cuda.net/Releases.aspx

    Notes about future developments in multiprocessign computing



    Below are engrossing notes from Intel Developers Conference by my collegue Adam Shaked Gish about future of computing, as Intel sees it.
    • There will be no more performance improvements for the single core - it is as fast it may be, as physics prohibits silicon from getting any faster.
    • Performance will be achieved by properly utilizing multiple cores. Intel is committed to this visions they already see a future in which a desktop has 100 cores inside.
    • As opposed to single core where apps gained performance when installed on new hardware for free, there is no free lunch in multi core. Engineers must be properly trained, and code properly written to utilize the cores in a scalable manner, and to write correct code (multithreading bugs can be very difficult to discover and fix).

    In order to utilize the MP power you will need two things:
    1. A high level library you can use to parallelize tasks, without directly using OS primitives like threads and locks. The low level code is just too complicated to understand or maintain.
    2. A set of tools to help you analyze your performance, and find bugs and bottlenecks whithout these there is no way to achieve maximum performance.

    As for C++ libraries they discussed:
    • OpenMP as the C style API to parallelize loops. Its advantage is that it is easier to introduce into existing code. Old standard supported by most modern C++ compilers.
    • TBB - a set of templates that allows to think about multi tasking in an object oriented way - you define a task objects and have them run in parallel. It is open source (a set of templates) and has ports to most major OS'es. It is also benchmarked to be faster than OpenMP. However it is more difficult to introduce into existing code and usually requires some amount of redesign.
    • An additional new technology is being researched and it will allow a user to prove the correctness of code written with it. It is still in research stages.


    As for tools - Intel just released a new suite of tools named "Intel Parallel Studio". It is aimed at making parallel computing available to the mainstream developer. All tools are addins into Visual Studio:
    • Intel Parallel Composer - a compiler, and a set of libraries and compiler extensions aimed at making development of multithreaded code easier.

    • Intel Parallel Inspector - a bug finder focuses on finding memory bugs (like tools we try to use today) and threading bugs.

    • Intel Parallel Amplifier- a performance analysis tool, focused on finding threading bottlenecks and optimizing the use of multi cores.

    • The suite's retail price is 800$ per license (25% off till end of summer).


    Monday, June 01, 2009

    Comprehensive list of Debugger Visualizers for Visual Studio




    Here is a comprehensive list of Debugger Visualizers for Visual Studio.
    It's based on (sorted and merged) info from here, here and here and my own additions.

    Here you go:

    ASP, WEB:
    ASP.NET control graph visualizer - http://odetocode.com/Blogs/scott/archive/2006/01/12/2726.aspx
    ASP.NET Cache Visualizer - http://blog.bretts.net/PermaLink,guid,07cd8437-862e-45c6-b24e-3a286fce1b66.aspx
    ASP.NET Control Visualizer - http://blog.bretts.net/PermaLink,guid,87d735a0-1592-4711-860f-8a1d29c9630f.aspx
    ASP.NET Visualizers - http://weblogs.asp.net/scottgu/archive/2006/01/12/435236.aspx
    WebVisualizers - http://webvisualizers.codeplex.com/


    Graphics & UI:
    Bitmap Debugger Visualizer - http://blogs.geekdojo.net/brian/archive/2006/08/06/bitmapvisualizer.aspx
    Graphics Debugger Visualizer - http://www.codeproject.com/KB/macros/GraphicDebuggerVisualizer.aspx
    ControlTree visualizer - http://odetocode.com/Blogs/scott/archive/2006/01/12/2726.aspx


    DataSource & Data:
    Data Debugger Visualizer - http://www.codeproject.com/KB/grid/datadebuggervisualizer.aspx
    Debugger Visualizer for Visual Studio - http://coding-time.blogspot.com/2009/03/debugger-visualizer-for-visual-studio.html
    Mole Visualizer For All Project Types - http://www.codeproject.com/KB/macros/MoleForVisualStudio.aspx
    http://www.moleproject.com/
    http://joshsmithonwpf.wordpress.com/mole/
    Righthand Dataset Debugger Visualizer - http://cs.rthand.com/blogs/blog_with_righthand/pages/Righthand-Dataset-Debugger-Visualizer.aspx
    XML Visualizer - http://blogs.conchango.com/howardvanrooijen/archive/2005/11/24/2424.aspx
    IEnumerable Visualizer -
    http://rapiddevbookcode.codeplex.com/wikipage?title=EnumerableDebugVisualizer

    LINQ, DB:
    DB Connection Visualizer - http://dbvisualizer.codeplex.com/
    LINQ Expressions DebuggerVisualizer - http://www.manuelabadia.com/blog/PermaLink,guid,9160035f-490f-46bd-ab55-516b5c7545af.aspx
    LINQ Expression Tree Visualizer- Look in VS 2008 Samples
    LINQ to SQL Debug Visualizer - http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx
    LINQ Query Visualizer - http://msdn.microsoft.com/en-us/library/bb629285.aspx
    LINQ to SQL Visualizer - http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx
    LINQ to Entity Visualizer - http://visualstudiogallery.msdn.microsoft.com/en-us/99468ece-689b-481c-868c-19e00e0a4e69


    System & miscellanea:
    CAB Visualization - http://www.codeplex.com/WorkItemVisualizer
    GUID Debugger Visualizer - http://devmatter.blogspot.com/2006/04/guid-debugger-visualizer-for-visual.html
    IL Visualizer - http://blogs.msdn.com/haibo_luo/archive/2006/11/16/take-two-il-visualizer.aspx
    Improving Visual C++ Debugging - http://www.codeguru.com/columns/kate/article.php/c15291
    PowerShell Debug Visualizer - http://poshdebugvisualizer.codeplex.com/
    Regular Expression Visualizers - http://weblogs.asp.net/rosherove/archive/2005/11/26/AnnoucingRegexKit10.aspx
    Sharepoint debug visualizer - http://spdv.codeplex.com/
    WindowsIdentity Debugger Visualizer - http://geekswithblogs.net/khanna/archive/2006/01/05/64903.aspx


    WCF:
    WCF Visualizers Tool - http://wcfvisualizer.codeplex.com/


    WPF:
    WPF Tree Debugger Visualizer - http://wpftreevisualizer.codeplex.com/
    DepO WPF Dependency Object Visualizer - http://www.codeplex.com/dathanliblikdepo
    WPF Debugger Visualizer - http://blogs.oosterkamp.nl/blogs/thomas/archive/2009/03/11/wpf-debugger-visualizer.aspx
    XAML Debugger Visualizer for WPF - http://www.codeproject.com/KB/WPF/XamlVisualizer.aspx
    Snoop - a WPF Utility - http://blois.us/Snoop/


    XML:
    Xml Visualizer v.2 - http://www.codeplex.com/XmlVisualizer
    Lithium XML Debugger Visualizer - http://blogs.conchango.com/howardvanrooijen/archive/2005/04/11/1267.aspx


    Tuesday, May 26, 2009

    Symantic Search Engine - Wolfram Alpha


    Symantic search engine - Wolfram Alfa:
    http://www.wolframalpha.com/

    Space Station Info:


    Comparison of Google and Microsoft stocks:


    Taylor series:


    Information Arbitrage with SkyGrid


    Link to the invitations (around 70 left right now) to join SkyGrid:
    http://www.parkparadigm.com/2009/05/24/welcome-to-skygrid/

    "SkyGrid filters the real-time web with high quality financial content from trusted sources. Founded in 2005, SkyGrid creates innovative technology that lets people have a simple way to see what information is having the most impact on the financial world at every moment of every day. "

    P.S.
    Post-mortem written by the Roger Ehrenberg - co-founder of Monitor110 - company that was developing similar product. Really worth reading. Look for 7 anti-amendments:
    http://www.businessinsider.com/2008/7/monitor110-a-post-mortem/

    Sunday, May 24, 2009

    Bear market durations


    Bear market durations (from the stock market peak to the lowest point):


    Period
    From
    Till
    Duration (months)
    Great DepressionAugust 1929June 193235
    Dot Com BubbleMarch 2000October 200232
    Financial MeltdownSeptember 2007Now is May 2009...22 months and rolling down...


    Monday, May 04, 2009

    "Good Enough" Counterrevolution


    This post is essentially my comment to the "Good-Enough" Revolution post which I think worthwhile to be turned into separate article. Besides - I didn't wrote anything non-technical for a long time... "Good-Enough" Revolution stands that many contemporary goods are "good enough" to be used and hence consumer often do not have motivation to buy a new version of the same good (e.g. man using Windows XP wouldn't go for Window Vista as XP is good enough for most of every day tasks, like e-mail, Internet or editing some office documents). While this observation is absolutely correct I think that important point is missed - contemporary goods are deliberately created not to be durable to compel consumer to, well, consume.


    A silent "Good-Enough" Counterrevolution is in its high. Producers do not create goods that are designed to last any more. Almost anything you are buying nowadays is deliberately designed to last for a short, programmed time and then broke. I think that the only consumer strategy to deal with it is to buy the cheapest version of an appliance you need - it would usually serve you the same time as its high-end version, while cost a half of it.


    Your washing machine served you for 10 years? – I bet that a new one would not stand for more than 2-3 years. Your old electric kettle worked for 5-7 years? - Buy a new one and it would leak in a year or so. Talk to guys who are working in electronics service/repair centers and they would tell you that stuff nowadays is PROGRAMMED to work for a predefined time and then broke. A friend of mine who works in a big car repairs firm told me that every car accumulator that occasionally served significantly more than a guaranty period is sent to the lab for examination to check out why did it lasted so long and didn’t broke. An observation about "good enough" was correct, but it's not applicable to the new goods - manufacturers are not interested in you wiping yourself with the same towels till your golden years. No, you should buy towels, use them and then buy new ones. We all are squirrels that have to rotate wheels of economy. No one asks squirrel whether it wants to get our of a squirrel-wheel marathon, right?

    Sunday, April 26, 2009

    Manually scheduling Check Disk upon next computer restart


    Set following value in BootExecute key of [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager] registry entry:

    autocheck autochk /r \??\C:autocheck autochk /r \??\D:autocheck autochk *


    Thursday, April 23, 2009

    How to uninstall an assembly installed by MSI from GAC



    If you getting message "Assembly 'assemblyname' could not be uninstalled
    because it is required by other applications." while trying to uninstall an assembly from GAC - here is potential resolution:
    http://bytes.com/groups/net/47733-unable-remove-any-assembly-gac

    Tuesday, February 17, 2009

    Sort Team System query results by multiple fields



    You can sort Team System query results by by multiple fields at once by holding the Shift button, while clicking on the desired headers. You can click a header twice in order to change the sort direction.



    Today vs Great Depression


    Two interesting charts I've came around:




    Wednesday, February 04, 2009

    Hard Rock Memorabilia Easter Egg


    There is a nice Easter Egg in Silverlight 2 Hard Rock Memorabilia application, demonstrating power of the Deep Zoom technology. Here is how it works: open the Memorabilia Home Page and press "V". You are photo of the Beatles figures now. Start to zoom-out - wow, the photo is inside of framework, which is on the ad' desk on the Hard Rock Café, which is on the NY street, which is a postcard, which is one of the tiles on a book stamp, which is ..............................

    Monday, January 12, 2009

    Top N Firefox Addons/Extension




    Updated: 23/7/2009

    First of all - why Top N? Well, it's just cause I'm completely fatigued by all those "Top 10..", "Top 50..", "Best everyday..." and similar that became ubiquitous in the blog space.

    So here is just the list of FireFox addons that I found to be useful for myself and use on everyday basis.
    I basically gonna use this post as a book-keeping entry to myself.

    Here it goes:

    1. Adblock Plus - cleans out most of annoying ads from web pages you visiting. Supports update of cleaning rules set (check it in its options). Enables to create your own blocking rules for the stuff you don't want to see.


    2. BugMeNot - automatically login to forums and site, for which you were to lazy to pass tedious registration process using infamous http://www.bugmenot.com/ site.

    3. Download Statusbar - see download status and manage your downloads from a tidy status bar, rather that using default download window.
    4. FoxyProxy - easy proxies management.

    5. Video Download Helper - instantaneously download videos displayed on a web-page you visit (e.g. YouTube).


    6. FlashGot - instantaneously integrate your favourite downloads manager with FireFox.


    7. Foxmarks Bookmark Synchronizer - this one is especially cool. Synchronize your bookmarks between your computers (work/home/laptop/...). Don forget to set HTTPS as a default communication protocol in option to secure your information!

    8. Gmail Notifier - get notifications on new e-mails in your Gmail account, check mails and easily switch between few Gmail accounts.


    9. IE Tab - open sites in FireFox-hosted IE window by one click. Setup sites to be automatically opened in embedded IE tab.

    10. LinkedIn Companion for FireFox - manage you Linked In account and automatically get job insiders in your network for the site you've visited.


    11. NoScript- disable/enable JavaScript per site or globally for better security.


    12. PDF Download - whenever you click link to a PDF document - you may choose to either Save, Open or Open as HTML.


    13. Tab Mix Plus - improved tabs management + possibility to save sessions/lists of currently open tabs.


    14. Ghostery - show list of web trackers used by site you visiting.