April 21, 2010
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: Visual Studio 2010
# posted by Martin Kulov @ 1:19 AM
|

 |
 |
April 17, 2010
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: Events, TFS, Visual Studio 2010
# posted by Martin Kulov @ 1:26 AM
|

 |
 |
April 14, 2010
Уважаеми партньори и колеги, Амбициозният екип на Ай Ланс ООД, заедно с партньорската подкрепата на .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: Events
# posted by Martin Kulov @ 11:43 AM
|

 |
 |
April 12, 2010
 |
 |
March 28, 2010
 |
 |
March 26, 2010
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: EPiServer, Propeople
# posted by Martin Kulov @ 3:07 PM
|

 |
 |
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: Rants
# posted by Martin Kulov @ 2:59 AM
|

 |
 |
March 21, 2010
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: INETA
# posted by Martin Kulov @ 4:33 AM
|

March 12, 2010
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: Propeople, Tools and Tips, Visual Studio 2010
# posted by Martin Kulov @ 4:14 PM
|

 |
 |
March 05, 2010
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: Events, TFS
# posted by Martin Kulov @ 3:56 AM
|


|