Finding Optimal Typographic Scale

During the construction of this site, there are many important design decisions that need to be made. One of them is to decide the font size for each level of headings, i.e., typographic scale. Investigation The first thing I did was to read everything online about typographic scale. I will just skip the details and jump to my opinions: Modular scale should be followed Traditional scale is obsolete Golden ratio or double-stranded scale do not make any sense Vertical rhythm should be considered Then a little explanation. ...

July 5, 2014

A List of Website Testing Services

The W3C Markup Validation Service Google PageSpeed Insights Pingdom Website Speed Test Nibbler BrowserStack

July 3, 2014

A List of Narrow Fonts for Titles

Economica Fjalla One League Gothic Medula One Open Sans Condensed Oswald Pathway Gothic One PT Sans Narrow Rationale Six Caps Tulpen One Yanone Kaffeesatz

July 1, 2014

Links about Font Choosing

The Best Font Styles for Blogging Size Doesn’t Matter, and What Does Using Media Queries To Improve Readability 8 Definitive Web Font Stacks

June 22, 2014

Getgo: a concurrent, simple and extensible web scraping framework

Getgo is a concurrent, simple and extensible web scraping framework written in Go. Quick start Get Getgo go get -u github.com/h12w/getgo Define a task This example is under the examples/goblog directory. To use Getgo to scrap structured data from a web page, just define the structured data as a Go struct (golangBlogEntry), and define a corresponding task (golangBlogIndexTask). type golangBlogEntry struct { Title string URL string Tags *string } type golangBlogIndexTask struct { // Variables in task URL, e.g. page number } func (t golangBlogIndexTask) Request() *http.Request { return getReq(`http://blog.golang.org/index`) } func (t golangBlogIndexTask) Handle(root *query.Node, s getgo.Storer) (err error) { root.Div(_Id("content")).Children(_Class("blogtitle")).For(func(item *query.Node) { title := item.Ahref().Text() url := item.Ahref().Href() tags := item.Span(_Class("tags")).Text() if url != nil && title != nil { store(&golangBlogEntry{Title: *title, URL: *url, Tags: tags}, s, &err) } }) return } Run the task Use util.Run to run the task and print all the result to standard output. ...

June 2, 2014