Nimble GeckoBlog of an upside-down developer, Art Skvira

Replacing pain and suffering with bliss and joy in your .NET journeys

Review of Refactoring Essentials extension for Visual Studio

03 Aug 2017

As a developer, more often than not you have to deal with other people’s code. And (hopefully only sometimes) you want to throw it all away and rewrite if from scratch. Those of us that are saner (or perhaps just with more battle scars) just roll up our sleeves and get into refactoring. And perhaps you know how awesome it feels to separate someone’s mess of a code into a neatly structured ensemble of classes and corresponding methods, especially when you realise that mess was written by your very self.

Read more →

Top 5 resources to learn .NET Core web development

04 Jul 2017

When it comes to something as new and quickly changing as .NET Core, and all the other tech that runs on top of it, such as ASP.NET Core and Entity Framework Core, it can be quite daunting trying to keep up with all the changes that Microsoft keeps introducing after finding a seemingly sane and workable solution.

Read more →

Which is better for learning C# - .NET or .NET Core?

14 Nov 2016

We are naturally drawn towards new stuff - new means better, right? Surely you heard of .NET Core, unless you’ve been living under the rock for the last couple of years. New is hard to resist, especially when it’s backed by Microsoft’s huge PR/propaganda machine. Don’t get me wrong, I am not blaming Microsoft - they’ve got to make sure they attract and retain enough people onto the new platform, but this is exactly the moment you want to stop and ask yourself - what’s better for me, given my task, needs, and constraints?

Read more →

How to store login details securely in application config file

11 Nov 2016

It is very common in our day and age of interconnected integratedness for an application to be reaching out to external services such as email servers, databases etc. This creates a problem – you need to store usernames, passwords, access codes, API keys etc somewhere and mitigate the risks of that sensitive information either not being found or read by a wrong person.

Read more →

How to select a default value in DropDownList from a database

09 Jul 2016

As highlighted previously in one of those articles, it’s easy to get confused and stuck when trying to specify selected or default value for dropdown lists. The problem stems from the fact that, first and foremost, MSDN documentation is terrible for those things, and secondly because of the approach that Microsoft took, trying to build “one-size-fits-all” solution. But let’s not get too philosophical here and get down to the ground.

Read more →

.NET Core or .NET Framework - which one is right for you?

08 Jun 2016

.NET Core RC2 has been released just recently and while things have somewhat stabilised, there’s still a lot of confusion around the differences between spanking new .NET Core and the older but more stable .NET Framework.

Read more →

How to validate a text input for only printable ASCII characters in ASP.NET MVC

01 Mar 2016

Let’s dive right in, plain and simple: for some reason, you need to make sure that your users don’t enter any non-printable characters into a text input field on a form. Maybe the data needs to travel to far reaches of the known universe, to a remote ancient banking backend system that runs on COBOL and mainframes (fueled by the energy of a dying brown dwarf). Or maybe the column in the database where this data is going to end up has never heard of Unicode. Or maybe that’s just one of those unexplainable, irrational so-called “business rules”, that some aspiring manager somewhere up in the ranks decided to implement.

Read more →

How to get organic search traffic back after broken Jekyll 3 upgrade

13 Feb 2016

It’s a fine day, your site runs smoothly, thanks to Jekyll with its static HTML generation and your clean and clever markdown. Then for some reason you decide to have a look at the Google Analytics Organic Search report and suddenly you see that your traffic just jumped off the cliff.

Read more →

How to trace SQL Server database errors and exceptions with SQL Profiler

07 Oct 2015

Sometimes, when errors or exceptions happen you can’t just attach a debugger to your web app - for example, errors may happen only in production, and you can only sit and watch the error logs fly past, or sometimes there are even no meaningful logs available. Maybe you need to debug a closed system - proprietary component/NuGet package that fails. Maybe it’s a combination of several factors

  • licenses, data, environment settings, external processes - all that makes local error replication really hard or impossible.
Read more →

How to avoid and fix NullReferenceExceptions in ASP.NET MVC

30 Jul 2015

Quite often people stumble into same problems again and again, and getting a NullReferenceException is the one that occurs most frequently, and frankly, can be quite annoying. This problem happens when writing brand-new ASP.NET MVC code, such as controllers or views, but also when modifying existing code that used to work just fine, but somehow suddenly got broken. Here I want to show you why these exceptions happen and how to fix them, so you can stop wasting your time and do more of the programming that you actually enjoy.

Read more →

How to use Bootstrap 3 validation states with ASP.NET MVC Forms

15 Feb 2015

Recently, when writing code for my blog post on drop downs, “DropDownListFor with Dictionaries in ASP.NET MVC and why SelectList wants to kill you”, I stumbled over an interesting problem – when using ASP.NET MVC HTML helpers, such as @Html.TextBoxFor() and @Html.DropDownListFor() to render controls and @Html.ValidationMessageFor() to render validation error messages, I realised that ASP.NET MVC uses its own CSS classes, so no errors are getting highlighted when using Bootstrap 3.

Read more →

DropDownListFor with Dictionaries in ASP.NET MVC and why SelectList wants to kill you

06 Jan 2015

I would like to show you how to use ASP.NET MVC helper function DropDownListFor and SelectList class with generic Dictionaries, such as Dictionary<string, string> or Dictionary<int, string>. Dictionaries can be quite useful for a number of scenarios – serving as a data source for select lists of countries, states, time zones, age ranges, genders – basically any pre-defined, fixed-set options lists.

Read more →

Using Drop Down Lists with enums in ASP.NET MVC

17 Nov 2014

ASP.NET MVC is a very powerful, yet quite complex (if not complicated) web development framework. There’s a heaps of various namespaces, classes and functions. It’s bloody hard to figure out which particular class or function overload you need to use for your specific task.

Read more →

Learning How To Learn Better

29 Oct 2014

There probably was only a handful of subjects at school and later at uni that I liked - and I despised or ignored the rest, doing everything I could just to get a good enough grade to get to the next term. It wasn’t all that different at work after that - whenever something boring had to be done, I’d distract myself with whatever I could - news reading, social media, pretending to ‘learn’ by reading tech articles/books. Sometimes that worked out ok, other times it totally sucked due to the stress of looming deadlines.

Read more →

Using simple Drop Down Lists in ASP.NET MVC

15 Oct 2014

It’s surprising how many subtle, but frustrating traps one can fall into when building sites with ASP.NET MVC. Creating forms for the web is one of them. It’s common to spend hours on something trivial, such as displaying a selected value in a DropDownList on postback, or getting that selected value in a controller. Quite often it happens when you just start learning ASP.NET MVC or upgrade from an older tech. And boy, is this frustrating as hell – instead of building an actual web app, you spend hours wrestling with the framework.

Read more →

Adding a coins pocket to Mighty Wallet: a DIY adventure

22 May 2014

When my old leather wallet started falling apart I decided I could do without another piece of an animal’s skin. Turns out in this day and age you don’t need to kill a cow to make a wallet - just use something synthetic, like tyvek.

Read more →

Resume trawling job ads

21 Aug 2013

Sometimes you come across a job ad and think - man, that’s a totally awesome role, and the technologies are just right - all the spanking new, koolkids tech, none of those yesteryear’s spaghetty-code-promoting proprietary technologies; and the project sounds way too rad - an uber social-geolocation-photosharing crowdsourcing app for neo-hipsters. Without further ado you reach for your CV that’s been just updated and off it goes.

Read more →

You are batshit crazy

13 Jul 2013

You have surely seen some crazy people around. A dude walking down the street and yelling uncontrollably and unpredictably. Or that old lady on the train - she always seems to argue with somebody invisible. Man, you tell to yourself, it must suck being those guys. What a mess must be going through their heads all the time!
Read more →

You should be doing more job interviews

22 Jun 2013

Even if you change jobs often, having an interview can be a stressful experience. No single interview is the same, and there's always plenty of things to throw you off the track even if you're a seasoned job hopper or a contractor.

Read more →

Four apps that changed my messy life for the better

07 Jun 2013

There’s plenty of app reviews on the net. Productivity this, getting things done that. But those focus on the features primarily, and not on the long-term impact on one’s life. Nothing like longitudinal case studies that my inner nerd loves. So I’d like to list here some apps that I’ve been using for a while, and managed to change my life for the better while doing so.

Read more →

Recruiter interviews - are they a waste of time?

02 Jun 2013

Job search often takes a lot of time and can be quite unpredictable - you never know how long will it take this time to find a job. That is especially the case when you have to deal with an extra layer of "insulation" - headhunters/recruiters.

Read more →

Google Analytics event tracking made simple

25 May 2013

Google Analytics lets you to specify up to four arguments when tracking an event: Event Category* (text), Action* (text), Label (text), Value (number), Interaction flag (true/false).

* denotes a mandatory argument.

Read more →

Using Google Apps Script for automation of small tasks

19 May 2013

I've been manually tracking the number of .NET/C# jobs in Melbourne for some time now. I could've automated it, probably, but it was easier to do it just by hand - it took only a couple of minutes every day anyway. So I thought it wasn't worth it. Although I love automating things like that (sometimes even overly so), I still hesitated.

Read more →

Notes on "Marketing Software, For People Who Would Rather Be Building It"

02 May 2013

I just finished watching Patrick McKenzie's presentation "Marketing Software, For People Who Would Rather Be Building It". There's quite a bit of good new stuff in this presentation that is based on his personal, hard-earned experience.

Read more →

How City Drains You

25 Apr 2013

Working for the last several months from home I haven't been to the Melbourne's CBD. As it often happens, taking a break from something - be it a certain type or place of work, exercise or a relationship - anything really - helps to put things into a perspective and look at it from a different, if you like, angle.

Read more →

Permanent Dissatisfaction

22 Apr 2013

Reading Hacker Monthly (#26, "Why you’ll always think your product is shit") I just had this thought. When you look at something you created, say a program, a site, an app or a blog post, and if you don't think it lacks something in certain areas or that it can be made better - you are not looking hard enough. Or maybe you're just resting on your laurels.

Read more →

Permission Marketing Book Review

16 Apr 2013

Do you hate marketing and marketers in general as much as I do? Lots of people I've talked to, and amongst those software developers in particular seem to exhibit a rather burning disdain towards the industry in general. And you can hardly blame them, since the dodgy and annoying marketing practices are so abundant and so widespread. Being a rather logical bunch, we have problems tolerating notion of "spinning" things, as well as the exploitation of the various behavioural biases and shortcomings of the human nature.

Read more →

How to Start Reading Less and Doing More

08 Mar 2013

Let's start with something familiar: it's a middle of your usual working day. You just had a good lunch and maybe don't feel like getting back to work straight away. You don't feel like lolcats either, maybe because there's this nagging whisper that you really should go through the pile of stuff that you call your RSS reader, or maybe because you generally hate Facebook and live and breathe Google Reader [Twitter, App.Net, you-name-it] because that's what all cool tech people do.

Read more →

Never Trust What Recruiters Say

02 Feb 2013

People generally don't enjoy job hunting. And I can't blame them. I'd rather clean up my garage, pair all my socks up, trim the hedge, take the rubbish out, vacuum the roof and be nice to neighbours instead of applying for a single job. All because of hating to deal with people who cannot tell their left foot from HTML, and yet they somehow manage to sound so confident and knowledgeable when asking you all those technology-related questions.

Read more →

Notes on "UX Design for startups" e-book

28 Jan 2013

Cover of UX Design for startups

Marchin Treder, founder of has published a book recently, "UX Design for startups". While not being a substitute for a good book on UX in general, it gives you a decent overview of relevant challenges that a startup may face, as well as high level overview of UX design. There are also some interesting notes on startup analytics, although nothing that Pirate Metrics wouldn't cover.

Following my general principle of converting books/articles into actionable items, I took some notes while reading this book. Have a quick look at those and decide for yourself whether it's worth reading the book.

Read more →

Automate Your News Reconnaissance

27 Jan 2013


Did you ever say to yourself - "I had enough of this whole internet browsing thing! It just has to stop!". So you quit cold turkey. But boy did you get back to it after a couple of days. A number of studies have shown that our willpower while being somewhat trainable, is still depletable. The same way we slide into tasty oblivion of junk food by the dusk, we tend to increase our news intake when we are tired, bored or stressed at work.

The Problem

It's hardly the best way to consume news - haphazard, jumpy, barely actionable. It can also feel quite overwhelming - especially when you see this huge, always growing pile of items sitting in your RSS or inbox. How often did you say to yourself:

"Screw this, I'm marking it all as 'read'!", so you can just get that illusion of control back?

Read more →

How to Deal with Recruiters: Salary Related Questions

19 Jan 2013

Bomb sign in Point Nepean National Park It all starts with a friendly-sounding recruiter who rings you up in the middle of your working day. He says that he's just found your CV in their database and you might be a perfect match for this new exciting role with their cool client (who, by the way, has got a bright new office that is filled with XBox consoles and unlimited free coffee; they also use this latest cool technology that you fancy and operate in a startup-y mode with none of this managerial crap that you have to put up with at your current place).

Then he changes tone of his voice slightly, just enough so you can notice it, and starts asking questions about you: your experience and technologies that you used in the past. The conversation then quickly shifts to things like your current position, salary and your manager's name.

Read more →

Notes on "Double Your Freelancing Rate" book

23 Dec 2012

I have just finished reading a rather interesting book by Brennan Dunn, "Double Your Freelancing Rate" (you can get the  "Interviews" part of it from Amazon here.

Double Your Freelancing Rate Book Cover

Brennan calls himself a "premium freelancer", and runs a custom software development business In this book Brennan shares his experience on how he managed to differentiate himself from a crowd of "tech web guys" by shifting the focus of value proposition from technical aspects, such as particular technologies to more of a business value creation, such as bringing more sales, customers and alike.

I have been taking short notes while reading the book and then distilling those into actionable items. It's too early to say whether doing so has helped me to achieve the proverbial "doubling of my rates", but it definitely made me think and question a lot of the assumptions I had.

Read more →

Focus, Or Else

19 Dec 2012

The more I venture into the whole "flying solo" mode, the more I realise the importance of being laser-focused on the stuff that really matters and ditching the stuff that doesn't. Oh, and discerning the latter from the former.

There's just too much going on around us - RSS, email subscriptions, Hacker News, Twitter, Facebook, Coursera, hanging out with friends - all of that is a great fun to do. Some of that creates an illusion of progress - like knocking the items off your reading list or writing short tl;dr type of summaries in Evernote. But very few of those things actually take you towards your goals.

Read more →

No Coffee, No Alcohol

01 Dec 2012

I started smoking in my first year of uni. Initially it was just one cig in the evening - that helped me to fall asleep faster. Later it became a sort of social thing - fellow students would be lighting up on lecture breaks, so did I. Eventually it became a part of the everyday routine - comforting, pleasure-bringing activity. That pleasure didn't last for too long - a year later I started coughing like mad and just had to quit.

Same theme of psychological and physical comfort and socialisation runs through caffeine and alcohol intake for me. I wasn't a coffee drinker until I moved to Australia - and even then for a year or so I somehow managed to avoid it. But eventually it caught up with me. Coffee in the morning on my way to work. Occasional coffee with colleagues after stand-up in the morning. An odd one at 3pm just to push myself through the day.

Read more →

How To Stop Wordpress Comments Spam

28 Nov 2012

Below is a simple solution to stupid, yet annoying spam problem. I never actually realised how bad it can get until I started this blog. Not that I get a lot of visitors and genuine commentators, but for some reason I used to get approximately 10 spammy comments per day - that's across all blog posts.

Read more →

When Your Drugs Wear Off

17 Nov 2012

Recently I have stumbled upon a great book on how to build a "Software as a Service" business. Although "Start Small, Stay Small: A Developer's guide to Launching a Startup" (here's e-book version) focuses primarily on the business side of things, there's a great deal of insights related to your typical, run-of-the-mill IT job. Book's author Rob Walling did a very good job at spotting certain patterns present in everyday reality of a programmer and describing those in details.

Read more →

When You Are Stuck

09 Nov 2012

All too often we find ourselves trying to solve a problem for hours. You may have googled your problem, spoken to people, tried this and that. But nothing really worked. Sometimes you try the same solution twice or three times in a row, secretly hoping that it will work. This can feel like running in circles. And god forbid somebody asks you "How long do you reckon it's going to take?", since you immediately feel like going for their throat. The worst bit is that you may feel really exhausted and not motivated at all to do anything at this point.

Read more →

Comfort Zone Escape Velocity

10 Oct 2012

Around a year ago I started a sort of socio-psychological experiment. Not a real one: no control groups, not a double blind one, no checking for confounds. Heck, even no data collection in its strict sense.

Read more →

Why I quit my job

05 Sep 2012

You probably know the pattern. People say to themselves: "Boy I hate my work. I so want to quit and never go back to this kind of stuff! I wish I could just do knitting or something". So you decide that you had enough of this shit. But then your cerebellum freaks out. You may even hear his adult voice saying: "Hold it right there young man. What do you think you're doing? You have bills to pay, family to feed and that fat mortgage which makes your bank happy".

Read more →