Yes, I'm doing terrible, horrible things on my daytime job. One of these things even contains the word "Classic" in its name.

But I'm not complaining.

So, you probably don't care why, but I was tasked with creating a .Net control as a replacement for an existing ActiveX, which had been developed in ancient times when we had a guy on our team who could really do C++.

(BTW there were times when I also did the pluses, but after the first project (which involved a screensaver with a plastic Bill Gates leaving colorful footsteps all over your precious work) I promised myself to never come close to it).

Long story short, there are several articles that explain how to do it, but a common knowledge (see e.g. this 4GuysFromRolla article) seems to be that you can't communicate with it effectively except for passing initial parameter values via HTML markup.

If you want to list all available routes in your Nancy Web application, here's a simple way for doing this in a unit test.

Ever since the introduction of Project Templates, creating a Web site online using Chpokk became as easy as it was in your favorite desktop .Net IDE (no, i don't mean Sublime). However, every user wants to see their beloved creation at some point, and do so every other minute. Now, this wasn't so obvious, until now.

If you've mastered the basics of TDD, it is easy to add a new piece of functionality to an existing feature using it. For example, to add an edge case to a calculator. Or to add a welcome email to the registration process. All it takes is writing a new test for an existing method, or for a new method in an existing class, and, red-green-refactor, here we go.

Not so easy when you are starting to work on a new feature. You want to run to a blackboard and draw diagrams and layers of abstraction vigorously, but the shadows of TDD Grandfathers look at you with infinite sadness, so you suppress your urge and just stare at the screen, not knowing how to start writing your first test.

I'm going to tell you how I'm doing it, and been doing it for a few years, using a concrete example of a feature I'm developing right now. Don't treat me like a guru, check it and see if it works for you like it does for me. I'm not going to bother you with code samples this time, maybe a couple of lines of pseudocode here and there.

You're gonna like it.

You think that renaming files is a kinda obvious function for a decent IDE. Well, Chpokk (my .Net IDE project) finally can do it. I'd say it wasn't as easy to implement as it seems, but here you are. Didn't do it until now just because nobody asked for it.

There are many cases when you want to start a long operation and watch its progress. In my Chpokk project (a C# and VB.Net IDE), you can see it when you create a project (primarily when adding NuGet packages, which can be long), compiling, executing, and automated testing. I also plan to add it to source control related operations, like Git cloning or pushing. The problem is, we need to push the progress notifications from the server to the client, which is the opposite to what we are doing most of the time.

Fortunately, we already have a library that has been designed for this purpose. It's called SignalR.

Before I proceed with the detailed explanations about every feature, let's say a few words about what Chpokk is, and what it isn't.

Chpokk is an Web-based .Net IDE that lets you create, edit, and run your projects in your browser.

Chpokk is really cool if you can't, or don't want to, use the desktop IDE. Like, quickly check some code without having to wait till the IDE loads. Or if you don't have permissions to install it. Or on the road, using your tablet. Or if you just want something simple and straight to the point.

I'm starting a new blog, my third one, here on Chpokk, because this is my current project, and this is where my focus and my energy is at the moment.

I means me, Artёm Smirnov, with this funny "ё" character in my name, which I hope renders correctly for even you ASCII guys who live far away across the Big Blue Sea.

I'll be writing here about various features that Chpokk has, and how I implemented them. I might be writing something about marketing, mainly a link to somebody else's wisdom (since I don't have much of my own yet), but it won't be much.

Let's get started.