RSSAmplifier

Blog

vito.nyc

Recent content on vito.nyc

blog.vito.nycRSS feed ↗17 posts

Latest posts

On Built Module Interface Compatibility

Domain expertise is a funny thing. Before developing some expertise in a
domain, we often judge tools from that domain based on their ease-of-use. Think
of the controls of a consumer road car compared to a Formula One race car. The
consumer car is “better” because it’s intuitive to use, teenagers get the hang
of it in a few weeks. If all you need is to commute…

For Strong Structured Concurrency

Let us consider for a moment the construction of an operation in C++26’s
 std::execution (hereafter exec ). 1 In such a construction we need several
things: we need a sender , the source of an operation; and a receiver , the
sink of an operation. We combine them with exec::connect(sender, receiver) to
form an operation state ( op_state ). 
 The resulting object captures…

Make it Async

I think it’s clear that ASIO is both one of the most important libraries in C++
yet to achieve standardization, and one of the worst documented C++ libraries to
ever hold such a prestigious position. Trying to learn the ins-and-outs of
ASIO’s model without spending arduous amounts of time reading the source code is
borderline impossible. Learning the best practices for…

Balm in GILead

Python isn’t slow. The core eval loop ,
while slower than a JIT, is no slouch when it comes to dispatching bytecode.
There is no reason that business logic written in Python which orchestrates the
operation of highly optimized extension libraries should be a bottle neck. 
 
 
 
 
 
 
 Time is precious, get to the point
 
 
 
 
…

The Realm of Confusion: Object Kinds in SystemVerilog

SystemVerilog is a strange language. Students of computer science frequently
struggle when they first encounter it, because if you squint and turn your head
 just so it looks like a programming language. However, the parts of the
language commonly known as “the synthesizable subset” have very little to do
with programming. 
 SystemVerilog does exactly what it says…

Modern CMake Packaging: A Guide

There is
 a five year old CMake bug 
describing the need for a “cookbook” to walk users through
effective packaging of CMake projects. As with so many corners of CMake 
usage, the technical documentation extensively describes how everything works,
but gives no hints to which components of the extensive CMake ecosystem
should be used. Inevitably, projects end up…

Upside Down Polymorphic Inheritance

The visitor pattern is an
esoteric programming pattern that has never been widely popular. No one
seems to be totally certain on what it’s good for, as demonstrated by the
diversity of opinions found on StackOverflow .
One notable quote from the software engineering StackExchange 
sums up the vibe: 
 
 Visitor pattern has the most narrow use and almost never will…

Addendum: Command Line Flags in C++

In the Reddit comments for the original Command Line Flags post 
there was an interesting discussion about what to do for positional parameters
when the user wants to pass an argument that matches an existing flag.
 /u/AlmaemberTheGreat pointed out 
the standard way to do this in the Unix world is to handle a pseudo-flag: -- . 
 The intent being when -- is encountered the…

Command Line Flags in C++

You are programming a tool in C++. Not a huge tool, not a tool where you care
enough about performance to say, use faster data structures than those provided
by the standard library, but one where you feel compelled to add some useful
options. After a brief and uninspiring survery of the field you settle on the
old standard for implementing program settings, you’re going to…

Vito's Guide to Tandon CS "Placement"

Tandon’s CS program, unlike CAS and the majority of other schools with CS programs, does not have any sort of CS placement. Officially, the only course an incoming CS/CE/ECE major can skip is the very first Intro course with an AP CS exam score of 4 or 5. Unofficially, you can skip all of the requirements of any of the majors so long as you get enough credits in the required course work by…

Keyword: Bureaucracy


 The bureaucracy is expanding to meet the needs of the expanding bureaucracy. 
 — Oscar Wilde 
 
 Bureaucracy in the mind of the average American is typically a prescriptive 
arm of government. It is the clerk at the DMV, demanding yet one more proof of
identity, or the stamp of approval from the county’s Building Code Advisory
Board to put up a shed in the…

The Undocumented SWIG

For those who have never ventured into the dark underworld of the Python
C‑Extension API, you may believe that it is as fluid and rewarding as
the rest of the Python ecosystem. I regret to inform you that this is not the
case. Line 13 of The Zen of Python 
says: 
 
 There should be one – and preferably only one – obvious way to do it. 
 
 The C‑Extension…

I Am the Reactor Operator

What follows is the personal statement that I submitted to Columbia and NYU as
part of my college applications. I was always going to end up talking about the
Navy, submarines, and the nuclear pipeline. It was my life for the past six
years, there was no avoiding it. I needed to pick a single experience that
could relate to all of that and also myself as an individual,…

The Worst New Guys In History

This is just some dumb shit I’ve been musing on, but I think it might be
healthy to type up some of these errant streams of consciousness. My normal
process is to force these thoughts on some
 FNG on my boat, who has no choice
but to sit their and listen to my infinite wisdom, lest he upset me and I curse
him into endless dinq -ness. 
 Today I’m thinking about…

What's up with your website's name?

This is a pretty common question, enough that I can milk it for some blog
content. The short answer is this, I’ve been nickelpro for as long as I’ve
been on the internet. My site is nickelp.ro because nickel.pro got sniped
by a domain squatter before I
could get to it, back when .pro TLDs cost waaaay too much money. The domain
has grown on me over the years, since…

About

I am a senior research and development engineer at Kitware, where I work on
CMake, build tooling, and solving various practical problems for our clientele.
I also develop and lead trainings on whatever topic needs teaching. 
 My background crosses software, computer engineering, and operational
engineering. I studied computer engineering at NYU, spent time teaching systems
and…

Home

I write about C++ programming, build systems, and less-traveled places in
the software stack. 
 Sometimes I even write useful code.

vito.nyc · RSS Amplifier