RSSAmplifier

Blog

clipperhouse.com

Recent content on clipperhouse.com

clipperhouse.comRSS feed ↗316 posts

Latest posts

Making Unicode things fast

By “Unicode things” I mean programs that process UTF-8.
The basic logic of such programs is typically:

Allocations are a dependency

I like to reduce or eliminate allocations in my projects ,
which use garbage-collected languages (Go and C#). Like you, I want efficiency –
both in CPU cycles and memory.

YAGNI for distributed rate limiters

So, I am working on this rate limiter .
It’s in-process and in-memory. I look at other fine rate limiters, and many
offer the ability to store the state in a shared system, such as Redis. Should
I offer that?

So, you’re inspecting strings on the hot path


 A follow-up to So, you’re splitting strings on the hot path 
 
 I have enjoyed optimizing my Go library for splitting (tokenizing) words according to the Unicode standard.

Designing a composable rate limiter

Having used rate limiters a few times, I’ve observed that they must be thoughtfully designed. In particular,
they are typically comprised of several policies which we wish to stack on one another. It can get messy.

The surprises of CDC on production workloads


 Motivated by this Twitter post by Craig Kerstiens 
 
 CDC ( change data capture ) tends to surprise in terms of expense on the production database. Each write becomes two writes — once to the system of record, and once to the changefeed.

So, you’re splitting strings on the hot path

Can we make it less expensive? Probably yes. We’ll talk about Go and C# in this post.

90% of physics in 900 words

I had a physics professor who said the most important skill in science was to be able to characterize a system quickly. Be approximately right instead of precisely wrong. This has stuck with me.

C# (almost) has implicit interfaces

Background: I move between Go and C# a lot, and like to compare them

Tips for moving between Go and C#

Recently, I’ve implemented a Unicode tokenizer in in Go and in C# , and my career has been ~equally divided between those languages. Here are some tips moving between them.

Go-style “alongside” testing in C# and .Net Core

I move between Go and C#, and one idiom I like in Go is tests living alongside the things they are testing, right in the same project. In addition to style preference, it (IMHO) more easily allows testing internal functions. In the .Net world, having a separate test project is traditional.

Apple as MVNO for LLMs

It’s expected that Apple will be improving Siri in the upcoming iOS 18, exploiting the progress that Large Language Models (LLMs) have made over the past year or so. How might they do it?

Generics as builtin typeclasses

In the spirit of Go’s ‘good enough’ type system, here’s a thought experiment for ‘good enough’ generics…

Saying true things is hard

I think the replication & open science movement is great. I come from an epistemological, first-principles sort of mindset, and so I find this very encouraging:

Query expansions in Stack Overflow Talent

Stack Overflow Talent aims to connect the right company with the right developer. We call this a two-sided market – developers on one side and recruiters on the other.

Does TypeScript make for more performant JavaScript?

I have a theory that the use of TypeScript de facto makes for more performant JavaScript, by making the runtime’s “type prediction” more accurate.

Having the courtesy to be wrong

One characteristic I see in accountable managers is having the courtesy to be wrong .

Championship in practice (at Stack Overflow)

This is a follow-on to my introductory post on championship , please give that a read for background.

Championship

Engineering and product managers often talk about “ownership” of features, when what we want is championship . When we orient ourselves around assignment of tasks, we ship a worse product.

A career decision influenced by Nassim Taleb

On the occasion of reading Nassim Taleb’s latest book , an anecdote about how he influenced a career decision of mine.

Static file hosting with active content

The combination of Hugo & Netlify to host my blog has turned out to make easy things easy, and hard things possible .

Stack Overflow tag correlations

A tool to discover correlations between tags on Stack Exchange sites. Start typing a tag name below, or click one of the popular ones.

How to move from Medium to static hosting with Jekyll or Hugo

I recently moved my blog from Medium to static generation with Hugo & hosting with Netlify. I prefer static hosting for performance reasons, and because Markdown is so nice.

Jargon demo

Jargon is a Go package with tokenizers and lemmatizers. Source & docs . 
 
 
 Examples:
 
 
 
 
 Text
 
 
 
 HTML
 
 
 
 JSON
 
 
 
 CSV
 
 
 
 Click to lemmatize

The makings of a strategy

A product process is typically something like Strategy → Discovery → Specification → Build → Delivery.

Toward less injection

Here’s a habit that may help to reduce the complexity of your dependency injection tree. Ask yourself: how much of an injected dependency are you actually using?

Alikewise (dating by the book)


 Thank you 
 As of December 2016 we have shut down Alikewise.com. We are thrilled with the response to the site and we hope you found romance, or at least a good read.

KPIs are software

It’s easy to think of key performance indicators as a task to be tacked on to the end of a project. Rather, KPIs should be understood as a product like any other, and so:

Time well spent

Critical to developer and company success is the idea of time well spent . Optimistically, the company’s and the dev’s incentives are aligned in this regard.

Decker, for a prettier Twitter

I made a Chrome extension which makes Twitter.com’s UX more tolerable, called decker . It:

Lore

Code has a user experience. Our methods have a UX. Our data models have a UX.

Principles of null-free programming

Nulls are a notorious source of bugs in many programming languages. Here, I sketch out a way to avoid them, using C# for illustration.

Imagining version control for APIs

Versioning is, right now, merely a human label. We have helpful conventions like semver , but one still relies on human judgment as to the definition of a “notable” change.

Three ways the new iOS ad blocking hurts Google

Apple’s ad blocking API is good for users and bad for Google, in 3 ways:

Three outcomes of the adpocalypse

It appears that Internet advertising is going through a bit of a shakeout. Ad blocking is becoming more pervasive ( perhaps 30% of users), and a study by Google indicates that as many as 50% of ad “impressions” are never actually put in front of a human being.

Improve the median, not the mean

I like seeing Google Fiber prompt incumbent dinosaurs into boosting speeds . It’s great.

Liquidity, open source and security

Jeff has a thoughtful post about open source, security and incentives. A few points stood out to me.

Statements are statements, and expressions are expressions (in Go)

I got trolled by a facetious article on Go on April 1. But it did trigger a conversation about why Go doesn’t do certain things other languages do.

Theory of the firm: opt-in initiatives

I’ve become adamant about making internal initiatives opt-in for the following reason: it brings more information to bear.

Bugs are a failure of prediction

We think of bugs as flaws in code. This is incorrect, or at best, banal.

The legacy ad industry is wrong about ad blockers

I was recently directed to a couple of papers on browser ad-blocking software ( here and here ). They are not so much alarmist as they are self-serving and hindered by status quo bias.

Embedding a struct declaration in a text template in Go

Here’s a nice little technique I came across in developing gen . 
 Say you have a text template, and that template is intended to output Go code. You’d like to pass a data structure into the template, and have the structure appear in the template as its own value literal.

Uncanny valley tech recruiting

As recruiter pitches show up in my inbox, it’s clear there’s a lot of “fake it til you make it” when it comes to tech terminology.

Yes, net neutrality is conservative. That’s the problem.

Fred Wilson makes the argument ( here and here ) that net neutrality is a conservative idea. That’s correct, and that’s the problem.

My security and privacy tools

A quick list of the things I use to improve my web experience:

A type system in runtime’s clothing

Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp. — Greenspun

Hierarchy and orthogonality in C# and Go

Prompted by this question I got to thinking about methods in C# and Go. It’s another example, I realized, of Go’s (logical) insistence on orthogonality and (stylistic) insistence on flatness/lack of hierarchy.

Know your guarantees, Go edition

I was directed to a thread about a poor soul who started a project in Go, eventually had to hand it off to the community, and discovered that his original source no longer compiled, due to third-party dependencies having changed. Key quote:
Not even the original programmer, with the original files on his original dev machine, can compile the source anymore.

The two edges of “culture fit”

Here’s a smart and funny bit about culture fit. I think it’s brutal and by and large true. [1]

How a savvy landlord would handle Airbnb

Megan McArdle describes the understandable discomfort that some tenants and property owners have about Airbnb’ers coming into their buildings.