I’ve been living a lie. For 20 years of professional software development, I had convinced myself that I didn’t enjoy database development.
I was wrong.
It turned out that I was getting stuck on the repetitive nature of database code and query generation, instead of the core problems we solve when building database applications.
In this article I’ll discuss why I hated working with databases as a C# developer, and the tools and libraries I found that proved me wrong.
It’s not that I thought databases weren’t important — they are critically important to the majority of professional software applications. …
Starting a new job can be exciting, intimidating, and frustrating. The first few weeks can set the tone for how you are perceived in the organization as well as your opportunities to succeed in your new role. Here are my thoughts on how to start strong at your new job.
I’ve been around long enough to recognize how vital it is to take the first few weeks seriously and have a solid plan for getting yourself up to speed.
So, in no particular order, let’s talk about the things that I find are the most helpful to keep in mind when changing jobs. …
OpenSilver has recently made its presence known and announced that Silverlight, like disco, is in fact not dead and is still more relevant than ever — albiet in a fairly changed form.
As a former Silverlight developer and XAML specialist, let me lay out for you what Silverlight was, how OpenSilver is different, and my initial take on whether this matters (and who it might matter to).
If you’re like many new developers I speak with, you may not be familiar with Silverlight or even XAML, so let me set the stage for you.
Back in 2006 Microsoft released .NET Framework 3.0, including a new desktop technology called Windows Presentation Foundation (WPF). WPF was (and is) an extremely powerful way to build and customize desktop user interfaces. It addressed many of the issues with Windows Forms and aimed to build a user interface technology centered around something called XAML. …
Let me show you how creative use of TypeScript’s discriminated unions, type aliases, and functions can give you a greater degree of flexibility in your own code.
I’m going to do this by illustrating how these techniques addressed a problem that I was trying to solve and then talk about some additional ideas on how these techniques can be applied.
I’m building a text-based game for a few talks I’ll be giving this spring. …
Career changes are huge, but you don’t have to go into them blind. In this article I’ll discuss some strategies I’ve used recently to evaluate a change in careers, figure out if you might like the change, find ways to safely practice and grow the skills you’d need, and then finally potentially make that leap in changing your career.
Recently a younger developer I respect expressed a somewhat common concern. In essence, their concern was that they were finding themselves doing a little bit of everything and not specializing enough. They were specifically concerned that nobody would want to hire them without a key specialization.
They also mentioned the idea of a “T-shaped” developer who has a wide breadth of experience but a specific area that they are deeply skilled in.
Keep in mind that this was a new developer who had recently graduated from a bootcamp and that specializing early on can be both hard and limiting.
This is a common concern for new developers and so, in this article, I’ll explore the pros of cons of generalizing, specializing, being a so-called T-shaped developer, as well as introducing the term “comb-shaped” which I believe is a more accurate picture of a developer career. …
I’ll be using Compromise to interpret player input in an Angular interactive fiction game, but you can use Compromise for many different things including:
In this article we’ll cover:
Note: this article is an updated and more narrowly scoped version of an older article I wrote on Compromise. This information works with modern versions of Angular as well as modern versions of Compromise. …
Let’s talk about building accessible Angular applications. Why? Because Angular apps are awesome, but the amazing things Angular lets you do are a net negative unless you can build an app that everyone can use.
Accessibility (sometimes abbreviated as “a11y”) refers to designing software in such a way that it can be used by all users, regardless of any disabilities they may have.
While I’m not an accessibility expert, I can help you get started with accessibility in general and, more specifically, how to follow accessibility practices in Angular.
Before we get into auditing your applications for accessibility issues, let’s look at some common violations. …
Let’s cut to the chase: the performance of developer machines matters a lot more than many people think it does.
When I write a post like this and post it primarily on a developer-oriented blog, I take it as a near-certainty that I’m going to be “preaching to the choir” with this article.
Nonetheless, it’s important to expand and explore this topic, because it impacts so many developers and it’s something so few organizations truly understand the impact of.
Many conversations about machine performance look something like this:
Dev: My machine is so slow. Please can we replace it?
Manager: Come on, stop complaining; it can’t be that bad. …
Have you ever wanted a quick way of inspecting the appearance and behavior of Angular components in your project? Storybook is a free library that integrates into your Angular projects to let you look at any component in your application, tweak with configuration values, and ensure the component is behaving properly.
Storybook reduces the time between experiments and increases the odds that developers will catch unintended changes to components during development.
Essentially, Storybook generates a web page for testing components in your Angular application or their equivalents in other user interface frameworks. …