Mono, Docker, 3.14, WebAPI on NTK 2016

This year I’ll be presenting at Microsoft’s NT Konferenca as I do every year.

As the topic I’ve picked my experience of using Docker I gathered from a real world example. I’ve been building an application that is a combination of PostgreSQL database, Mono/NGINX/WebAPI on server and UWP/Windows10 on client. Server side supports various OS. Target is Linux but it should run on Windows without issues. The combination of server OS and server tools choice drives costs down significantly on one hand and makes it versatile on the other.

Docker helps a lot through the development and final deployment in production. And that’s what talk is all about. 3.14 will play a role as well – showing that there is almost no HW restriction for such a combination on server side. We’ll build and deploy the application through rich demos.

See you there, Monday at 9:00.

No more forums at rthand

For few of you who used my forums: I’ve decided to shut down my forums at Not much traffic and constant spamming/attacks weren’t worth my time. I think my time will be better spent in my projects.

You can still contact me through many channels, such as this blog’s Contact page (which should be working lately), twitter (@mihamarkic) and so on.

Thanks everybody that contributed to forums!

Automating the Righthand Dataset Visualizer build process and a refresh build

Since the last version released I become aware of an issue in the visualizer. If you were working on a project that referenced newer DevExpress assemblies the visualizer might have reported an exception due to the binary incompatibility with its references to the DevExpress assemblies - a assembly binding issue.

(If you want just the binaries you can skip to the end of the article and download them.)

The solution is to use a custom build of DevExpress assemblies. If you have their sources you can build your custom DevExpress assemblies using these useful scripts.

Then I have to use those custom built assemblies with my visualizer but I want to use them only for release build, not for debug. So I created a folder named CustomAssemblies under visualizer solution. I added a reference path to this folder to all of the visualizer projects. Which means that the MSBuild will use assemblies in this folder if they are present or ones from GAC (the original ones) if the folder is empty. Unfortunatelly the reference paths are global to the project and you can't have two different sets for two different configurations.

So the building of the release version looks like: populate CustomAssemblies folder with custom DevExpress assemblies, run MSBuild on Release configuration and at the end clear the CustomAssemblies folder so the debug version works with the original DevExpress assemblies. But there is one more obstacle. The license.licx file lists public key of the DevExpress assemblies and it doesn't match the one found in custom version. So I have to replace all occurences of the original public key with my custom version public key before the build and restore the originals after the build. Problems solved.

The actual release process involves also {SmartAssembly} which merges all assemblies into a single file and signing it with a certificate+timestamping and finally zipping the rather large result. Because I am not a masochist I decided to create a FinalBuilder project that does all of this automatically for me (except for building custom DevExpress assemblies).

Let me know if there are still problems! (12.67 mb) (12.67 mb)

Read more about Righthand DataSet Visualizer here.

Righthand DataSet Visualizer goes 1.0

As a New Year’s gift I’ve fixed few bugs in Righthand DataSet Visualizer and set its version to 1.0.

Here are some changes:

  • uncompressed assembly is a bit larger due to avoiding compression within merged assembly.
  • RowState is visible again
  • some grid drawing related fixes

Read more about Righthand DataSet Visualizer here.

Download the newest and older versions from download section.

2008 version is here.

2010 version is here.

Managing DVBLink IPTV channels

I’ve been using DVBLink 3.1 for IPTV and Server Network Pack for a week or two now. It is a software that makes IPTV stream available to various clients, Windows Media Center among of them. It works very well with my IPTV provider SIOL (note the SIOL’s IPTV service quality is crap nevertheless) and thus I am quite happy.

While it streams fine DVBLink for IPTV’s UI is a very ascetic one. Very. Imagine having 165 channels and you have to sort them by entering a number for any of them. Horrible, just horrible. Furthermore adding or modifying channels is not easy either if not impossible (luckily channel import works).

And hence here is the first step to the UI solution: Righthand’s DVBLink Editor v1.0.0. It is an application that will let you sort all those channels easily.

editor in action

First you have to load the channels configuration file (application will try to locate it and load automatically upon the start) if it isn’t loaded yet – no channels are listed and no file name is present in the config file editor. Click on […] or enter its full path manually and then hit Load button to load the content. Configuration file is named DVBLinkChannelStorage.xml and is usually found in [Program Files]\DVBLogic\DVBLink2 folder.

Once channels configuration is loaded you can order them. But before sorting the channels make sure grid sorts them by number (default) and they have unique numbers. Reorder button will assign them unique numbers while preserving the original sort order if any (it sorts by exisiting number and then by name). Basically Reorder button is a big friend of yours. Once you have them sorted you can change their order.

You can change channels order in various ways:

  • by rotating mouse wheel while holding Shift key
  • by pressing up or down key while holding Shift key
  • by entering the number directly – the two channels will swap position

Once you’ve done with ordering you have to save the changes by clicking on Save button. By default Stop service checkbox is checked which means that editor will try to stop DVBLink Server service before saving and it will restart it (only if it was running before) afterwards. When unchecked no service will be touched. If you wonder why a service restart is necessary, there is a simple explanation: DVBLink Server won’t pick changes otherwise.

System requirements

.net 4.0 (you will be prompted to downloaded and install it if it is not installed yet on your OS).

Possible problem

DVBLogic stores configuration file under Program Files folder which is a very problematic practice. Due to the security concerns no writable configuration file should be placed in there. Period. Furthermore you’ll need administrator privileges to change the file in question.

Happy sorting and keep an eye on this blog for further improvements to the Righthand’s DVBLink Editor! Feedback is appreciated.

Find the application here.

What’s new in C# 4.0 presentation at NTK 2010 in Portorož

Tomorrow I am talking about new features in C# 4.0 at NT Konferenca in Portorož, Slovenia and I’ll be there through all day. So if you want to hear what features were added to C# in its latest incarnation you are welcome to attend the presentation taking place in Emerald 1, 14:45 - 16:00.

Later I’ll participate in MVP Panel in MSTech (Pečina), 16:30 - 17:30 and as a SLODUG lead I’ll be present at SloUG meeting in Sunset, 17:30 as well.

If you just want to talk about something .net-ish or just want to say hi, feel free to find me as I’ll be lurking around during my free time.

BTW, the official NT Konferenca twitter tag is #ntk10.

Righthand DataSet Visualizer now supports Visual Studio 2010

New in 0.9.16: added support for Visual Studio 2010 and updated user interface a bit. As before, everything is merged into a single dll file which is also digitally signed now.

Thanks RedGate {smartassembly} obfuscator tool for merging everything into a single DLL (ILMerge and another 3rd tool failed in this task). So far, I can only praise {smartassembly}.

Read more about Righthand DataSet Visualizer here.

Download the newest and older versions from download section.

Enjoy, and let me know whether you miss features or if you have any other feedback, good or bad.