Robert's blog

High productivity development stack

Too much code to write and too little time to spare? I was facing the same problem in my work and hobby projects. Take a look at how I do things today to save time and maximize value of my work.

Zero-knowledge file sharing

Times of shared folders in Windows are long gone, fortunately. DropBox was easy and Internet-wide, but then NSA spoiled the fun. A rainfall of zero-knowledge services ensued and today the problem is choosing the best one for the job at hand.

What's in a good software library?

High-level advice on API design from author of several opensource libraries and a seasoned developer.

Cookie law is not just broken, it's thoroughly evil

How the cookie law can cripple the budding artificial intelligence of tomorrow while failing to protect real privacy.

Spam at the core of our security problem

Is it possible to stop automated attack without data inspection? How can the machine help you with your data without seeing the data?

Ad-xtremism

Attempts to stop adblockers are futile. People, who attempt to do that, don't realize they are facing a determined enemy.

Can I trust your app?

If you are very paranoid about security, what can you really trust? Is there anything you can trust at all?

Who needs partition tolerance anyway?

So much effort is poured into partition tolerance in databases, it is worth stopping and thinking about alternatives.

Secure IM: Problem solved?

Quick review of existing secure chat alternatives, including TextSecure, Silent Circle, Telegram, Cryptocat, OTR and Pidgin.

How to kill high-frequency trading

High-frequency trading is not necessary. It's not even useful. There are ways to stop this waste of resources. Here's an example solution.

How to setup high availability configuration?

Short review of readily available high availability options for enterprise developer, including cloud, HAProxy, keepalived, virtual IP, and DNS.

Pirate's Map of the Preschool Internet

Parent's guide to actually valuable first-time resources for preschool kids. No games, no kid-centered content, just safe general content.

ColoredImage in JungleControls

Easily generate colored variations from grayscale mask using ColoredImage XAML control from JungleControls WPF library.

Anchor WPF Popup exactly where you need it with PrecisePopup

PrecisePopup is a smart popup for WPF that can open in multiple relative positions depending on how much space there is around it on the screen.

Server-side RIA framework

RIA doesn't need to be client-side. Server-side, if properly implemented, actually offers huge advantages to developers and end users alike.

DataPipe: Pushing read-only dependency properties to view model

Expose read-only WPF properties, especially ActualWidth and ActualHeight, to view model via DataPipe attached property.

Collection properties for Assisticant.Facades

New version of Assisticant.Facades lets you parameterize your WPF controls with collection dependency properties with the same ease as with scalars.

No more DependencyProperty with AutoDependencyProperty.Fody

Fody plugin that eliminates those verbose dependency property declarations in WPF controls and replaces them with single attribute.

Easy WPF control authoring with Assisticant.Facades

Gone are the days of painstakingly defining controls with dependency properties and event handlers. You can now use Assisticant in custom controls.

Jet engines in startups

Not everyone is cut for a startup. Pick your people wisely and learn to work with them. Corporate HR and management is dangerous in startups.

Expose WPF control to view model III

Gain access to WPF controls from view models where needed. While admittedly an ugly practice, it is sometimes easier that fixing the offending controls.

LazyControl in JungleControls

LazyControl lets you load WPF content on demand. It is an alternative to virtualizing panels for complex layouts.

Implicit style breaks XAML editor

If you are getting "Object reference not set to an instance of an object" error, try this fix. It worked for me.

DelayedContentControl in JungleControls

DelayedContentControl loads its Content lazily when required for rendering. It's more efficient and less noisy than standard ContentControl.

Expose WPF controls to view models II

Access controls from within view model by adding a bit of code into window constructor. It's ugly, but it's sometimes necessary.

GuerrillaNtp: App-embedded NTP client for .NET

Perform simple NTP queries from C# code. GuerillaNtp provides accurate NTP time for applications running on broken clients.

SelectableTextBlock in JungleControls

WPF TextBlock doesn't support selection, which is needed in some applications. SelectableTextBlock control offers a workaround.

StatCounter in JungleControls

Nice, visually compact numeric stats control for WPF with support for labels and units. It can be used to build dashboards.

PropertySheet in JungleControls

PropertySheet WPF control implements traditional Windows property sheet with labels on the left and content on the right.

JungleControls: Free WPF controls for you app

Assorted WPF controls including property sheet, selectable text block, stat counter, intelligent popup, color filter, and technical controls.

How to sabotage software business

Improving programmer productivity by exposing the most powerful ways to kill it. Do the opposite and save yourself manyears of wasted time.

Dynamic vs. static languages

Why everyone gets it wrong when arguing for dynamic or static languages. It's all about the tools, but it's not that straightforward.

Expose WPF controls to view model via attached property

Access WPF controls from view models by adding concise attached property to XAML. It's a bit hacky, but it does the job where necessary.

NoScript: Kill all the popups

When adblocker is not powerful enough to save you from annoyances, it's time to consider disabling all javascript at the cost of a small loss of page functionality.

Introducing JuiceStream library

Assorted implementations of .NET's Stream including multiplexing, proper buffering, cancellation, pinging, in-memory streams, and lead streams.

Numbers in fingerprint recognition systems

Beginner introduction to common fingerprint recognition terms like 1:1 and 1:N, FAR, FRR, and EER.

Speed of fingerprint recognition doesn't matter

A few back-of-the-envelope calculations show that overoptimizing fingerprint matchers is useless and brings no benefits to end users.

Userbase never grows quickly

Avoid optimizing for heavy loads. Actual service usage grows so glacially slowly, you will have plenty of time for optimizations later.

Business vs. engineering excellence

It's more accurate to speak about business through engineering excellence since the two go hand in hand. False 'tradeoffs' are a mistake.

Printable Montessori color cards

Downloadable Montessori color cards in PDF and SVG format. Print them and cut them to get budget alternative to the wooden Montessori original.

Pinpointing application security issues

'We will be careful' is a really inefficient and usually also ineffective approach to security. It's better to place focus only where it is most needed.

How to route server traffic through VPN

Short guide on how to connect to a server in the cloud via VPN without getting lost in details of setting up a full-blown enterprise VPN.

Which programming competitions are worth your time?

Veteran competitive programmer's advice on the best, not necessarily the most popular, programming competitions to invest yourself in.

Screencast recording on Windows

It turns out that screencast recording is not so easy. This is a short story about my experiments with screen recording.

The Lean Startup revisited

Startups as an optimization problem is a nice abstraction, but there are better ways to optimize that continuous fine-tuning.

How to publish self-hosted video

YouTube is not the only option. It's surprisingly easy to self-host your videos. Codecs are an annoyance, but there is a free solution here too.

Why are software libraries so bloody expensive?

Commercial libraries aren't necessarily (or even usually) better than their opensource equivalents. The difference is in support and in customer nature.

The surprising architecture of future applications

If you think the future is in JavaScript, you are mistaken. 'Downloading the universe' to the client is an old problem from the 90's that has a very simple solution.

Google search sucks or why creating better search engine is easy

Google is the new Microsoft. It's all about cash and remarkably unconcerned about customer experience. It's not that hard to launch an alternative.

Outbound firewall rules any good?

Inbound firewall rules are obviously useful, but is there any reason to setup outbound firewall rules, on client or server?

Master password in Chrome

Short overview of master password alternatives for Google Chrome and some thoughts on the topic.

What's the fastest browser with adblocker?

Comparing Firefox and Chrome, Chrome is faster in vanilla state while Firefox is faster with adblocker installed.

Creating perfect toddler games on Android

As a dad, I am a bit frustrated with the offering of toddler games on Android. The ideas behind the games are usually nice, but the games cannot survive 5 minutes of testing by children. You can use this checklist to audit usability of your Android game.

Bandwidth meter for Windows?

Search for Windows bandwidth meters shows two interesting tools: FreeMeter and NetWorkx.

American software and services I want to get rid of

There's european alternative to every american app or service, but switching is not so easy and it won't come early nor on mass scale.

Why buying better hardware doesn't help anymore

If you are in the market for new hardware or software, it's efficiency you are looking for, not features or glamour.

Future of SourceAFIS

SourceAFIS reains free. It will get major updates. But there will be likely a commercial spinoff in some distant future.

How (not) to win CodeChef Long Challenge

Valuable advice from veteran competitor who almost won the 1st place. Every game has rules and there's always a way to win a game with rules.

Smartphones: 90s déjà vu‎?

There's a reason why the world dumped desktop apps in favor of the web in the 90's. It looks like smartphone app developers are repeating an old mistake.

Android apps I like

My personal list of Android apps, including K-9 Mail, Kids Place, Google Translate, Lightning Launcher, and many more.

How do I backup Blogger blog?

Overview of the Blogger backup options. There are many to choose from, but none are without their flaws.

How to remove Google stuff from Blogger blog

Guide to removal of Blogger toolbar, "about me" widget, footer attribution, mobile layout, and Google's image hosting.

Android child locks

Tech-savvy dad is testing and reviewing several Android child locks including Kids Place, Zoodles, Kid's Shell, and some unexpected alternatives.

Prefetching website pages

Reviewing the prefetch technology: the theory, the algorithms, the costs, and existing implementations.

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

Internal software is not bad. But when it starts growing, it's better offloaded into public library to share the cost of development.

My thoughts on productivity of programming

Practical productivity tips from veteran developer. The point is to do smart work instead of hard work,

Freemium fallacy

Why is that the freemium model is so expensive? Wouldn't charging everyone or most everyone lead to lower prices?

How to write custom NLog time source

A short guide through building custom NLog time sources. We will build a time source with configurable time zone as an example.

How to configure NLog time source

A quick tutorial for the new NLog time sources, including XML and C# configuration. Overview of all four built-in time sources.

NLog timestamps with millisecond accuracy

What was wrong with the old NLog timestamps? Why was the new time source API needed? Because timestamps are important and not everyone was happy with them.

Entity Framework T4 view generator and .NET 4.5

Pre-generated Entity Framework views significantly speed up application startup. They are fairly easy to do with the built-in T4 template engine.

Open plan office scares away creativity, kills productivity

Open plan office is detrimental to creativity, because all good ideas start as stupid ideas. They need to mature protected by privacy.

Is it possible to use web accelerator to make websites faster?

Is it possible to apply the old web accelerator techniques to the new problem of sluggish application servers?

Faster Adobe PDF Reader alternatives

Adobe PDF Reader works fine except it is incredibly slow. Foxit Reader is a faster alternative you should try if Adobe is too frustrating.

Building Awesome Opensource Projects

This is the story behind SourceAFIS. I unknowingly did many things right and I will now share my experience with you.