Microsoft Build 2016 – impressions and thoughts

I was lucky enough to be able to attend this year Microsoft Build conference. Almost 5000 tickets were sold out in just 1 minute – according to Microsoft. And that was with a pretty hefty price – 2195 USD for 3 days conference.

At the registration

Yes I’m pretty excited. This conference is for developers so Microsoft intends to shows their most exciting technologies for the year ahead.

One thing I was most disappointed about is this year Microsoft gives no hardware as gift. Instead, they gave us an Azure account. I haven’t checked it, but it is supposed to value at $1000 or so (It is an account for some of the Code Labs, it’s not a gift from Microsoft). Last year, it was a HP x360 Spectre laptop, and the year before that attendees got an Xbox One (which was 499$ at the time) and 500USD credit in Microsoft Store. Microsoft explained that they want offer a “deeper technical experience” instead. I don’t know if they’ll deliver that promise, but a hardware gift would be really nice. I did hope for a HP Elite X3 this year. Lesson learned: Never set your expectation too high.

And today the show starts.

Continue reading “Microsoft Build 2016 – impressions and thoughts”

Git: In easy steps – Another book project

Git: In easy steps cover
Git: In easy steps cover

Well, I might start a living based on writing. If my books sell good enough. Yes, it’ll be available on Leanpub and you can register now to get a notification:

In this Easter I decided to start a new book project, based on what I’ve been doing daily: Git in easy steps.

Who is this book for?

This book explains Git concepts in a simple way, with examples in Git Extensions – the Git client to beat. It will walk through the flow and see what should we do, and why. Needless to say, it’s a beginner book. If you are already a Git expert, look else. (Of course you are still welcome to buy this book, well, you know, to complete your collection).

Continue reading “Git: In easy steps – Another book project”

How Episerver Catalog content versions work

This is an excerpt from my book – Pro Episerver Commerce. Use to get 20% off the book during Easter holiday (Mar 24th – Mar 28th)

One of the most important features in CatalogContentProvider is it bring versioning to catalog content. It was somewhat limited with Commerce 7.5 (the languages handling was a bit sloppy), but it has been much more mature since Commerce 9. The versioning system in Commerce 9 is now more or less on par with versioning in CMS, and it’s a good thing.

If you’re new to Episerver CMS/Commerce, then it might be useful to know how version and save action work in content system. Of course, you can skip this section if you already know about it. The version status is defined in EPiServer.Core.VersionStatus. When you save a content, you have to pass a EPiServer.DataAccess.SaveAction to IContentRepository.Save method.

Continue reading “How Episerver Catalog content versions work”

Lessons learned from running a blog

Expect yourself to do many things, if not everything. You’ll be an administrator, a developer and a writer, all at the same time. This blog is the first time I install WordPress, first time I install and configure Apache, first time I configure CNAME or so, first time I use Google Adsense. It was not smooth all the way, but it’s not that hard and it’s really rewarding when I got it works. One after one. I failed sometimes, like when I tried to make WordPress runs on PHP7 (I’m not a PHP developer after, so I run away when the problem gets out of hand), but for most parts, I can find an answer from here and there on the Internet. Thank you, internet.

Attracting visitors is hard. Internet is full of things and no matter how you try, there are always other content somewhere more interesting than yours. Except if you are exceptional good at writing, or you are famous person, most of the people will not visit your website. Not even one. And sadly enough, many of your visitors will not return, even if your website was helpful to them. You helped them to solve a problem and that’s it. Attracting visitors is already hard enough, and keeping them coming back is even harder.

Continue reading “Lessons learned from running a blog”

Episerver Commerce routing internals, part 2

This post is a second post after . The third part in the series can be found here: (I know, I should have published the post in the right order.) They are all excerpts from my book – Pro Episerver Commerce.

The hierarchical approach:

This “new” approach (today it’s not new anymore, perhaps we can call it newer?) was introduced  in Commerce 7.5 to make the routing of Catalog contents inline with CMS content. The core concept of this approach is to reflect the structure of contents to the structure of the Uri, for the discoverability. With SEO Uri approach, customers will never know how to get to the parent node, to see the other items in same category. With the partial routing, they can. To allow that, every catalog content has a piece of information – RouteSegment. This is saved in CatalogItemSeo as UriSegment, but is hidden for editing in Commerce Manager

Continue reading “Episerver Commerce routing internals, part 2”

The free courses of computer science and programming

One of the most wonderful impacts of Internet is it makes many knowledge freely available. You can still attend the courses from the best universities in the World, without having to spend a bunch of money to get into US. You can now access the precious contents from the other half of the world. Of course, it’s still far from effective as when you come to classes, having friends and assignments, for real, but it’s undeniably a huge benefit.

The knowledge is yours!

Introductory courses:

MIT 6.00.1x: Introduction to Computer Science and Programming Using Python
MIT 6.00.2x: Introduction to Computational Thinking Data Science
MIT 6.00: Introduction to Computer Science and Programming
Harvard CS50(x): Intensive Introduction to Computer Science

Continue reading “The free courses of computer science and programming”

The best tools for software development

Development can be hard – as developers we want to spend time to write code to solve problems. Luckily, we have tools to solve our problems – so we can save the precious brain power for the coding, and let them handle everything else.

These tools are used by me on Windows, but most of they are available on multi-platforms.


Platform(s): Windows

Seriously, it’s a tool to search for everything, by name:

Very simple interface of everything - just type in and search
Search for everything – instantly fast

It’s incredibly helpful when you want to jump to check something outside of your solution, but you don’t know exactly where is it located. Save me 5 seconds for every file and I use it, like, (at least) 50 times a days. 6 days a week (on average). Imagine how much times I saved?

It’s freely available at

Sublime Text/Visual Studio Code:

Platform(s): Windows, Linux, MacOS.

Edit almost everything, with Sublime text

Sublime Text is widely considered as the defacto standard for text editing – it’s fast, it’s smooth, it has bunch of useful (or even awesome) plug-ins, and because everyone uses it for everything, the guides is freely available everywhere. But with two caveats: It’s not free (79$ is not really expensive, but not cheap neither), and it has been rarely updated recently (it was updated, like two times last year). Many questions have been raised about the development in its forum, but they are all left unanswered.

Continue reading “The best tools for software development”

Episerver Commerce routing internals, part 1

Routing is important for any sites, and it’s even more important for a Commerce site – it can help driven sales. People nowadays search for everything, and ranking higher in the search results yield much better chance of your products being purchased. There are two routing systems in Episerver Commerce (as always!). The old one is based on SEO URI, has been there since Commerce R1, and the new one, HierarchicalCatalogPartialRouter, which is a partial router, was introduced in Commerce 7.5.

The SEO Uri approach

This approach is based on the SEO Uri, so the link to your product will be in form of http:///yourproduct.aspx. Note that .aspx is the default, but you are free to choose another extension, or even no extension at all. The SEO Uri can be edited in both Commerce Manager and Catalog UI

SEO Uri editing in Commerce Manager

Those information are stored in CatalogItemSeo for both Nodes and Entries, which each row represents the information of one node or one entry in one language. Note that only the Uri is unique and is used by the system, it’s up to your site implementation to utilize other information such as Title, Description – just follow best SEO practices.

Continue reading “Episerver Commerce routing internals, part 1”

Redirect your product URL:s in Episerver Commerce

Why redirect?

A very good thing about Episerver Commerce is that even you enabled the partial routing system, the old SEO Uri:s will continue to work (of course, as long as you keep the Uri:s unchanged). So they can coexist in same website – but that might not what you want – you might want to stick with only one routing system – it’s been told that the more popular your URL is, the higher rank it gets in the search engine results.

From hierarchial URL to SEO URL:

This one is pretty easy, just call this during your site’s initialization, the true parameter means you want to enable Outgoing Seo URI, and the next statement configures the redirect:

From SEO URI to hierarchial URI:

This one is tricky, there is no such built-in method allows us to do so. We can’t even override SeoUriRouter because it’s registered automatically and there is no way to guarantee that our router will be able to run before it. (If a matching router is found, the processing will stop).

Continue reading “Redirect your product URL:s in Episerver Commerce”