I once asked my therapist (yes, I had one of those; more people should.) what personality traits I should watch for to signal personality disorder. He said, " lack of self awareness and the inability to change ". In other words, everyone is at a different stage of emotional growth, but those two things signal that a person can become healthier, even if they are not currently. For example,…
A while back, a group of us in the Winter Tech Forum community were discussing the age old question: how to measure developer productivity (without making developers hate life). It is hard to do without becoming big brother. While I don't have a neat answer, below are some things I have experimented with. Most of these don't involve "measurement" of the inefficiency. In my experience, measurement…
My son was recently inducted into an academic honor society. Having a dry, rather lengthy ceremony seems to be obligatory with such things, but of course, I attended to support my son. Speakers young & old opined on the virtues espoused by this honor society as candles symbolizing each of these virtues slowly burned toward a very flammable-looking tablecloth. The keynote speaker dedicated his time…
Here are a few quick & dirty troubleshooting tips after a couple days in the trenches with a gRPC service (C# client, C++ server): Ensure any code creating a new alarm first cancels the last alarm it added to the queue, if it hasn't been processed. In my case, I had a server-side observer receiving updates from elsewhere in the server module & writing them to the gRPC stream. When those updates…
You start out your day with a nice cup of coffee, and think, "Ah, greenfield project day...smooth sailing". You fire up Visual Studio and create a new C# project. "First things first, I need library X." you say. "Wait, what the?" The full error: Package 'MyPackage 1.0.0.0' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7,…
Every few years, I have to set up a fresh Linux box, and I typically want to connect them to some Windows file shares. There are many resources on how to do this, but many describe approaches which are incomplete, insecure, or not permanent (across reboots). Here is what has worked for me. Note: The approach I describe comes from https://wiki.ubuntu.com/MountWindowsSharesPermanently. I repeat it…
Pointers are funny things. They are one of the make or break concepts for beginners, and even years later, they can cause grief to experienced developers. I am no exception. Here is one such story: I was faced with a class which I wanted to refactor. It can be simplified as follows: In the interest of breaking up the responsibilities, I added a couple of interfaces. The idea is that I can pass…
There are many posts around the interwebs showing how to toggle Windows dark mode based on time of day. I had a slightly different need. I often work outdoors, so going back to light mode on demand is handy. After a bit of digging, I came up with the following: Save that script in a file with a .ps1 extension, and it becomes an executable Powershell file which will turn dark mode on/off when run.…
This error had been causing my team heartburn for a while. Previously, we kicked the problem down the road using this in our main CMakeLists.txt: set(MSVC_VERSION 1919) But, finally, I ran into a situation which forced me to figure it out. With the above workaround in place, I had started getting these errors from one of the Conan packages I was including: The C compiler identification is unknown…
Update Nov 2022: After doing 4-5 interfaces in this fashion, if I had it to do over, I would probably use SWIG . I passed on it initially because it had only one maintainer on GitHub. However, given the time I ended up sinking into writing & debugging custom interfaces, it may have been worth the risk. Let’s say we are designing an interface to pass a complex type between C++ modules. If there is…
I've been implementing Conan as our C++ package manager, and I had the following issue cause me a fair amount of grief over the last couple days: [MyPackageName] is locked by another concurrent conan process, wait... If not the case, quit, and do 'conan remove --locks' You would be forgiven for thinking conan remove --locks should do the trick, but alas, it does not. After finding hints on several…
I've recently been getting an old Windows-only module cross compiling for Linux. One of the challenges has been figuring out how to make the consuming project find & properly open the .so file. Most posts suggest that you must put your libraries in a specific folder, but a developer friend with stronger Linux kung-fu than mine confirmed that you can simply drop the .so files in the same directory…
I've trained at a Mixed Martial Arts gym for six years or so, and as many practitioners will tell you, the journey for me has been as much about mental growth as physical skill building, with applications beyond the dojo. This is a post about teams and team health, in business & beyond. Note: In training, I have a personal focus on ground fighting (as opposed to striking - getting punched in the…
We have failed society, and society has noticed. Code now powers injustice around the world.... The New York Times recently published an interactive article titled " The Decade Tech Lost Its Way ". The headline brought to mind a topic I've reflected on often over the past few years. We have had a decade of headlines exposing aid of government oppression in China by Google, utter disregard for…
I recently had need for a C++ collection which could be accessed with multiple keys. Specifically, I had an object that I wanted to look up either by name or id (in O(1) time). One way to do this is to create two unordered_maps – one keyed by id and another by name, but that is error-prone. I ended up finding a boost class which will do this. It took me a while get it working, so I thought I would…
After a software tool is in place, it often extremely difficult to swap it out, so choosing a tool is something you should get right the first time. However, I find that many companies/teams choose tools for all the wrong reasons. For example: "This one is free." When comparing options, you will often find at least one open source offering which can be used free of charge. To be clear, open source…
Note: I do not have any association with the manufacturers of the products mentioned below. All products for which I give personal experience are items I have purchased. Over the last few years, I've been evaluating the ergonomics of my workspace and making improvements. That is, I've been trying to be proactive about the health problems that come from sitting at a desk full time ( sitting is the…
Warning: Hastily written post ahead. I may return to put some English on it.... Once upon a job, I noticed that many areas of the codebase suffered from significant code quality issues, with the immediate consequences being more bugs, higher support volume, higher maintenance costs, and lower customer trust. This also affected company's ability to grow, as these issues made the code inflexible. To…
A number of times recently I have had need of a script to replace a chunk of code or XML in a few dozen files. I've been enjoying Powershell lately; so I decided to use it to write the script. A couple challenges presented. First, the text replacement had to handle line breaks. Second, it had to handle (escape) special characters. It took me a couple hours and tips from a few different blog posts…
I am migrating a codebase from Visual Source Safe (yes, in 2015, still VSS) to Git. One issue is the pesky way in which VSS embeds references to itself all over the place. Brian Carroll has a nice list of the things that need to be deleted here . The project I'm working on has dozens of solution & project files spread through a large folder hierarchy, and I really didn't want to edit each file by…
Yesterday, I got a new Samsung 840 EVO SSD to replace the slow hard drive in my Dell laptop. I dutifully backed up my old drive and popped in the new SSD to restore it. Windows, however did not show the drive in the "Computer" area. Long story short...I simply had to open the Disk Management utility (Start > Right click "Manage" > Disk Management). It immediately prompted me to format the MBR on…
The other day, I was playing with Linux Mint, and I realized that it would respond to Windows hotkey commands to "snap" windows to half of the monitor. However, would also allow me to snap into a corner (a quarter of the screen) or to the top or bottom half of the screen - two things Windows does not do. As a friend commented, "Linux does Windows better than Windows does Windows. I've wanted this…
SQL Server has a command line component which allows users to run SQL commands directly or in files from the command line. The command is sqlcmd (or Invoke-SqlCmd for Powershell). I recently ran into a situation in which my commands would run just fine in SQL Server Management Studio, but failed from the command line. Specifically, I was running a series of SQL commands stored in files. I would…
The Problem Over the past few years I have been repeatedly surprised by comments from (usually) younger friends who complain that they should be paid more or should be able to get a better job but cannot. They seem to think they should be able to show up at a job with few applicable skills, be trained in a new profession, and be paid well. This is such a common train of thought, I've decided to…