October 25, 2013

Prefetching website pages


Websites, especially blogs, are slow. I have super fast network connection that is left unused, because the bottleneck is in server-side content management systems, scripting languages, and databases. In this world of neglected sluggish servers, client-side prefetching comes to the rescue. It sounds great in theory, but where are all the practical implementations?

October 22, 2013

Should I develop new library for every abstraction that I need?

This is something I take for granted. DRY principle: Don't Repeat Yourself. It's not that simple though. It gets tricky when the number of repetitions is small or unpredictable.

October 15, 2013

My thoughts on productivity of programming

There's never enough time for coding. Awesome things can be done with software except that it takes ages to do anything, even the simplest of the tasks. Productivity is key in all projects, simple or complex, small or large. Here are some of my thoughts on the subject.

October 8, 2013

Freemium fallacy

There's something strange about freemium model. Why are all the premium accounts so ridiculously expensive? Sure people like their free account and they might like some extras they get with premium upgrade, but why don't they switch to cheaper providers once they need higher quality paid service?

October 7, 2013

How to write custom NLog time source

NLog 2.1 allows you to define your own custom time source. This is useful when you want to use non-default time zone, time taken from another machine, or a special highly accurate timing hardware. In this post I will guide you through the process of creating your very own time source.

October 4, 2013

How to configure NLog time source

NLog 2.1 added new feature that allows you to specify how NLog calculates timestamps in log messages. It allows you to choose between 1ms and 16ms accuracy and between UTC and local time.

October 2, 2013

NLog timestamps with millisecond accuracy

DateTime.UtcNow and DateTime.Now properties normally return time with about 16ms accuracy, which is normal in Windows. Windows however has a nice feature that allows multimedia and other real-time applications to temporarily increase time accuracy using timeBeginPeriod and related Windows API functions. Once the accuracy is increased to 1ms, DateTime.UtcNow returns time in 1ms increments. Cool, let's use NLog to measure how much time each part of the code consumes. Unfortunately, to my surprise, NLog still outputs timestamps in 16ms increments. How is that possible? And how to fix it?