Articles software developers should read, at least once

… if not twice.

These days, almost every software developer has a blog – so it’s sh*tloads of content around the Internet. Truth is, the good, accurate, long-lasting contents are hard to be found. Most contents are supposed to be obsolete very soon – and it’s OK, because many contents are for a very specific situation in a very specific time. But can we have a collection of the precious contents that are useful not only today, this week, this month, but ten years from now?

This is supposed to be a definitive collection of great contents that will be helpful for your entire career as a software developer. It’ll be updated frequently, with new link as I found it.

The Log: What every software engineer should know about real-time data’s unifying abstraction (Jay Kreps)

Logging is essential to every serious software system. But it’s not easy – getting it right can be indeed hard, especially in real-time. This article provides a deep knowledge about the concept.

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (Joel Spolsky)

It’s been 26 years since Unicode was introduced and still, not all people can get it right. This article gives you – as the tittle suggests – a minimum knowledge about Unicode, and how to not get it wrong.

What Every Programmer Should Know About Memory (PDF) (Ulrich Drepper)

This is a pretty low-level paper, you will learn about how memory works at hardware level. Still interesting and useful. Who knows someday you’ll have to get your hands dirty with some memory stuffs?

Continue reading “Articles software developers should read, at least once”

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”

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”