Athletic Feet of Runner Positioned at Starting Block
Best practices, Self-Improvement, Self-Learning

Starting in an ongoing software project

Monday morning, 6 AM. You vault out of bed and into the shower, pick out your nicest shirt and leave for work. Finally, a new project. A breath of fresh air. The excitement of starting on a new team. The joys of digging into an unfamiliar codebase! 

In this post I provide some techniques I use to get a grasp on a new codebase fast. It’s always fun to start a new green-field project, but let’s be honest for a moment and acknowledge the fact that most projects you will work on as a software developer will start from an existing codebase. These tips and tricks will help you hit the ground running, even when you land in a muddy brown-field mess.

Continue reading

Standard
On legacy code
Best practices, Self-Improvement, Self-Learning, Testing

Legacy code retreat

Have you ever worked with code that literally brought tears to your eyes? Not in the good sense, mind you. I’m talking about code that is such a hassle to work with it makes you rethink some of your career choices. If that’s the case, a legacy code retreat might be just what you need to stop your fear of legacy code and instead start to appreciate the opportunities for improvement it provides. Legacy code can be a joy to work with, if you tackle it the right way.

Continue reading

Standard
website-header-22
Continuous Delivery, Security, Self-Improvement, Web Development

Techorama 2014 takeaways

Last week I attended the very first installment of Techorama, a new conference for developers hosted in Mechelen, Belgium. This post will walk you through my experiences of the conference and will highlight the most important takeaways from the various talks I attended.

General impressions

The conference had tracks on ALM, Mobile, Web, Cloud, Language & Tools, Sharepoint & SQL and best-of Build 2014. I mostly attended the Web and ALM tracks since they are most relevant for my current work, but I dabbled in the other tracks here and there. I expected this conference to be heavily Microsoft-oriented but it turned out that there were a lot of non-Microsoft specific talks. As a matter of fact, it would have been entirely possible to schedule your conference without attending a single Microsoft-specific talk.

Most of the talks I attended were high-quality presentations. The booth hall had some entertaining side tracks and there was a lot of swag up for grabs. The food was delicious (warm meals instead of the usual sandwiches!). Overall there was a very good vibe during these two days.

Continue reading

Standard
Javascript, Web Development

Cross-Domain requests in Javascript

If you are developing a modern web-based application, chances are you:

  1. Are using javascript on the client side.
  2. Need to integrate with services that are not completely under your control (or that reside in a different “origin”).
  3. Have been confronted by this error message in your browser’s console:

XMLHttpRequest cannot load http://external.service/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://my.app' is therefore not allowed access.

Every time I need to integrate a web app with some external service or some server-side API I have no complete control over, I bump into this error. Google has not yet provided me with a concise description of the problem or an overview of alternatives to perform Cross-Domain requests, so this post will serve as a personal future reference.

Continue reading

Standard
HTML 5 logo
Mobile, Web Development

Are You Ready for HTML5?

I recently attended a workshop on HTML5. It has been around for a while now, but I still learned a lot of new stuff. This post gives an overview of the new things I learned during the session and provides some benefits and drawbacks of adopting HTML5 in your web sites right now.

I had some experience with HTML5’s new features when I was creating a mobile application using HTML/Javascript, but this workshop really freshened up my HTML5 knowledge. The workshop was facilitated by Mathias Bynens, most of the topics I touch upon are inspired by his course material.

Continue reading

Standard
Best practices

Who do You write code for?

TL;DR: You should write code in a way that your colleagues would understand best. After all, they are the ones that will be reading it over and over again. No matter in how much of a hurry you are, you should always take the time to give things meaningful names.

Who do you write code for? It’s a simple question with an obvious answer.

As Martin Fowler bluntly states it:

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

The days of a programmer writing cryptic assembly code that only her computer understands have long gone by.  The question deserves attention however, as I seem to keep bumping into examples that prove not everyone shares this belief (or is too lazy to act upon it).

The example

Recently, I came across a bit of SQL code that looked like this:

DECLARE @nvcWFN_SQL NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_1 NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_2 NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_2Bis NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_2Bis2 NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_2Bis3 NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_3 NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_4 NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_4Bis NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_4Bis2 NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_4Bis3 NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_5 NVARCHAR(MAX)
DECLARE @nvcWFN_SQL_6 NVARCHAR(MAX)

--The code goes on by initializing these variables with parts of
--a SQL SELECT query

SET @nvcWFN_SQL =
        @nvcWFN_SQL_1 + @nvcWFN_SQL_2 + @nvcWFN_SQL_2Bis +
        @nvcWFN_SQL_2Bis2 + @nvcWFN_SQL_2Bis3 + @nvcWFN_SQL_3 +
        @nvcWFN_SQL_4 + @nvcWFN_SQL_4Bis + @nvcWFN_SQL_4Bis2 +
        @nvcWFN_SQL_4Bis3 + @nvcWFN_SQL_5 + @nvcWFN_SQL_6

--Execute the dynamically generated query
EXEC sp_executesql @nvcWFN_SQL

This is part of some code that generates a complex SQL query at runtime. Ignore the fact that this might not be the best idea ever, but just analyze the code itself.

Continue reading

Standard