HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
fogleman
gg
Go2016–2023
fogleman / gg

gg

Go Graphics - 2D rendering in Go with a simple API.

5Distinct people
6Mentions
1Explicit recommenders
4.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Go Graphics - 2D rendering in Go with a simple API.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

Like: - `go generate` for embedding resources into the executable. So intuitive and beautiful. - Strict curating. It's the kind of language that things don't get into unless…

AntiMS used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year6 dated mentions

Observed mentions: 2016-02-21 17:54:27 UTC to 2023-06-02 11:01:27 UTC.

0122016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 2 mentions; 2 submissions, 0 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2023

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC220
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC101
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC202

What Hacker News says

6 sources
Sorry, this is part of my effort of learning Go and is also a WIP. So I am not yet comfortable sharing the code. I can share the libraries I used: - go html/template for the front-end - github.com/twpayne/go-gpx for parsing the gps tracks - github.com/fogleman/gg for drawing the images - github.com/dsoprea/go-exif/ for reading the exif of the photos, so I can show where are they taken on the route map
In How to make fancy road trip maps with R and OpenStreetMap
AntiMS·Nov 27, 2022Recommendation phrase
Like: - `go generate` for embedding resources into the executable. So intuitive and beautiful. - Strict curating. It's the kind of language that things don't get into unless they're the right solution. - Performance! Python was my favorite language before Go got sufficiently mature. It was refreshing to have that much efficiency coming from Python. - `if err != nil {`, dammit! - Imports referring to the location where the code can be got. `import "github.com/fogleman/gg"` for instance. - `go fmt`. Nuff said. - Tabs as the standard indentation character. - `fallthrough` - `init()` Dislike: - nil. I wish nil had a smller role in the language. It's an agreed best practice in Go that a zero value should be a ready to use thing. I feel like that would be easier to do (and more true of the core language) if the zero value of a slice/map was an
Read the rest
empty slice/map, the zero value of a pointer was a pointer to a zero value of the type it points to, etc. Maybe this can't be done for all types (function and interface types, for instance), and maybe there are good reasons for the way it is that I'm not smart enough to realize, but if it could be done for some types, it would be nice. Things I Pretty Much Eschew: - Generics are limited. Maybe I'm missing something, but I doubt I'll be using generics as they are very extensively at all. If we could make generic types that would be something I could see myself using more. - Embedding. It's rare I find a use for that. - `defer`, honestly.
In Ask HN: What do you like/dislike about Golang?

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.