/dev/jcheng
  • About
  • Articles
  • Pages
  • Reviews
  • Tags

Articles

May 17, 2022

Optimisim

This is a story from Neil DeGrasse Tyson’s StarTalk podcast. He talked about being on Brian Cox’s show and discussing the futures of space travel. Neil was saying that chemical rocket engines are not going to cut it and we need to look into things like wormholes and warp drives. Then Brian cuts in and explains that wormholes are fundamentally unstable and they won’t work.

Brian was absolutely correct, but that was not the point. The point was about what the audience said. Cox’s audience said to them, “That’s why the Americans discover everything! They are always so optimistic!” (Cox is a British phycisit and Neil is an American physicist).

read more
October 17, 2021

Interpreter in Go - 4

In Chapter 1.3 of [Ball’s Writing an Interpreter in Go][1], we encounter one design decision of his Monkey programming language. Here, the lexer has a NextToken() method that looks like this:

func (l *Lexer) NextToken() token.Token {
    var tok token.Token

    switch l.ch {
// [...]
    default:
        if isLetter(l.ch) {
            tok.Literal = l.readIdentifier()
            return tok
        } else {
            tok = newToken(token.ILLEGAL, l.ch)
        }
    }
// [...]
}

This means the lexer itself does not do backtracking. The meaning of a character at any point cannot be ambiguous. You cannot say, for example, that ‘+’ is the ‘plus’ token unless it is in the middle of a variable name. I don’t know many programming languages that support such behavior – so it is probably an acceptable design decision. You know what they say, “Keep it Simple, Smartypants”. I’m not sure if there are other notable constraints introduced by the design at this point, but it is something that tickles my overly analytical brain.

read more
September 14, 2021

Staff Plus Live 2021

Staff Plus Live 2021 was a virtual conference held by LeadDev.com on Sept 14, 2021. I believe this is their first conference aimed at Staff+ Engineers. Loosely defined, Staff+ are high-impacting engineers whose success is felt across the company. In other words, these are engineers who creates high leverage. I was able to attend this year’s conference and learned a lot from it. I started this post to write down what resonated with me before I forget about them.

read more
August 29, 2021

Post of the Week 2021-08-29

Just the act of measuring something can change outcomes. I love the reference to Jespen.

https://danluu.com/why-benchmark/

read more
August 22, 2021

Interpreter in Go - 3

A lexer takes the source code, a sequence of characters, and group them into tokens. e.g., it makes the first decision on how to process the strings 100-10, -100-10, and -100--100 into groups. I’m going to call this grouping “tokenization” even though I may be misusing the term.

Tokenizing source code is hard. How should -100--100 be tokenized? Should it be a literal -100 followed by the minus token, followed by another -100?

read more
July 29, 2021

Interpreter in Go - 2

Writing an Interpreter In Go by Thorsten Ball will be my personal introduction to writing an interpreter. I’ve never taken a comp sci class before, so I know nothing about compilers. On a lark, I decided to explore this area now, nearly 20 years after I started to learn computer programming.

If you are interested in this book as well, you might might the AST Explorer a useful companion.

I was told as some point in the past, that compilation can be broken down into four stages:

read more
July 27, 2021

Interpreter in Go - 1

It happened. At the recommendation of https://twitter.com/dgryski, I bought Writing an Interpreter In Go. This will be my next hobby project. It’ll be interesting to see if I ever finish it.

read more
July 25, 2021

Post of the Week 2021-07-25

Back from a long vacation. This week, we have folk wisdom on visual programming

https://drossbucket.com/2021/06/30/hacker-news-folk-wisdom-on-visual-programming/

read more
June 3, 2021

Post of the Week 2021-06-03

Humans and incentives, and why some metrics (or objectives and key results) should not be public.

http://rachelbythebay.com/w/2021/06/01/count/

read more
May 29, 2021

Post of the Week 2021-05-27

Systemd, the good parts

https://lobste.rs/s/po98o2/systemd_good_parts

read more
  • ««
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
  • »»
© /dev/jcheng 2025