26 productivity tips for software developers
Remember the saying about chain being only as strong as the weakest link? When it comes to software projects, you can make the right choices most of the time, but the one thing you do wrong will still cost you an order of magnitude loss of efficiency. And people usually err more than once...
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.
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?
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.
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.
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.
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.
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 your app
Assorted WPF controls including property sheet, selectable text block, stat counter, intelligent popup, color filter, and technical controls.
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.
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.
What's wrong with The Lean Startup?
Startups as an optimization problem is a nice abstraction, but there are better ways to optimize than continuous fine-tuning through thousands of micro-optimizations.
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
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?
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.
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.
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 child locks
Tech-savvy dad is testing and reviewing several Android child locks including Kids Place, Zoodles, Kid's Shell, and some unexpected alternatives.
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
Damage to productivity by open plan office is a well established fact. My point is that open plan office has profound impact on creativity as well. And it's not caused by the noise.
Building awesome opensource projects
This is the story behind SourceAFIS in case you were wondering why would anyone build opensource fingerprint matcher. I happened to do many things right back then, so perhaps there is something to learn from the story.