Quantcast
Channel: The acme of foolishness
Browsing all 36 articles
Browse latest View live

Internets of Interest #9: Jason Scott on the Copyright Fury Road

Do you want to lie back on your death bed and say, Well, at least I didn’t make a fuss? Please consider supporting archivists like Jason by donating to the Internet Archive. Original link

View Article



Internets of Interest #10: Mike Harrison on the Eidophor

What do you do if its the late 1950’s and you need to project live video? Overhead LCD projectors–let alone the computers to drive them–haven’t been invented yet. The answer is the Eidophor, the most...

View Article

Image may be NSFW.
Clik here to view.

The office coffee model of concurrent garbage collection

Garbage collection is a field with its own terminology. Concepts like like mutators, card marking, and write barriers create a hurdle to understanding how garbage collectors work. Here’s an analogy to...

View Article

Internets of Interest #11: Yesterday’s Computer of Tomorrow: The Xerox...

How did personal computing start? Many credit Apple and IBM for this radical shift, but in 1973, years before the Apple II and IBM PC, Xerox built the Alto, a computer its makers thought could become...

View Article

Avoid package names like base, util, or common

Writing a good Go package starts with its name. Think of your package’s name as an elevator pitch, you have to describe what it does using just one word. A common cause of poor package names are...

View Article


Eliminate error handling by eliminating errors

Go 2 aims to improve the overhead of error handling, but do you know what is better than an improved syntax for handling errors? Not needing to handle errors at all. Now, I’m not saying “delete your...

View Article

You shouldn’t name your variables after their types for the same reason you...

The name of a variable should describe its contents, not the type of the contents. Consider this example: var usersMap map[string]*User What are some good properties of this declaration? We can see...

View Article

Talk, then code

The open source projects that I contribute to follow a philosophy which I describe as talk, then code. I think this is generally a good way to develop software and I want to spend a little time...

View Article


Internets of Interest #12: Testing Michael Feathers’ Patience

A great presentation by Michael Feathers which asks the question “if we want reliable software, is more testing really the answer?”

View Article


Absolute Unit (test)

A short talk about unit testing that I gave at the Go London User Group last month. Links: SlidesPlaylist of videos from the March meetup

View Article

Prefer table driven tests

I’m a big fan of testing, specifically unit testing and TDD (done correctly, of course). A practice that has grown around Go projects is the idea of a table driven test. This post explores the how and...

View Article

Why bother writing tests at all?

In previous posts and presentations I talked about how to test, and when to test. To conclude this series of I’m going to ask the question, why test at all? Even if you don’t, someone will test your...

View Article

The three Rs of remote work

I started working remotely in 2012. Since then I’ve worked for big companies and small, organisations with outstanding remote working cultures, and others that probably would have difficulty spelling...

View Article


Image may be NSFW.
Clik here to view.

Constant Time

This essay is a derived from my dotGo 2019 presentation about my favourite feature in Go. Many years ago Rob Pike remarked, “Numbers are just numbers, you’ll never see 0x80ULL in a .go source...

View Article

Sydney High Performance Go workshop

On the 17th of July I’ll be giving a version of my High Performance Go workshop updated for the upcoming changes in Go 1.13. The event is free, as in puppy, however numbers are limited due to the...

View Article


Clear is better than clever

This article is based on my GopherCon Singapore 2019 presentation. In the presentation I referenced material from my post on declaring variables and my GolangUK 2017 presentation on SOLID design. For...

View Article

Go compiler intrinsics

Go allows authors to write functions in assembly if required. This is called a stub or forward declaration. package asm // Add returns the sum of a and b. func Add(a int64, b int64) int64 Here we’re...

View Article


Don’t force allocations on the callers of your API

This is a post about performance. Most of the time when worrying about the performance of a piece of code the overwhelming advice should be (with apologies to Brendan Gregg) don’t worry about it, yet....

View Article

Be wary of functions which take several parameters of the same type

APIs should be easy to use and hard to misuse.— Josh Bloch A good example of a simple looking, but hard to use correctly, API is one which takes two or more parameters of the same type. Let’s compare...

View Article

Use internal packages to reduce your public API surface

In the beginning, before the go tool, before Go 1.0, the Go distribution stored the standard library in a subdirectory called pkg/ and the commands which built upon it in cmd/. This wasn’t so much a...

View Article
Browsing all 36 articles
Browse latest View live




Latest Images