May 30, 2014

Expose WPF controls to view model via attached property

WPF view models shouldn't access anything in the view, but there's one huge exception. Some complex controls combine conceptual view and conceptual model in a single physical class. Binding helps with properties, but how can view models access methods on such controls?

C# still better than F#

I've got an ideal application for F#: grouping and statistical analysis of logs from a desktop app. It's kind of like application analytics but much deeper. F# is perfect for this kind of job. Or is it?

May 25, 2014

NoScript: Kill all the popups

Obnoxious javascript is now so frequent that disabling javascript by default breaks fewer sites than keeping it on by default. Yes, I consider site broken when it has obnoxious javascript popups on it.

May 20, 2014

Introducing JuiceStream library

.NET's Stream is a very versatile abstraction. You can define all kinds of streams, layer streams upon streams, and soon you discover reusable Stream implementations that can be plugged in to handle specific behaviors or traits of the stream you are working with. JuiceStream library attempts to include basic Stream implementations. Binary communication protocols are probably the best place to use these classes.

May 17, 2014

How to get rid of cable spaghetti on my table and in my apartment?

Enough is enough. The huge mesh of cables steals time when I need to clean up, yet somehow manages to trap enough dust to be always messy. It stands in the way all the time. It's so old-fashioned, anyway. I am now searching for true wireless nirvana.

Devil is in the details or how Canon cameras fail to deliver

I've bought Canon camera from its IXUS series some time ago. It indeed makes sharp high-res photos, i.e. it does its main job excellently. This article is about how much do small details kill the experience. Interestingly, this stuff won't show up in reviews. If you are up to buying a new camera, perhaps you would like to know what gotchas to look out for.

SparkleShare: Sharing & merging text files between computers

SparkleShare is basically a file syncing frontend for Git. I have meantime dumped it in favor of secure cloud storage with client-side encryption, but SparkleShare might still find some fringe applications and my experience with it might be of use to someone, so here it goes.

May 16, 2014

Europe-based online storage with client-side encryption

First, I had only once computer. Then I had two and later three, but I've used each one for different purpose. Then I started to blend my workflows and my sync woes started. After some one-off syncs, I've tried to use online apps for sharing, which I believe to be the future, but they suffered on mobile networks. I tried SparkleShare, which is dataloss-proof, but it took ages to resync. I've selected DropBox for its sync speed, but NSA spoiled the fun. So I took the time to review more secure alternatives.

May 11, 2014

Userbase never grows quickly

Scalability, for some strange reason, ranks high in a typical startup's priority list. I get handed requirements for servers scalable to 15,000 users or clusters scalable to 1,000,000 connections. Sounds ambitious, doesn't it? It's exactly this kind of optimistic thinking that will ruin the startup.

May 9, 2014

Business vs. engineering excellence

Siding is a grave mistake in this battle whether you support the business suits or the engineers. A "compromise" approach is merely showing lack of understanding of the problem. So what's the right choice? As usual, it depends. But then, what does it depend on? When exactly is the right time to go nuts with engineering vs. business priorities? When do business interests and quality engineering go hand-in-hand?

May 7, 2014

Printable Montessori color cards

Here you can download free DIY printable Montessori color cards that are good enough for playing at home. Three printable pages contain 9 colors with 7 tints/shades per color for a total of 63 color cards. The colors are the standard ones: red, green, blue, pink, purple, orange, yellow, brown, gray.