Replacing pain and suffering with bliss and joy in your .NET journeys
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.
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.
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?
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.
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.
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.
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.
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.
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
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.
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
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
06 Jan 2015
I would like to show you how to use ASP.NET MVC helper function
class with generic Dictionaries, such as
Dictionary<string, string> or
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
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.
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.
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.
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.
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.
13 Jul 2013
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
28 Jan 2013
Marchin Treder, founder of UXPin.com 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.
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?
19 Jan 2013
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.
23 Dec 2012
Brennan calls himself a "premium freelancer", and runs a custom software development business wearetitans.net. 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.
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.
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.
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.
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.
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.
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.
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".