How I Joined Microsoft's Team

by Ventsy Popov

Some Background
Beginning of summer 2011 I decided I need to make some changes in the professional field, and look for new opportunities outside the company I worked for back then. Although I really valued my colleagues there, and from many of them I learned great deal of things, I felt the need to widen my comfort zone and experience new things. Recently after I made this decision and talked to my boss, I was able to find quite interesting projects to work on (and get paid for :)). For some months working on the new projects I was part of an American company's team. The guys were amazingly professional and punctual (it honestly surprised me!). Things happened with very good coordination and pragmatism... as if the work was done in an effortless manner :).

The Catalyst
But how did all this lead to Microsoft? Well... guys that know me, can confirm that I lo-o-ve participating in community events either as a speaker or just attending. The atmosphere in such places is always energizing and motivating. Not only due to the contents leading to gaining some useful knowledge, but also for meeting new people, having the geeky talks and good laughs on jokes which are quite often more than dull for non-technical people :). On such an event I found out about this opportunity in Microsoft for a guy who should take the role of “Developer Evangelist”. A role which did not speak very much to me back then and to be honest, I looked at with suspicion. Nevertheless, I decided not to overlook this chance and give it a good thought (and also make some research). What followed was my decision to pursue this, and series of different types of interviews... and luckily – my hiring :). In the meanwhile I managed to finish the projects was contracted for around that time.

Where are we at
Now, I am a one-month employee. Still on-boarding, but getting better perception of my responsibilities and taking more and more active part in the team with each day. I am excited that one of my goals would be to help the developers' community (not only Microsoft-centric one) learn all about trends in technologies on the road of each participant to being more effective while having great fun :).

The rest is yet to come as they say :)...


Tags: ,

Microsoft

Office 365 Available in Bulgaria

by Ventsy Popov

Office 365 cloud service of Microsoft was announced to be available in Bulgaria. I quickly went to http://www.microsoft.com/bg-bg/office365/online-software.aspx and checked it up to see what would I receive once I register. It is worth sharing my experience to guys who wonder whether or not to try it out.

Registration Process
It took me 1 minute to fill-in the registration form and then a couple more to wait for the features to be automatically set up for me:

Clicking Around
Once the the environment was set, I had a SharePoint Team site configured for me and could create a couple of test documents with Word, Excel and PowerPoint the same way as I would with these applications desktop equivalents:

I Also got an out of the box email account which could be accessed through a secure (HTTPS) connection:

An out of the box publicly visible site, which content could be easily edited within the SharePoint portal:

And finally I took a look at the administrative panel. Turns out you can add your own domain instead of using the domain name that you received when you signed up. On this custom domain you can host a SharePoint site after making some configuration changes. Along with this you can manage/purchase licenses within this panel, monitor your services health and write to support if you need help:


 

After having said all of the above what remains untold is probably the value of it... Here are a couple of things that come to mind as a start:
    - Companies residing on multiple locations can easily use this service to have a central place where they can sync their documentation.
    - The ones that do not have an office license (but might still use it :P) can be attracted by the small price (expected to be monthly between 1,79 and 25,50 euro per user depending on the license) and use the office on the cloud.
    - No need to be an IT to support your team portal and email server infrastructure, because it is taken care of for you.
    - No need to be a developer to put a fairly good looking public web site together.
    - Currently there is a trial period and you can register for free.


Oraganization | Office | Cloud Services

Web Platform User Group - ASP.NET Frameworks Comparison

by Ventsy Popov

A couple of days ago a Web Platform User Group meeting was held at Microsoft Bulgaria's office. It was a well attended discussion and I hope also a useful one. The topic was “ASP.NET Web Forms vs. ASP.NET MVC vs. ASP.NET Web Pages” or shortly called “ASP.NET Frameworks”.

Although we were sure the above technologies were already familiar ones, the point with this meeting was to see if we can consider some rules and questions that will help us decide when to use one instead of another. In a very brief way here is what we talked about:

ASP.NET Web Forms
A mature (and the oldest of the three) technology aimed mainly at rapid development, simulating stateful model of the Web. With its postback and event-driven model provides a small learning curve when a windows forms developer should transfer to web forms.

ASP.NET MVC
MVC pattern-based architecture of the developed applications. Allows developers to have very fine tuning control over the final HTML. SEO inclined with clear separation of concerns of the system components and TDD oriented.

ASP.NET Web Pages
Have the same full control over HTML as with the ASP.NET MVC case and uses Razor syntax. WebMatrix is a small and free IDE tool for Web Pages completing the whole idea for simplicity of this web development case. The main target here is not using commercial development products when you need to create a relatively small web site for demonstration, education, and in rarer cases commercial purposes.

Here are the full presentation: WPUG_ASP.NET_Frameworks.pdf (540.94 kb) and demos: WPUG_ASP.NET_Frameworks_Demos.zip (3.36 mb)  for more details.


ASP.NET | Presentations

Acquiring Microsoft Certified Trainer (MCT) Recognition

by Ventsy Popov

I am happy to brag about successfully taking the “Microsoft Certified Trainer” (MCT) exam. Although the enrollment process is still ongoing, the rest is paperwork that has yet to be done.

Trying out in a more formal way to see if my presentational skills worth something was a thing that circled in my mind for while. I've always had affinity for presenting on subjects I care about and this was a kind of natural step to take. Here are my tips based on the experience, if anyone might find it useful:

Preparation:
   1. Research from previous exams - ask friends who already are MCTs to share experience, contact Microsoft Bulgaria and get all the information there is about possible dates, requirements, fees, etc.
   2. Choose wisely a topic from an official Microsoft learning course. This should be considered well, because the purpose of the exam would be to mainly show your presentational skills, and not how expertly deep you are in a certain technology. In other words - the harder the topic, the more likely you might get it confused. And the second criteria is to pick something you really have knowledge of, and not start learning it now. The reason – additional questions would be asked to verify your expertise.
   3. After making your choice is the easy part – start reading the materials for the chosen course, so you can get familiar with the structure of the content. I even wrote down some bullets for every lesson in order to know what are the highlights I should not forget to mention.

Day of the exam:
   1. The exam usually takes place in one of Microsoft's certified learning center partners – in my case it was ITCE.
   2. There is a committee of judges who evaluate you, and also - a few students who listen and ask questions from time to time.
   3. Every candidate has to:
        - Present in exactly 25 minutes a lesson he already prepared. Having the last of these 25 minutes reserved for questions.
        - After that, judges pick a random lesson from the whole course and give you about 5 minutes for an overview.
        - When the five minutes are up, you have about 15-20 more minutes to present this lesson.
        - Lastly – judges ask you question(s) regarding the technology presented, so they can verify  you have practice with it, compared to just reading a book and memorizing it.

What to have in mind:
   - Timing
   - Attitude
   - Body language
   - Making contact with audience
   - Using presentational tools/materials

I think these are the main things one should have in mind if giving the exam a try :).


Tags:

Certification

Windows 8 Developer Preview - First Boot

by Ventsy Popov

After watching the BUILD conference keynote and being spammed so much with announcements about Windows 8, I decided to install it and give it I try for myself. Since I didn't wanted to mess with my working machine. On my sight suddenly (and purely unintentionally) appeared my girlfriend's PC. Elected by a majority in the house (me, me, me,.... oh – and me) it was to be immolated in the name of some-not-so-geeky-but-very-deep-sounding reason.

*Side note – no computer was harmed during the down-described process. I can even state that the mentioned PC is now “stronger” after the experience it had.

OK, if anybody bore my jabbering so far, here is a more focused description of my first impressions of the expected new OS.

I. Installation
I followed a very well described procedure from Scott Hanselman to make the installation on a bootable VHD. Here is a quick link: GuideToInstallingAndBootingWindows8... It should not take you more than half an hour to prepare for installation and about as much for the installation process to finish.

II. Loading
When the OS had to load for the first time, the boot manager has been changed for me in order to recognize the two available operating systems (Win7 was the existing one) – coolah! Although it took at least three times more than the speculated 8 seconds, the system was loaded asking me to create a new account. Here was my first surprise – it gave me the chance to create an account correspondent to my Windows Live ID. Later on I saw what could come out of this:
     - Personalize settings for this account, which can be used from another machine of mine.
     - Integrated access to my mail, messenger, skydrive.
     - Keeping me in context wherever my Live ID is needed.
...and leaving the door open for every other cloud service that can be expected to be part of “Windows Live”.

III. Logging
After I logged in – to be honest I had something of an “organizational” shock with all the tiles (instead of windows), which composed my desktop. See what I mean:

 

However I'll give it a chance, play a little for the next days, and probably write about my (hopefully) interesting findings. 


Tags:

Windows

Ergonomics - Starting With a Keyboard and Mouse

by Ventsy Popov

After spending some time in pains and using different ointments for my wrists I decided it's about time to ease my everyday work with my PC. As a starting point, I began digging throughout the net in search of appropriate ergonomic solutions for a keyboard and a mouse. One of the options was a pack of Microsoft keyboard and mouse (this is not an ad, though I might tend to be a little subjective when it comes Microsoft :)). My choice weighed down that direction even more,  when a friend of mine (thanks Viktor) gave me firsthand positive feedback.

I am happy to brag about my new purchase – Microsoft Natural Ergonomic Desktop 7000: 

 

And here is what you can find inside the package: 

 

I also took a couple of shots to see the main idea of how wrists are positioned in a more straightened and restful way:

]

 

That was my first step (I intend not to be the last) into comforting my work. What are your tricks for making a comfy working environment?


Ergonimics

A Way of Organizing Project Documentation

by Ventsy Popov

Have you ever thought if the way you are organizing your documents works for you and your team? Recently I had to sit and think (and research) of a common structure that on one hand is general enough to work (with minor adjustments) for most of the projects I participate in, and on the other hand is logical and self-explanatory.

Here is what I came up with:

  1. Project Planning
    1. Brief – an overview of the project setting one's focus on the subject.
    2. Specification – definition of the scope and work that has to be done.
    3. Plan – time schedule describing when and what should be done in a sequential manner along with specific milestones.
    4. Roles & Responsibilities – definition of a person's/team's involvement in the project.
  2. Environment
    1. Technical Documentation
      1. Network Access – what credentials and software is needed and how to use it.
      2. Systems and architecture – any specifics about interacting servers or applications.
    2. Rules & Procedures – description of things such as way of time tracking, question escalation, access requests, etc.
    3. Guides/Manuals – any documentation such as user manuals, installation guides, or other information regarding environment set-up or usage.
  3. Project Areas (Modules)
    1. Area 1
      1. Requirements – expectations that have to be met by persons/teams involved in this area.
      2. Processes – description of the steps that are taken for fulfilling the above requirements.
      3. Issues & Solutions – any issue that is found during the process of work and its corresponding workaround (if no workaround, then it belongs to “Questions & Concerns).
    2. Area 2
      1. ...
  4. Questions & Concerns – any open questions that need to be resolved along with obstacles/assumed difficulties or recommendations.
  5. Meetings & Discussions – description of meetings (discussed topics, decisions taken, responsibilities distributed, deadlines that were set, etc.).
  6. Contacts – contact information of the persons taking part in the project.

 

Reader, do share your thoughts or experience on this matter :).


Oraganization | Management

How to Access a Local Web Site or Service, Using Host Header

by Ventsy Popov

If we are part of a software developer team (contrary to one-man-does-it-all guy), quite often we find ourselves in a situiation in which we have to set-up a new developer environment. One of the issues we have to cope with, is adjusting configuration, that has to match the new machine specifics. An useful trick that is often used, is to implement aliases (SQL Server aliases, host aliases, etc.) on each developer machine, so that there are no differences in the configuration. This way if the configuration settings are preserved in a version control system, they are used by each develeper without the need anything to be changed. Instead, what happens behind the curtains is all the settings are interpreted with the help of the mentioned aliases to match the working machine environment.

Following the abovely described practice, recently we (the team and I) had to deal with a securuty isse that did not allow us to take full advantage of aliases configuration. My point in this post is to describe the problem and solution, hoping that it can be useful to someone else, and not only me :).

What was required

We had a MS SQL Reporting Services solution with a couple of projects in it. Projects had to be configured so that :
    -Each one had to use one and the same "Target Server URL" for deployment;
    -Behind this "Target Server URL", actually had to stand the developer's local machine.

What had to be done

In order for these things to work, every developer machine had to include two changes:
1) To have a record in the C:\Windows\System32\Drivers\Etc\Host file saying that "fixedname" server is actually 127.0.0.1
2) And in the Report Server Web Service configuration, we had to add  http://fixedname/ as a new URL from which the service could be accessed.

What was the problem

After doing what logically seemed to be enough and tried to open reporting services through the newly added URL, we found out that windows authentication did not work for this URL, and we could not use it at all.

What was the reason

After digging for sometime it turned out that after IIS 5.1 and above in combination with Windows Server 2003 SP1 (or Windows XP SP2) and later versons of Windows OS a securty check was implied. This check did not allow us to authenticate when the request was fired from the local machine using a host header, that matched a host header configured for the same machine. If we fired the request from another machine within the network, things worked perfectly. But in our situation, requests had to made and serviced by the same environment.

What was the solution

Well, it happend so, that there was trick which we could use in order to pass by the securtiy check – to disable it. Disbaling it in our case was justified, but do be careful to consider it carefully when you forbid a security feature. All we had to do was:
1. Click Start, click Run, type regedit, and then click OK.
2. In Registry Editor, locate and then click the following registry key:
3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
4. Right-click Lsa, point to New, and then click DWORD Value.
5. Type DisableLoopbackCheck, and then press ENTER.
6. Right-click DisableLoopbackCheck, and then click Modify.
7. In the Value data box, type 1, and then click OK.
8. Quit Registry Editor, and then restart your computer.
... as instructed in the following Microsoft KB Article: http://support.microsoft.com/kb/896861

This scenario can be applied not only when it comes to Reporting Services, but whenever you need a web site requiring a host header, to be accessed form the same machine that hosts the site.


Reporting Services | IIS

Sofia University - ASP.NET State Management

by Ventsy Popov

As developers we are quite often put in a situation of trying to find the right solution of a currently emerging problem. The immense information we have at hand (eyes) with internet might not always be useful, instead if you think about it, it can be in a way a bit wicked… Wicked so that it makes us copy and reuse ready-made fragments which leads to our tasks being finished as soon as possible. What I am trying to imply is that if we want to reuse our own knowledge, we should try to be aware of the fundamentals of the technologies we utilize.

Some of the basic, yet important aspects of ASP.NET state management a developer should have in mind: 

  1. Try to see the whole picture of state management in web applications in general (cookies, hidden fields, parameterized addresses)
  2. Then above all – know a page lifecycle. It comes very handy when you wonder what is executed first, the button click event handler or the page load one :).
  3. What comes next is see what goodies we have in ASP.NET in particular – view state, application state, session state
  4. Last - you can check how to manipulate request/response objects in .NET

A presentation from a Sofia University course referring to the above matters:  ASP.NET-State-Management.pdf (12.48 mb)
…and the demos for it: State-Management-Demos.rar (44.68 kb)


Presentations | ASP.NET

Backing up your web site in a few steps

by Ventsy Popov
Yesterday I decided to deal with something I’ve been postponing since the moment I installed the blog here. I can assume every hosting company has a way to back up the data it is hosting, including in my case. Yet, I am a bit more cautious when it comes to archiving my information in case it has to be later recovered… Along with prayers to computer gods not to allow such emergencies, I usually want be prepared as well. Here is a pretty easy way for a regular backup of a web site to a local machine:

 

First go and get BestSync 2011 (link here)
It’s a freeware app and once installed it will let you define a sync procedure between folders (local or not). At first you have to set the folders you need to sync, and the sync direction:
 
 
Then you have to define the desired schedule for the sync and even mark the task to be run as a Windows Service, so there won’t be any need to run BestSync at Windows startup:
 
 
Well so far so good, but I wanted my backup not only to be a sync process between two folders. My goal was to have daily backup archives. Following this idea I added an .exe file as an application that had to be ran every time the sync task is finished:
 
 
The cool thing here is how I created the .exe file, which had to do the simplest thing – to get all the data from the latest backup folder and copy it to a brand new folder named with the current date and time. I wanted super simple way to do it – a script for example. So I prepared the following .vbs:
Dim fso, objFolder
strComputer = "."

' Date and time

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")

For Each objItem in colItems
    dtmLocalTime = objItem.LocalDateTime
    dtmMonth = Mid(dtmLocalTime, 5, 2)
    dtmDay = Mid(dtmLocalTime, 7, 2)
    dtmYear = Left(dtmLocalTime, 4)
    dtmHour = Mid(dtmLocalTime, 9, 2)
    dtmMinutes = Mid(dtmLocalTime, 11, 2)
    dtmSeconds = Mid(dtmLocalTime, 13, 2)
Next

strDirectory = "D:\Backups\ventsypopov.com\" & dtmYear & dtmMonth & dtmDay & "_" & dtmHour & "." & dtmMinutes 
SET fso = CreateObject("Scripting.FileSystemObject")
Set objFolder = FSO.CreateFolder(strDirectory)
fso.CopyFolder "D:\Backups\ventsypopov.com\LatestBak", objFolder, True 
I tested it to be sure it does the job correctly. And here was the first obstacle – BestSync allowed a .bat file, .exe file or .cmd file only to be executed after a sync task. Batch file or cmd were not suitable, because I wanted everything to be in silent mode. So here is the trick - I used a little known IExpress application that can be found in C:\Windows\System32 to convert my .vbs to an exe. Here is a more in depth description how it works: http://social.technet.microsoft.com/Forums/en/ITCG/thread/c0e7575a-6983-453b-8959-c6d889ccc01f

…well this is not more than 20-minute procedure to assure you’ve taken some disaster measures :). If you try it out, do not forget to test a restore scenario… backups usually work pretty well, but when it comes to restoring… right?


Tags: ,

Maintenance