AI agents have bias. The one writing code wants it accepted. The one reviewing wants to find problems. Neither reliably verifies its own conclusions. Adversarial review fixes this: agents find issues, then skeptic agents try to disprove them. Only what survives gets reported. I ran one on a core library we’ve used for years. What came back wasn’t a long complaint list — it was a small…
One of the best features of Xcode for C++ programmers is its Assistant Editor. This is an editor panel to the right of the main editor where you are working that automatically (and somewhat magically) displays the counterpart to the file you are editing. So for example if I am working on service.cpp , the assistant displays its header service.h . This is great for productivity. I can glance to the…
The challenge has been set, the startup has been formed, and initial release objectives defined. Now what? How do we get from Zero (a clean slate) to One (first release)? What do we do first? When do we do it? How many people will be needed? And when do we need the funding for it? In this post, I will outline the four (4) stages of development needed, and the strategy I will be following this year…
Warning: This post is only for developers who are having issues when coding against file descriptors in the form of C-style file handles or sockets on MacOS. For everyone else, this does not apply. Running out of Resources Right now I am developing an application that uses sockets (underneath a stack of other software) for inter-process communication. The problem is that after a few debug runs or…
Only a few times in a lifetime does an opportunity come along that could change everything. It comes in the form of a challenge that will stretch you and push you to your limits, even though its in a domain you know everything about (or believe you do). It comes as a disruptive force to a stable market. Its both risky and yet eminently doable. And there is tangible demand for this change, a change…
Recently, GitHub updated actions from Node 12 to Node 16 (See GitHub Actions: All Actions will begin running on Node16 instead of Node12 ). As a result, Hugo deploys will fail. All I saw was that I committed the updated site, and the deploy did not happen. To make it work again, you need to update your gh-pages.yml in the hidden .github/workflows folder to reflect the new Ubuntu and checkout…
This is my fourth CPU Architecture transition in the Apple ecosystem, from the Motorolas on the II’s and LC, through the PowerPCs in the Titanium Powerbook, Intels on the Aluminum MacBooks to the ARM M1 today. This transition has been the smoothest by far, so much so, it’s not worth posting about. But that would overlook the incredible amount of work performed by untold thousands of…
I have been writing software professionally for 32 years. I must have written several millions of lines of production code in that time. But I do not own the rights to any of the work product I have made. It all belongs to someone else. That is the way. The question is how can one go about making great software product, still earn a satisfactory living, and yet retain the rights on that work…
Today, I turn 55. I now have over 32 years of work experience. These numbers got me thinking about what I wish I had known when I started my professional careers. We’ve all heard this before. Maybe it’s time to act on it.
“Go to where the puck is going, not where it has been”. - Walter Gretzky (Wayne Gretzky’s father) Should we be building new product on existing, proven software stacks, or taking the challenge to start using the newer tools? In this post, I take a high-level look at the technology landscape for commercial software development to aid in a thought exercise on how I would want to…
Discoverability is the user’s ability to find key information, features, services and capabilities in a software application. It enables users to locate, see, learn and understand what capabilities the software provides. If users cannot discover a capability, how will they know it exists in the application in the first place? Designers and developers need to keep this in mind when…
I plan to write more about being a coding CTO, but in the mean time, to set my credentials, I posted an article on Noverse describing, at a high level, what software and systems I have built for Asset Managers. Take a look at What Did I Create as an Asset Manager CTO .
The vast majority of non-code writing performed by software engineers is short form standard format , defined here as: Short Form : A small amount of headings and text up to 1000 words Standard Format : The same standard structure or pattern of document repeated over and over again Yet even though its short form and standard format, it takes too much time and effort to produce these, so we…
We all understand the benefits of the code review process in reducing the risk of software issues making it out into the wild, and in improving the skills of developers. Frequently though, the code review focusses wholly on the code and on an eyeball search for potential bugs and no more. There is a better way. As developers, we read and write code all day, it’s our superpower and wholly…
2026-03-17 Adversarial Review: Making Ai Challenge Its Own Conclusions 2023-09-03 Xcode's Assistant Editor struggling with C 2023-01-11 Zero to One: Stages of Startup Development 2023-11-01 Increasing File Descriptor Ulimit on MacOS 2022-02-21 Who Dares, Wins 2022-12-03 Update Hugo for Node 16 Github Pages 2022-12-03 Two Months with the M1 Macbook Pro 2022-03-26 Where the Rights Are 2022-12-20…
Follow on post to Working From Home … Here We Go! written in March. 88 Days ago in New York we all started working from home. 88 Days ago we stopped commuting, sat down for the first time at our fledgeling home workspaces, launched our first Zoom or Slack meetings and started figuring out how best to do our jobs from there. 88 Days later, we’re still doing it and will be for the…
It’s been many years since I worked from home and much is different since I ran Noverse from here. First, my wife has taken over my workspace as hers, so the desk, good keyboard, mouse and monitor are her domain now. Secondly, it’s likely this is not a one-day disaster recovery test, so I need to find a way settle in instead of use the laptop on the dining table. And thirdly, Slack has changed the…
Johannesburg, 1977 It was a crisp, sunny Saturday morning and my grandmother was in town. As we always did when together, we went to the movies. The theater nearby was old, run down but comfortable and in walking distance. I’d go there later again many times on many Saturday mornings. For the first time, though, I was more excited about the movie than I was about going with grandmother. I…
In 2018, I switched to using an iPad Pro and Apple Pencil when not using my computer, replacing notebooks, scraps of paper, Post-It notes, and ink-leaking pens. After a year of being digital, here are some of the processes and habits I have picked up. The Setup I have a late 2017 iPad Pro 10.5" 256GB Cellular model, with an Apple Smart Keyboard and the original Apple Pencil. It’s running the…
The vast majority of development I perform is in C++17 on an Apple Mac Computer using Xcode. For a while now, I have been using Catch2 as my Unit Testing framework, and its absolutely excellent. But its not integrated into the Xcode IDE and I wanted the ability to use Xcode’s excellent testing and test debugging tools to improve my productivity and workflow. In this post I will show you how…
Today I removed the comments from hiltmon.com for one reason and one reason only — the comment service, Disqus, that I used — was tracking you across a multitude of sites and is selling your data to strangers without your (or my) permission. I no longer want hiltmon.com to be one of those collection points. I’m going to miss the comments though. Your comments had been insightful, gracious…
When I started out as a developer and designer, I know I was clever. When folks asked me to design and develop a software product, I would ask a few questions to confirm that I understood what was asked of me, listen to their answers, then set about making the product. Request, build, ship. Easy! My mentor, who was definitely smarter than me, used to yell at me to Stop and Think.
I wanted to move my published writing stashed in my Octopress/Jekyll site into my current writing workflow environment, Ulysses . Dragging and dropping the files from the _posts folder was not an option, because: The file names were messy There is no title in the file, it’s in the Markdown metadata I wanted to keep the publication date on the imported files So, I wrote a horrible script to…
It is best for your technology stack to tell you what went wrong as soon as it goes wrong to get the right level of attention in the correct timespan. I run a massive technology stack at work, filled up with multiple servers, plenty of web applications, loads of C++ programs and massive numbers of scheduled and recurring tasks, and I do it with an insanely tiny team and no DevOps folks. Almost all…
I’ve been writing software for well over 30 years, I’ve spent well over my 10,000 hours and gotten rather good at it. And I still write to a very rigorous coding style standard. You’re kidding right? Its 2017, code style guides are so passé. Nope. I’m deadly serious. Get off my lawn Some of us remember when coding styles were de rigeur . When you climbed off your commuter…
Adding mathematical formulae to HTML pages is easy these days using MathJax . But I create all my documents in Markdown format on my Mac. This post shows how to add mathematical formulae to your Markdown documents on the Mac and have them preview and export to PDF correctly. MathJax in Markdown Adding mathematical formulae to a markdown document simply requires you to use the MathJax delimiters to…
Much has been written, tweeted and complained about the new MacBook Pros released by Apple last week. Complaints about the 16GB limit, all-in switch to Thunderbolt 3 (USB-C), the removal of the SD-card and MagSafe, the new keyboard, the aged CPUs, the slow GPU, dongles, that they are not “Pro” level machines, and more. More and more influential folks are writing that Apple has…
Last evening a package arrived from Amazon. A package that neither I nor my wife had ordered. A mysterious, enigmatic package. From the outside, there was no indication of its content or providence. We discussed where it could have come from. What could it be. Should we open it. Maybe Amazon sent the package to the wrong person. Yet the delivery address was certainly mine. Finally, I opened it. It…
At work, we write a lot of code. In order to remain productive, we reuse the same proven dependent libraries and tools over and over again. Which is fine. Until we start seeing end-of-life notices, vulnerabilities, deprecations, performance improvements and bug-fixes passing us by. At some point we need to update our dependencies for performance and security. But its not that easy. Take some of…
Just short of six months ago, I wrote about how I was transitioning to Minimal Project Management as my team was growing at work. So, how did it go? Did it work? Any Problems? In short, after a few false-starts getting our heads around the intent of the Statement of Work document, it went — and continues to go — very well. Projects we used to start and never finish are now completing and shipping.…
I often need to embed SQL statements in C++ code. Unfortunately, many of mine are long and complex. Even the simple ones are wide. This leads to the following ugly code: std::string s8('SELECT id FROM lst_quotes WHERE route_id = $1 AND lst_request_id = $2 AND quote_id = $3;'); … which means I need a massively wide screen to view it (and it violates my 80-column rule), its not formatted…
The Apple Watch turns 1 year old next week. If you follow the popular press, you’d think the device was rubbish and a complete failure. I vehemently disagree. It may be a limited version one, but it is a flawlessly engineered timepiece that is conducive to small, yet significant, life hacks. I wear, and continue to wear my Apple Watch every day. I have done so since the day it arrived, the…
I think one should review one’s productivity tool load-out every once in a while. Operating system updates, other productivity tool updates and your own work practices change over time. Your tool load-out should too. Changing the muscle-memory, it turns out, is surprisingly simple, quick and easy. And your productivity usually increases. I am a huge fan of keyboard launcher/productivity…
This post presents how I have set up Keyboard Maestro to replace basic text expansion from TextExpander … so far. This post covers (More to follow at some point.) : Basic text expansion When to use copy vs typing Limiting to applications Basic variables Basic Text Expansion The basic text expansion macro looks like the macro on the right. It is triggered when a string is typed, in this case…
Apple turned 40 this week, and it got me thinking about the past 40 years of our individual computing experiences. In many ways, my own journey to now parallels that of Apple. And I’m willing to bet your journey is the similar. The 1980s - Youthful Experimentation In the early 1980s, Apple was young, surrounded by a wide range of competitors and the Apple II was it. Everybody who could, had…
TL;DR: Beware of libraries you need to compile yourself and copy-pasted code, the performance, maintenance and other hellscapes you create are not worth it in the medium and long run: Do not use dependencies that have dependencies that you have to compile . Do not use libraries depended on by dependencies anywhere else. Solve your own problems and understand the solutions. Do not copy-paste from…
How many people really know how their motor vehicle works, or even care to. Very few. But they all drive. And when their car breaks down or makes a noise or that ridiculous engine light comes on, they need mechanics. Nobody, except other mechanics, understands the explanation of whats wrong with the car. And therein lies the problem. Mechanics need to learn to talk to drivers, not mechanics .…
With my team starting to grow at work, its time to add some Project Management to our process. However, I do not want this to add any additional time, meetings or burden on them (or myself) and so all of the popular formal processes are no good for my needs. In this post, I will outline the Minimal Project Management process, its steps and how it works. I will also cover the issues of change and…
A note as a result of a discussion with a colleague. I had quickly assembled a simple class that triggers periodic function calls from a timer on to a single worker thread. I need this class to ensure that periodic functions get called regularly. Since each call is quick to run (takes under a second), only needs to run every few minutes and can happily be queued behind another quick function, the…
My host, Dreamhost , is offering free web site certificates through Let’s Encrypt , a new initative to make encrypted connections the default standard through the internet. They started with free SSL certificates. So I turned it on. Most browsers will be warning against unecrypted web sites real soon now , so I thought it best to do this now. The only change I seem to need was to change the…
My thoughts on the toxic hell-stew that my Twitter feed is becoming. I follow (and occasionally interact with) a bunch of intelligent, opinionated, sensible tech folks whom I respect immensely and whose timelines and lives are being ruined by an impersonator, a gang of misogynists and their flock of followers. We’re better than ganging up, taking sides and judging or expressing negative…
Dangerware is common in business and government. Dangerware is just ordinary software, but the way it comes into being creates the danger. It starts with a basic prototype written in a hurry. This is quickly put into production to run the business. The prototype screws up repeatedly when faced with new scenarios. Resources are tasked to add (not update or correct) the prototype to deal with the…
All my text and writing is in Markdown formatted files and I would like to search them using Spotlight. The editors I use do not have an importer (they have Quicklook only), so this is not available directly. Changing the RichText Spotlight importer trick worked in previous versions of OS X (see how in A Simple Markdown Spotlight Importer ), but since System Integrity Protection in OS X El…
One of the biggest headaches I have using Adobe Indesign is the creation and especially maintenance of charts and graphs. In my case, my fund publishes several high quality books and one-pagers monthly and I need to update a bunch of charts and graphs. I also need to print these at a very high DPI, hence Indesign. I used to use Adobe Illustrator graphs. They are rudimentary, but very customizable.…
My business runs on code. Every day, my team and I deploy new systems, patches and add new features to our mission-critical code base. And we rarely have a problem. That’s because we have a quick way to determine if the programmer attended to the details of the product and code, and whether we then need to hold the deploy for a deeper check and test or can run a lighter test and confidently…
Just over 3 months ago, Apple released Apple Music and I signed up for the free trial as we all did. My expectation was that I would play with it for a few days, get over it and never use it again. I expected the same experience I got from Spotify and Pandora before and I never subscribed to them. I expected the same old same old and no reason to use it.
I develop a lot of applications in C++ using Xcode on OS X and deploy them to CentOS Linux Servers to run. I follow the Simple C++ Project Structure (and the Xcode edition ) to code up each product. However, Xcode is not available on Linux. To compile and deploy (and to test compiles and deploys), I use standard Unix Makefiles , available almost everywhere. In this post I will show you the…
Growing up, Saturday afternoons were for watching Rugby Union games with friends and family. No matter what was going on at home, with friends, at school, or in the country I lived, the world stopped for the two games that were televised live. I am as far away from that world as one can be, yet it is with me right now. It began with my grandfather. He played as a kid as evidenced by a hook nose…
The Apple I know and loved was doomed, so the press said. It was the crazy, emo teenager of a company. Willing to try anything, mad, crazy, radical, different and apt to succeed and fail in spectacular fashion. Against all odds, the Apple of old did not fail. Because of this we now have amazing computers, thin and light laptops, iPods, OS X, iPhones and iPads. Can you imagine a world without Apple…
Xcode does a horrible job of editing Makefiles (and other extension-less files like dot-files). If you right-click in Xcode on a Makefile and Open with External Editor , OS X opens it in TextEdit. Which is worse. The issue is that TextEdit is associated with extension-less files. Usually to change how files are opened, you select the file in Finder, right-click and choose Get Info from the menu.…