Today’s header image was created by Ian Schneider at Unsplash

Its no secret that I suffer from occasional bouts of Impostor Syndrome.

I got it during the final few hours of Hack24

even though, as a team we built an enterprise level app in less than 24 hours

I get it when I’m suffering with insomnia

although I have ways of getting around that

It feels really real when I’m in the middle of it, and I often find that some of the simplest programming tasks can feel like they take more mental effort than normal.

Both of those two examples provide a very specific clue as to one of the triggers for my impostor syndrome: lack of sleep or tiredness.


As a direct result of exploring my impostor syndrome, I’ve started to make sure that I get more sleep and that computers, laptops, phones, TVs, etc. (any device with a screen on it and millions of tiny transistors inside) are shut down by a certain time at night.

I’ve also spent some time looking around for advice on what I can do to ease the other symptoms of impostor syndrome – the biggest of which is the niggling little voice which says things like:

I shouldn’t be here. I’m not smart enough to be here.

And my journey has taken me all over the internet. The best piece I’ve read on impostor syndrome comes from the website of career coach Dan Beverly

An inability to acknowledge and internalise accomplishments is a key theme of the Impostor Syndrome.

To help make a more objective assessment of your achievements: make a personal success inventory. List recent key achievements. And for each: make a note of your skills, capabilities and personal qualities that contributed to your success.

Recognising and capturing these “success drivers” will likely reveal patterns of flawed thinking, and uncover contributions otherwise dismissed or attributed to others or to “dumb luck”.

When complete, take a mental step back. What do you notice? Which of your successes are you not owning? How much of your success have you been discounting; or attributing elsewhere?

Having a strong self-awareness of your strengths and their part in your success is the first step to internalising your accomplishments – and beating the Impostor Syndrome.


As such, I thought I’d take a moment to write a blog post which covers the major achievements I’ve made in 2017.

Achievement Unlocked

I’m going to list a bunch of my achievements and go into detail about them (as recommended by Dan Beverly, above). It’ll be hard for me to do, as I don’t tend to talk about my successes too much, but I think it’ll be worth it.

Another reason for doing this is to back up (and expand on) my entry into a raffle/giveaway that Jet Brains ran in mid December this year

“this year” meaning 2017, if you’re reading this in the future

To enter, folks use the hashtag #Developed2017 and outline some of their achievements and accomplishments in 2017.

My entry was this tweet:

which I guess gives me the first few things to talk about.

I didn’t win, by the way

NuGet Packages

As part of my experimentation and learning with .NET Core, I’ve created two NuGet packages:

Both of those NuGet packages are ASP.NET Core middleware packages and are compatible with both ASP.NET Core 1.x and 2.x. They are both open source projects

OwaspHeaders.Core on GitHub

ClacksMiddleware on GitHub

and I’ve written about their development, extensively.

here is part one of my development logs for the OwaspHeaders.Core middleware

As of 26th December 2017

yup, I’m writing this on Boxing Day

my two NuGet packages have been downloaded a combined 1,894 times. That means that the NuGet packages that I have created have been downloaded from NuGet and installed on real software.

by “real software” I mean, “software which wasn’t written by me”

NuGet packages 2017

It’s miles away from JSON.Net levels. But that’s not what I’m aiming for… right now


This NuGet package was initially created as a way of exploring how to create middleware for ASP.NET Core

I’ve written about what middleware for ASP.NET Core is here

as such, it’s a simple package which adds the GNU Pratchett HTTP header to all responses from an ASP.NET Core web application.

As such, I’m really surprised by the fact that it’s been downloaded over 600 times. I mean, it doesn’t add much in the way of functionality to an application. Let me re-phrase that: it doesn’t add any business value to an application.


This NuGet package was initially started as a demonstration project for developing useful ASP.NET Core middleware using an real world example. The example I chose was the list of OWASP suggested HTTP headers

if you’re a developer and are interested in the web, then you really should know about OWASP

As such, I spent time documenting how I went about developing this NuGet package for my .NET Core blog.

you can read the first article in the series about it, here

On top of all of that, it’s been forked on GitHub four times:

GitHub Pinned repos 2017

OwaspHeaders.Core is the top-left of the pinned repos

on GitHub forking something is when you take a copy of something in order to make your own changes to it.

Because I’ve released the source code for free, this means that anyone can come along and take a copy of the code. Usually this is done in order to fix or improve something and to send the changes back to the original author in order to be merged into the original version.

ASP.NET Core Templates

As with almost all programming languages, there are a lot of common practises and a fair amount of boiler plate code. This usually means that going from no code to a minimal viable product takes a while.

With .NET Core, the boffins at Microsoft (and the open source community) have gotten around this by creating the Templating Engine. This is used as part of the dotnet new command

which can be issued at the terminal, in order to automate the creation of a code base

for rapidly creating new code projects and solutions.

Because the .NET Core community can’t possibly think of every possible eventuality, they decided to open up the templating engine and teach people how to create templates with it.

Because I’m on a quest to learn as much as I can about .NET Core, I decided to create some templates. One for N-Tier architecture and one for Onion Architecture:

These projects allow the user to run dotnet new and get a solution which already contains a bunch of common stuff they’ll need, and it’s all set up for them.

In reality, they might save a developer a few hours of initial set up time

assuming that they get everything right the first time

and saving time is almost always a good thing.

The .NET Core Blog

In an previous blog post, I wrote:

Part of the course, in fact part two of the course, is all about choosing a topic to write about and coming up with ideas. The point is to come up with as many ideas as possible – enough for a few months. Then to pick a schedule and stick to it.

So on October 4th 2016, I set myself a goal of 52 blog posts on .NET Core in 52 weeks.

Not only did I smash that goal

read the article to see just how well I did

but I also had the double whammy of generating a whole lot of traffic to that site.

56 thousand unique individuals (according to Google Analytics) have visited the .NET Core blog. That’s a massive number of people.

2017 Stats

56 thousand individuals?! That’s mad

I’m not sure I can imagine 56 thousand people. But I know that, if everyone who visited the .NET Core website all visited the same UK football stadium, it would be standing room only.

aside from one or two of them, that is.

That’s crazy!

And that’s just the programming stuff I’ve achieved.


Ok so I haven’t been writing so much on this blog recently, but the .NET Core Blog and the Waffling Taylors blog has seen a lot of activity.

Not counting comments, I’ve written 93,349 (.NET Core blog), 29,552 (Waffling Taylors) and 9,233 (this blog) words in 2017.

that also doesn’t count the words I’ve written for other blogs. See the 52 blog posts post for the numbers there.

That makes a total of 132,134 words, which comes out at around 338 pages of content in a 5.5″ x 8.5″ book or 278 pages in a 6″ x 9″ book.

using the same source as my earlier post

On top of that, I’ve started a monthly podcast with my brother. We will have released episode 2

which is really episode 3, and is being release in 3 parts so really it’s episodes 3, 4, and 5

by the time this blog post goes live.

In the two months that it has been live we have had 85 downloads:

Waffling Podcast Stats 2017

85 downloads is nothing to turn your nose up at.

That’s not a huge amount, especially when you compare it to other podcasts, but it’s enough for us to keep doing it.

hell, we’d probably keep doing it even if no one was downloading them. It’s fun

The podcast got a mention on an episode of the {CodingBlocks}.NET podcast, too. Which is really quite ace.

Speaking of podcasts

I was interviewed on another podcast. This time it was the Productivity in Tech podcast. Jay Miller is a really smart guy and definitely knows his stuff; he graciously invited me onto his podcast to talk about the legacy that I’m building. He also had some fantastic advice to give on how to maintain a high level of productivity.

You can listen to my interview on the Productivity in Tech podcast here.

My interview on the Cynical Developer was released in 2017 as well – through the magic of podcast time travel, it was actually recorded in 2016.

I’m not going to say that I didn’t get bitten by the podcast creation bug whilst talking with James, because it would be a lie.


I’m not sure what 2018 has in store for me, but I have a few plans for things I want to do:

  • learn Docker
  • have a live web app hosted by either Docker or Kubernetes
  • create more NuGet packages
  • work towards speaking at a conference

I’ve got my eyes on one of the Developer! Developer! Developer! events

Either way, it’s going to be a fun year.

What did you achieve in 2017? I’d love to hear about the things you managed to achieve, and what you can teach me about them.

Were they all technology related? Were any of them technology related?

Related Post


Jamie is a .NET developer specialising in ASP.NET MVC websites and services, with a background in WinForms and Games Development. When not programming using .NET, he is either learning about .NET Core (and usually building something cross platform with it), speaking Japanese to anyone who'll listen, learning about languages, writing for this blog, or writing for a blog about Retro Gaming (which he runs with his brother)