Martin Kulov's Blog

VSTS, Oslo, INETA, ASP.NET, Debugging .NET Applications, Tips and Tricks

April 21, 2010

Getting Started with F#

F# is released with Visual Studio 2010. Below you can find FAQ about F# and get started at Microsoft F# Development Center.

Reposted from Don Syme's blog:

Q: What is F#?

F# is a productive functional and object-oriented programming language for .NET that enables users to write simple code to solve complex problems. Its succinct syntax and powerful type inference lets users stay closer to the domain they are working in, and the integration into .NET and Visual Studio gives rich access to the expansive .NET platform.

F# has strong support for parallelism and concurrency, through its support for immutability and asynchronous programming, and tools such as the F# Interactive enable exploring data interactively, analyzing, visualizing and testing against live data sources.  The development process then scales directly up to full .NET component development, without having to re-write code.

Q: What is F# designed for?

F# extends the .NET platform by offering a productive language for developers working in technical, algorithmic, parallel and data-rich areas.  This has included applications in domains such as financial services, data analytics, games, sciences and machine learning. But F# is also a general purpose .NET programming language, and the combination of language strengths makes F# valuable in a broad range of development applications.

Q: What were your big objectives when designing F#?

F#’s primary design goal has been to combine the simple expressivity of functional programming with the scalability of .NET and object-oriented programming.

Q: What is functional programming?

Functional programming languages express ideas at a higher level and allow users to focus on the challenge of problem solving instead of the process of writing code. A programming language like F# provides a ‘tool bag’ of functions that users can pick from to solve their problem. Functional programming includes concepts such as immutability to reduce dependencies between components, generics to express solutions that work over many different kinds of data, and functions as values to make it easy to abstract units of a solution into reusable pieces.

Q: What are the primary benefits of functional programming?

Because it abstracts functionality from coding, F# lets programmers focus more on the problem domain and less on programming itself. That’s a big benefit in some of the data exploration, algorithmic and technical computing domains and so we’ve seen a lot of interest in using F# here. By raising the level of abstraction of how problems are solved, solutions tend to be simpler, more general, easier to test and more parallelizable.

Labels:


# posted by Martin Kulov @ 1:19 AM

Share |


|




April 17, 2010

Brian Harry coming to Bulgaria

UPDATE: Due to air flight cancellations all over Europe, Brian Harry will not be able to make it. However the launch event is still going to be held. Same date, time and agenda applies.

http://www.microsoft.com/bulgaria/events/visualStudio2010.mspx

 

Visual Studio 2010 launch in Bulgaria will be held on 23 April, Friday. Event will be held at Technical University of Sofia, hall 2140.

We are honored to have Microsoft Technical Fellow and Team Foundation Server Product Manager, Mr. Brian Harry, who will be doing keynote about Visual Studio 2010. I am even more honored to do the demo for Brian’s presentation, so wish me good demo luck :)

I will be also doing a session about TFS for Everyone at 1pm so it is a great opportunity for all TFS fans.

Emil Stoychev and Branimir Giurov will do sessions on Silverlight 4 and Web and Windows Development in Visual Studio 2010.

Read more about the Official Visual Studio 2010 Launch and register in order to participate in the event for free using the link below:

http://www.microsoft.com/bulgaria/events/visualStudio2010.mspx

Who is Brian Harry?

Read more here - http://www.microsoft.com/presspass/exec/techfellow/harry/default.mspx

I am lucky to know Brian Harry from the years of interaction with him in Team System MVP mailing list. I would like to assure you that talking to this man is like drinking from a pure spring of natural, clean and proven software practices. Make sure you meet and talk to him during the event.

Labels: , ,


# posted by Martin Kulov @ 1:26 AM

Share |


|




April 14, 2010

Start in Garage – educational programme

Уважаеми партньори и колеги,

Амбициозният екип на Ай Ланс ООД, заедно с партньорската подкрепата на .net, Kaldata.com, ICN.bg, NEVEQ, Българската Мрежа на Бизнес Ангелите, Gemius - България, ABC Design and Communications имат удоволствието да Ви съобщят, че на 21, 22 и 23 Май, 2010 в гр. София ще се проведе тридневен обучителен семинар на тема „Предприемачество в софтуерния и интернет бизнес”. Местата са ограничени, поради специфичния характер на програмата и само 25 човека ще имат възможност да вземат участие!

 

ü  Какво са подготвили организаторите за Вас

Семинарът ще се проведе на английски език, поради международния характер на събитието. Tтеоретичните лекции и практически казуси ще бъдат представени пред малък брой участници в рамките на 30 часа. Третият ден от семинара – така наречения “VIP Day”- ще протече под формата на пряк диалог между инструкторите и аудиторията. Предвид настоящата икономическа криза, главен приоритет на мероприятието е участниците да обменят идеи, да споделят професионалните си проблеми и да придобият ноу-хоу от международни специалисти с богат опит. За да бъде постигната тази цел, организаторите залагат на индивидуален подход на преподаване, ориентиран към специфичните нужди на всеки един участник. Предвидени са повече от 10 часа посветени на разрешаването на реални казуси, както и прогнозиране и създаване на бизнес програми за действие. Нещо повече, след приключване на обучението на всеки един от участниците се предоставя възможност за пряк контакт с гост-лекторите и инструкторите за получаване на пакет от материали и допълнителна информация.

 

ü  Основни акценти в програмата

Организираното събитие е част от веригата образователни програми „Start in Garage”, които вече се радват на изключителен успех в най-развитите ИТ пазари в света - САЩ, Русия и Украйна.

Основните теми, заложени в сесиите на трите дни са: 

§  разработване на успешни стратегии и бизнес модели в ИТ сферата

§  създаване на стратегия за маркетинг и продажби на технологични продукти и услуги

§  привличане на инвестиции в стартиращи проекти

§  монетизация

§  защита на интелектуалната собственост

§  управление на човешките ресурси от създаването на компания до нейното развитие

 

ü  За кого е разработена обучителната програма „Start in Garage”

В целевата група на организирания семинар влизат мениджъри от софтуерния и интернет бизнес, както и предприемачи, желаещи да създадат и управляват ефективно своя интернет или софтуерна компания.

 

ü  Международни инструктори и гост-лектори

Инструктори и гост-лектори на семинара са доказани руски и български мениджъри и предприемачи в сферата на информационните технологии, с изключително богат опит.

Ø  Д-р. Николай Митушин - инструктор

Към настоящия момент Д-р Митушин е инвестиционен директор в „ABRT Venture Fund”, Русия. Той притежава докторска степен в сферата на „Инвестиционната и стратегическа оптимизация”. Опитът си в управление на софтуерен бизнес Д-р Митушин добива в софтуерни компании и корпорации като „Intel”, „Arptek” и „Microsoft” – Русия където е бил Инвестиционен директор.

Ø  Иля Антипов - инструктор

Иля Антипов е операционен директор и консултант към технопарк „Ingria”. Завършил е бакалавърска степен и две обучителни програми за мениджъри в САЩ в престижните учебни заведения - училището по мениджмънт към Технологическия институт в Масачузец и бизнес училището към Калифорнийския университет „Бъркли”. Иля Антипов е един от основателите на „RUSSEE Consulting” и „TEKAMA Inc.”, а също така ръководи отдел за съвременни технологии в корпорацията „TransDecisions Inc.” За богатия професионален опит на г-н Антипов допринасят съвместната му работа с “Microsoft”, участието му в много стартиращи предприятия, както и самостоятелната му кариера като бизнес ангел.

 

Ø  Антон Тодоров – гост-лектор – управляващ партньор в „Българска мрежа на бизнес ангелите”

Ø  Марин Илиев - гост-лектор – инвестиционен мениджър в „NEVEQ

Ø  Веселин Ангелов - гост-лектор - управител на „Gemius” България

Ø  Дончо Ангелов – гост-лектор – мениджър средства за разработка „Майкрософт България”

Ø  Горица Белогушева – гост-лектор – мениджър маркетинг и продажби “ABC Design and Communications”

 

Повече информация за събитието можете да намерите на официалната страница на семинара: www.startingarage.bg.

Labels:


# posted by Martin Kulov @ 11:43 AM

Share |


|




April 12, 2010

Visual Studio 2010 Features

Today Visual Studio 2010 was released. It has been crazy long work for Microsoft product group, but also for us - Visual Studio ALM MVPs (Team System branding is gone for good).

However after all these CTPs, emails threads, Live Meetings calls and demos, one can be easily lost trying to get what’s new in VS2010. Simply because it is a huge amount of information.

Below I will try to put a list of links that can help you to find our way through Visual Studio feature set or at least you can use it for a reference later.

Feel free to place any other relevant links in the comments below and I will update the list here.

 

What's New

Visual Studio Product Group Blogs

Visual Studio ALM Rangers 2010 readiness materials

10-4 video shows

Upgrading from TFS 2005/2008 to TFS 2010

Team System 2010 Overview

Team Foundation Server 2010 Key Concepts

TFS 2010 Project Management

TFS 2010 Work Item Tracking

Debugging and Profiling features in Visual Studio 2010

Write Faster Code with VS 2010 Profiler

Multi-Tier Performance Analysis

Visual Studio 2010 Beta 1: Parallel Performance Tools Overview

A Branching and Merging Primer

New features to understand branching/merging

Favorite VS2010 Features: Dependency Graphs and DGML

 

Web and Load Tests

Web and Load Test features in Visual Studio 2010

Introducing the Microsoft Visual Studio Load Test Virtual User Pack 2010

Using The Virtual User Activity Chart to Understand the VS Load Engine

VSTS 2010 Feature: Load test virtual user activity visualization

 

Lab Management

What is new for Visual Studio Lab Management 2010 RC

Getting started with Lab Management (Part 1)

Getting started with Lab Management (Part 2)

Getting started with Lab Management (Part 3)

Getting started with Lab Management (Part 4)

Enable Lab Management features for existing Team Projects in Beta2

Customization of End to End (E2E) Workflow of Visual Studio Lab Management 2010 Beta2

 

Test Professional

What’s new in Test and Lab Management in VS 2010 Beta 2

What’s New for Testing Tools in the RC?

Elevating the Role of the Tester with Visual Studio 2010

Resources for Visual Studio 2010 Test Tools

VS2010 demos for testing tools – MTLM, CUIT and related features

Test planning using Camano

Remote Execution and Data Collection

Diagnostic Data Adapters: Changing how Developers and Testers work together (Part 1 of 2 - The Test Impact Collector)

Diagnostic Data Adapters: Changing how Developers and Testers work together (Part 2 of 2 - The Diagnostic Trace Collector)

The Microsoft Test Runner – innovation for the Generalist Tester

Platform Support for Coded UI Test (and Fast Forward feature of Test Runner)

Coded UI Test

Test Impact Walk-through

 

TFS API

Introducing the TfsConnection, TfsConfigurationServer and TfsTeamProjectCollection Classes

Labels:


# posted by Martin Kulov @ 8:50 PM

Share |


|




March 28, 2010

TFS 2010 Guidance

Have you heard of Visual Studio ALM Rangers team? This is an awesome combination of passionate people that breath and live with Team Foundation Server. Some of them are working in Visual Studio Product Group and some – in Microsoft Consulting Services. Many of the things they release is being reviewed and commented from us, Visual Studio ALM MVPs formerly known as Team System MVPs.

There are guidance documents updated for TFS 2010 released recently from this outstanding team. You wouldn’t want to miss those if you are doing any Team Foundation Server work.

Check out the list below and let me know what do you think!

Visual Studio 2010 Quick Reference Guidance

TFS 2010 Upgrade Guidance

Visual Studio TFS Branching Guide 2010

TFS 2010 Requirements Management

Visual Studio 2010 and Team Foundation Server 2010 Virtualization

TFS Integration Platform

Three more projects are still to be released soon:

Visual Studio 2010 Database Guidance

Visual Studio 2010 Testing Guidance

Visual Studio 2010 Architecture Tooling Guidance

Labels: ,


# posted by Martin Kulov @ 8:36 PM

Share |


|




March 26, 2010

The Value of Open Source

I want to bring your attention to a Virtual Path Provider module we’ve built in Propeople. By default EPiServer stores all user uploaded images in a shared folder. Since our very first EPiServer project years ago, it was clear to me that we need to store these images in database. So we have built this Virtual Path Provider that uses ASP.NET infrastructure and have been able to plug it into EPiServer. It is always nice to know that the CMS system you have implemented your solution with, has a nice and pluggable architecture to fit your needs.

We have been using this Virtual Path Provider for years now, and since we find it very valuable we decided to open it to the world.

It is important to acknowledge that our implementation is based on EPiCode DatabaseFileSystem module . Unfortunately this module is only supporting EPiServer 4 which is rather old version already.

We collaborated with EPiServer Norway in order to clean up our code and make it work even better. Because of our previous requirements, we did not implement 100% all of the features that such a module such have. EPiServer helped us to find out weak spots and made code improvements.

Some of the features that we improved are:

  • deep copy and delete of files and folders
  • removing files from caches in load balanced environment
  • running under scheduler context
  • fixed threading issues
  • dumping contents of database file system
  • copy between existing VPP and database VPP

Why do we keep images in database instead of file system? Which approach you should take? Read my next blog post with more information about pros and cons.

You will be able to find the latest release of Database Virtual Path Provider at EPiServer Extras. Feel free to use it and give feedback!

UPDATE: Vladimir Terziyski from Propeople’s EPiServer team has published a nice wrap up on how to use VirtualPathUnifiedProvider in EPiServer. You can read it here.

Labels: ,


# posted by Martin Kulov @ 3:07 PM

Share |


|




Deployment Dependencies

Building anything on the web more than a static HTML page, introduces a lot of technical challenges from the novice to the expert software developer. There are many reasons for that, but there is one particular field that most people get very much frustrated - Deployment.

Most software developers are unaware of architectural and operational issues that a real life production system usually has. Developers can be really good at using AJAX, jQuery, MVC or whatever you name it, but if they to deploy the solution for themselves, they will most probably fail to do that in a reasonable time.

Why is that? Is it that Deployment process is much more complicated than writing software? Or is it because Deployment should be done only by IT Operations team, not the Developers? I would say – definitely it is not! Try to give the developer the most hardest algorithm to implement or cutting edge technology to use and he will do that. And try to give the IT Op team a WCF or ASP.NET configuration file to configure for production – they will most probably fail. My point here is that deploying for real production applications requires different skill set – the one of Software Engineer.

Software Engineers are the guys that know how software applications work, they can write and debug code, most often even in production installation. They are not afraid of digging into server performance or misconfiguration problems. On the other side they know what network load balancing, web farm installation, DNS server, and static route configuration are.

The major reason Deployment is so complicated is... dependencies... and configuration of dependencies. When developer work in their company environment many of the things he is using are already preconfigured for him. He doesn’t have to think about configuring Active Directory, Mail server, Database server, user access rights or even IIS. Most of these things have been pre-configured for him by the his technical lead and he is not aware of how to do that himself.

In my next post we are going to explore one of the deployment dependencies – the file system.

Labels:


# posted by Martin Kulov @ 2:59 AM

Share |


|




March 21, 2010

How to be User Group lead

At TechEd EMEA 2009, I was invited by Tiberiu Covaci to participate in a panel discussion. We talked about what is takes to be a User Group lead, how you can be involved with community activities and what is in for you. What made the panel really interesting was to hear different opinions from people leading Dev and IT user groups through INETA and GITCA, and also how different people from Microsoft feel about user group interactions.

The sessions is recorded and available for viewing and download here:

http://www.msteched.com/online/view.aspx?tid=53efa8fa-224d-4c5f-a694-ab7ab166e8dd

Please let me know if you are interested to become user group lead. Any help is welcomed and will bring value to our community.

Labels:


# posted by Martin Kulov @ 4:33 AM

Share |


|




March 12, 2010

Data and diagnostics cannot be collected

I am setting up Microsoft Test Manager in order to playback recorded manual tests for Propeople. I created a test case and set up my environment to collect data from web server.

However when I tried to start recording of my manual test with Microsoft Test Manager, I’ve got the error below:

Data and diagnostics cannot be collected

An error occurred while initializing diagnostic data adapters.

Timed out while initializing data and diagnostics adapters.

To increase the timeout values for all diagnostic data adapters, see the following link: http://go.microsoft.com/fwlink/?LinkId=169311.

I started poking around in Event Viewer in my local machine, test controller and test agent machines and I found some errors log at the Test Controller machine (pasting full error details so next poor soul can find it).

(QTController.exe, PID 4660, Thread 26) ControllerExecution: Exception: System.Net.Sockets.SocketException (0x80004005): No such host is known

Server stack trace:
   at System.Net.Dns.GetAddrInfo(String name)
   at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)
   at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
   at System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket()
   at System.Runtime.Remoting.Channels.RemoteConnection.GetSocket()
   at System.Runtime.Remoting.Channels.SocketCache.GetSocket(String machinePortAndSid, Boolean openNew)
   at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.SendRequestWithRetry(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream)
   at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, ITransportHeaders& responseHeaders, Stream& responseStream)
   at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)

Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Microsoft.VisualStudio.TestTools.Controller.IControllerEvents.ControllerEvent(TestMessage report)
   at Microsoft.VisualStudio.TestTools.Controller.ControllerExecution.<>c__DisplayClass1d.<CallListeners>b__19(IControllerEvents eventListener)
   at Microsoft.VisualStudio.TestTools.Execution.RemoteObjectContainer`1.InvokeAsRemoteUser(Action`1 invoke)
   at Microsoft.VisualStudio.TestTools.Controller.ControllerExecution.CallListeners(TestMessage testMessage)

The “No such host is known” exception is too general and I didn’t find any more information on the web on how to find my recording problem.

I was running the manual test recording from my laptop which at that time was connected through VPN to the office. I decided that VPN could eventually give some networking restriction, so I tried running test recording from another machine that’s located inside the office. Not surprisingly though this machine produced the same error.

What come to surprise to me is that this time the error in Event Log on Test Controller machine was slightly different:

(QTController.exe, PID 1368, Thread 34) ControllerExecution: Exception: System.Net.Sockets.SocketException (0x80004005): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 192.168.xx.xx:50086

Server stack trace:
   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
   at System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket(EndPoint ipEndPoint)
   at System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket()
   at System.Runtime.Remoting.Channels.RemoteConnection.GetSocket()
   at System.Runtime.Remoting.Channels.SocketCache.GetSocket(String machinePortAndSid, Boolean openNew)
   at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.SendRequestWithRetry(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream)
   at System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, ITransportHeaders& responseHeaders, Stream& responseStream)
   at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)

Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Microsoft.VisualStudio.TestTools.Controller.IControllerEvents.ControllerEvent(TestMessage report)
   at Microsoft.VisualStudio.TestTools.Controller.ControllerExecution.<>c__DisplayClass1d.<CallListeners>b__19(IControllerEvents eventListener)
   at Microsoft.VisualStudio.TestTools.Execution.RemoteObjectContainer`1.InvokeAsRemoteUser(Action`1 invoke)
   at Microsoft.VisualStudio.TestTools.Controller.ControllerExecution.CallListeners(TestMessage testMessage)

The IP 192.168.xx.xx is the address of where I run MTM client and after reading the cause of this error in Troubleshooting errors in lab management, everything suddenly got crystal clear to me.

The way MTM works is contacting Test Controller machine and initialize it. Then Test Controller is trying to open a socket back to the MTM recorder. You can see that by running “netstat -nab” on the MTM machine and look for something like this:

TCP    0.0.0.0:50086          0.0.0.0:0              LISTENING
[mtm.exe]

So in order to fix all errors of this kind you must make sure that your Test Controller can connect to the machine running MTM. In my case – the second error was produced because MTM machine was blocking the port because of the firewall. The first error was produced because MTM machine is a VPN client and it doesn’t get registered and resolved in DNS. In order to workaround this, I created a record to my VPN client in hosts file at Test Controller machine.

I’ve got it all running except IntelliTrace data collection which I will blog in separate post.

Labels: , ,


# posted by Martin Kulov @ 4:14 PM

Share |


|




March 05, 2010

Microsoft Days 2010 TFS sessions

Register for Microsoft Days 2010 and you can attend the TFS 2010 sessions below (also shameless plug :)).

Pay attention to the keynote as important announcement will be made, exclusively for Bulgarian TFS users.

User group members discounts apply. Contact me for more information.

Make sure that you drop by our Community Booth @MS Days 2010 and participate into exciting raffles :)

See you there.

Labels: ,


# posted by Martin Kulov @ 3:56 AM

Share |


|




This page is powered by Blogger. Isn't yours?

 








Recent posts



Locations of visitors to this page



History




 
Copyright © 2004-2008 CodeAttest Ltd. All Rights Reserved.
<%-- Google Analytics code --%> <%-- Google Analytics code --%>