Xcode's Assistant Editor struggling with C++

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 right to see the declarations that I am implementing, and can change both declaration and definition directly without opening or changing contexts.

Read on →

Zero to One: Stages of Startup Development

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 in our new startup, going from Zero to One.

Read on →

Increasing File Descriptor Ulimit on MacOS

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 crashes (I did say developing), the application will not start again from resource starvation.

Read on →

Who Dares, Wins

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 the incumbents resist (and have good reason to).

Read on →

Update Hugo for Node 16 Github Pages

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 versions:

Read on →

Two Months with the M1 Macbook Pro

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 people in building and testing their software to ensure this invisible transition happened.

And it would overlook the significant changes in hardware too, not just the CPU architecture, but also the move to new GPUs, screens, security chips, ports and keyboard.

Read on →

Where the Rights Are

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 product and create a revenue steam off it?

Read on →

Innocuous Birthday Career Advice

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.

Read on →

Go to Where the Puck Is Going

“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 create new software products.

Read on →

Discoverability Is Deserved

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 architecting and structuring applications. They need to not only focus on what is being provided, and how users can use it, but also on how users can find it.

Read on →