HNHacker News
TopNewBestAskShowJobs

misternugget

931 karma · joined March 22, 2013

My name's Thorsten Ball. I'm the author of interpreterbook.com and compilerbook.com. You can find out more about me or my writing at thorstenball.com. Feel free to contact me any time: me @ thorsten ball.com
submissionscomments
misternugget··on Bytecode compilers and interpreters
As the author of [1]: thanks for the shout-out! I appreciate it.

And if you’re more interested in the Bytecode/VM than the tree-walking part: I wrote and published a direct sequel to the mentioned book, called Writing A Compiler In Go [0], which — just like the tutorial we’re looking at here — shows how to turn the tree-walking interpreter built in the first book into a bytecode compiler and stack-based virtual machine.

[0] https://compilerbook.com

misternugget··on The Tools I Use to Write Books
> I'm working on a tool which abstracts away git rebase

This is 99% of what I need! In the best case it's just files/folders I can edit manually or with the help of a CLI.

> The tool is still in very early development, but here's a quick tutorial to get a better idea of how it works: https://github.com/snaptoken/leg/blob/master/TUTORIAL.md

Now, if those diffs are rendered nicely and the splitting up of a step into multiples (or: explain separate parts of one step) works, I think that really is 99% of what I need. The 1% being the grouping of steps into a chapter and some other small things probably

misternugget··on The Tools I Use to Write Books
There's also Monkey X, a dialect of BASIC: https://en.wikipedia.org/wiki/Monkey_X

It was previously called Monkey but then changed to Monkey X, which allowed me to use Monkey. Fun fact: I originally wanted to call it Tiger, because they're my favorite animals, but not two days after I wrote that name down, I opened Appel's Modern Compiler Implementation in ML and discovered that the language implemented in the book is also called Tiger. Thus, a Tiger became a Monkey.

misternugget··on The Tools I Use to Write Books
You should take a look at embedmd, which allows you to include files (or just portions of a file) in a Markdown file: https://github.com/campoy/embedmd

As I wrote in the post, I didn't use it because it doesn't allow me to include a portion of something and then comment out a part of that, but today I got thinking: if it could include a portion of a function and also the relevant (semantic?) context, it would be 99% of what I need. But the "relevant context" is the tricky part, I guess. I like what git diff does, when it shows the signature of a changed function (does it simply use the first of the previous lines that are less intended?), but I guess it's hard to get really right...

edit: GitChapter is also a really interesting project. If it didn't use a real git repository, but something like folders that resemble single commits, I think I'd use it. https://github.com/chrissound/GitChapter/

misternugget··on The Tools I Use to Write Books
> when people were trying to do something else, and had to invent new tools.

(Author here.) My point was not that you shouldn't invent tools if you need them. By all means, go ahead. My heart beats for creating tools (especially tools to create other tools...).

What I wanted to express was this: if you want to write _a book_, first write the book and only then worry about the tools. If you then notice that you need a custom toolchain to get the book in exactly the shape you need it to be, do it.

I've had people tell me that they would love to write a book, but, well, the existing tools are not sufficient enough. And I think that's the wrong approach to writing a book: write something and you'll quickly realize that the tooling is not your biggest hurdle.

misternugget··on Ask HN: Who is hiring? (July 2018)
Deutsche Bahn // ioki (ioki.com) | Backend Software Developer | Frankfurt am Main, Germany | ONSITE | Full-Time | Junior, Senior | http://bit.ly/ioki-junior-developer and http://bit.ly/ioki-backend-developer

ioki is a complete service provider for digital forms of mobility on the road. We enable third parties, such as cities, transport companies or municipal authorities, to operate new types of demand responsive transport (DRT) mobility in public transport under their own name and design. To achieve that, we provide the ioki platform and mobile apps.

We are looking for software developers, from junior to senior, to join our Backend team, which builds the platform that helps our customers launch and scale their mobility products. We are a team of four that is central to ioki’s product development and wants to grow with its young codebase, which has seen a lot of production use already but is carefully maintained and free of technical debt.

Our main stack consists of Ruby and Ruby on Rails, but experience in the language or the framework is not a hard requirement. Much more than that, we care that you have general software engineering skills, high standards and take pride in your work.

If you want to read more about the job and how we work in our product company, check out the full job descriptions here:

- Junior Backend Software Developer - http://bit.ly/ioki-junior-developer - Backend Software Developer - http://bit.ly/ioki-backend-developer

Interested? Send us an email with your CV/GitHub/StackOverflow and a few words about yourself: jobs@ioki.com

We're also looking for Senior Android Developers, Project Engineer Autonomous Driving, Operations Managers and much more. You can find the rest of the job descriptions here: http://bit.ly/hello-ioki

misternugget··on The sequel to Writing an Interpreter in Go is coming this summer
Thanks for notifying me, but I'm sorry to say that I can't reproduce the problem. It's hosted on Netlify, who also take care of the certificate, so I'll let them know.
misternugget··on Ask HN: Who is hiring? (June 2018)
Deutsche Bahn // ioki (ioki.com) | Backend Software Developer | Frankfurt am Main, Germany | ONSITE | Full-Time | Junior, Senior | http://bit.ly/ioki-junior-developer and http://bit.ly/ioki-backend-developer

ioki is a complete service provider for digital forms of mobility on the road. We enable third parties, such as cities, transport companies or municipal authorities, to operate new types of demand responsive transport (DRT) mobility in public transport under their own name and design. To achieve that, we provide the ioki platform and mobile apps.

We are looking for software developers, from junior to senior, to join our Backend team, which builds the platform that helps our customers launch and scale their mobility products. We are a team of four that is central to ioki’s product development and wants to grow with its young codebase, which has seen a lot of production use already but is carefully maintained and free of technical debt.

Our main stack consists of Ruby and Ruby on Rails, but experience in the language or the framework is not a hard requirement. Much more than that, we care that you have general software engineering skills, high standards and take pride in your work.

If you want to read more about the job and how we work in our product company, check out the full job descriptions here:

- Junior Backend Software Developer - http://bit.ly/ioki-junior-developer - Backend Software Developer - http://bit.ly/ioki-backend-developer

Interested? Send us an email with your CV/GitHub/StackOverflow and a few words about yourself: jobs@ioki.com

We're also looking for Senior Android Developers, Project Engineer Autonomous Driving, Operations Managers and much more. You can find the rest of the job descriptions here: http://bit.ly/hello-ioki

misternugget··on Ask HN: Who is hiring? (May 2018)
Deutsche Bahn // ioki (ioki.com) | Backend Software Developer | Frankfurt am Main, Germany | ONSITE | Full-Time | http://bit.ly/ioki-backend-developer

ioki is a complete service provider for digital forms of mobility on the road. We enable third parties, such as cities, transport companies or municipal authorities, to operate new types of demand responsive transport (DRT) mobility in public transport under their own name and design. To achieve that, we provide the ioki platform and mobile apps.

We are looking for software developers to join our Backend team, which builds the platform that helps our customers launch and scale their mobility products. We are a team of four that is central to ioki’s product development and wants to grow with its young codebase, which has seen a lot of production use already but is carefully maintained and free of technical debt.

Our main stack consists of Ruby and Ruby on Rails, but experience in the language or the framework is not a hard requirement. Much more than that, we care that you have general software engineering skills, high standards and take pride in your work.

If you want to read more about the job and how we work in our product company, check out the full job description here: http://bit.ly/ioki-backend-developer

Interested? Send us an email with your CV/GitHub/StackOverflow and a few words about yourself: jobs@ioki.com

We're also looking for Senior Android Developers, Project Engineer Autonomous Driving, Operations Managers and much more. You can find the rest of the job descriptions here: http://bit.ly/hello-ioki

misternugget··on Ask HN: “Write your own” or “Build your own” software projects
As the author of the mentioned book I just want to add that I specifically wrote it because I'm also a huge fan of the technical writings the author is looking for: from the ground up, all code shown, no toys and shortcuts, capturing the essence in a few thousand lines.

And just FYI, the interpreter we build in the book ends up with ~3900 lines, including the full test suite.

misternugget··on Ask HN: Who is hiring? (October 2017)
Deutsche Bahn // DB Drive | Senior Android Developer | Frankfurt am Main, Germany | ONSITE | Fulltime

We are looking for great Android developers! Do you have a passion for building mobile applications? Do you love working on and shaping products, using best practices and state-of-the-art tools, developing software in a modern way? Then we should talk!

But first, who's "we"? We are a startup being founded inside Deutsche Bahn AG. Our mission is to modernise today's mobility through innovation and disruption of existing solutions. Autonomous shuttles, on-demand mobility and learning, growing, digital systems that help to shape and to change the mobility of tomorrow? Yes, we're on it and we want you to join us in our office in the heart of Frankfurt am Main, Germany!

Are you skeptical about Deutsche Bahn being able to move fast and innovate? We totally understand, but we want to tell you that we are completely autonomous and try our best to offer the best of both worlds: the benefits that come from working for a large corporation and the joy of working for a fast-moving and creative start-up that wants to ship.

Interested? Shoot me an email with your CV/GitHub/StackOverflow and a few words about yourself: thorsten.ball@dbdrive.io

misternugget··on Ask HN: Resources for building a programming language?
Author of the book here. Thanks for the shout out! I'm happy to hear that you appreciate the book exactly in the way it was intended to - little magic, lots of code and unit tests.

I'm also super curious about your "not in an idiomatic way" comment. If you have a minute, feel free to send me a longer version - me at thorstenball.com. I'd really love to hear what you'd do differently and what could be more idiomatic.

misternugget··on Ask HN: Who is hiring? (July 2017)
Deutsche Bahn // DB Drive | Senior Android Developer | Frankfurt am Main, Germany | ONSITE | Fulltime

We are looking for great Android developers! Do you have a passion for building mobile applications? Do you love working on and shaping products, using best practices and state-of-the-art tools, developing software in a modern way? Then we should talk!

But first, who's "we"? We are a startup being founded inside Deutsche Bahn AG. Our mission is to modernise today's mobility through innovation and disruption of existing solutions. Autonomous shuttles, on-demand mobility and learning, growing, digital systems that help to shape and to change the mobility of tomorrow? Yes, we're on it and we want you to join us in our office in the heart of Frankfurt am Main, Germany!

Are you skeptical about Deutsche Bahn being able to move fast and innovate? We totally understand, but we want to tell you that we are completely autonomous and try our best to offer the best of both worlds: the benefits that come from working for a large corporation and the joy of working for a fast-moving and creative start-up that wants to ship.

Interested? Shoot us an email with your CV/GitHub/StackOverflow and a few words about yourself: michael.barillere-scholz@deutschebahn.com

misternugget··on Ask HN: Who is hiring? (May 2017)
Deutsche Bahn // DB Drive | iOS & Android Developer | Frankfurt am Main, Germany | ONSITE | Fulltime

We are looking for great mobile developers - iOS and Android! Do you have a passion for building mobile applications? Do you love working on and shaping products, using best practices and state-of-the-art tools, developing software in a modern way? Then we should talk!

But first, who's "we"? We are a startup being founded inside Deutsche Bahn AG. Our mission is to modernise today's mobility through innovation and disruption of existing solutions. Autonomous shuttles, on-demand mobility and learning, growing, digital systems that help to shape and to change the mobility of tomorrow? Yes, we're on it and we want you to join us in our office in the heart of Frankfurt am Main, Germany!

Are you skeptical about Deutsche Bahn being able to move fast and innovate? We totally understand, but we want to tell you that we are completely autonomous and try our best to offer the best of both worlds: the benefits that come from working for a large corporation and the joy of working for a fast-moving and creative start-up that wants to ship.

Interested? Shoot us an email with your CV/GitHub/StackOverflow and a few words about yourself: michael.barillere-scholz@deutschebahn.com

misternugget··on Ask HN: Who is hiring? (April 2017)
Just a quick update, because I forgot this in the original post: we are looking for employees that are able to work onsite with us, in Frankfurt am Main. At least for 3 days/week.
misternugget··on Ask HN: Who is hiring? (April 2017)
Deutsche Bahn // DB Connect | iOS & Android Developer | Frankfurt am Main, Germany

We are looking for great mobile developers - iOS and Android! Do you have a passion for building mobile applications? Do you love working on and shaping products, using best practices and state-of-the-art tools, developing software in a modern way? Then we should talk!

But first, who's "we"? We are a startup being founded inside Deutsche Bahn AG. Our mission is to modernise today's mobility through innovation and disruption of existing solutions. Autonomous shuttles, on-demand mobility and learning, growing, digital systems that help to shape and to change the mobility of tomorrow? Yes, we're on it and we want you to join us in our office in the heart of Frankfurt am Main, Germany.

Are you skeptical about Deutsche Bahn being able to move fast and innovate? We totally understand, but we want to tell you that we are completely autonomous and try our best to offer the best of both worlds: the benefits that come from working for a large corporation and the joy of working for a fast-moving and creative start-up that wants to ship.

Interested? Shoot us an email with your CV/GitHub/StackOverflow and a few words about yourself: michael.barillere-scholz@deutschebahn.com

misternugget··on Ask HN: What are some examples of good code?
Your comment made me curious. Do you have any examples you could link to that you think are good?
misternugget··on Writing an Interpreter in Go: The Paperback Edition
I haven't uploaded the code to Github myself, but as of v1.3 of the book the code is MIT licensed. That means there are a lot of implementations floating around, either copied straight from the book or adapter to another language. Here's the repo of a reader who followed the book closely in Go: https://github.com/RyanBrushett/interpreter
misternugget··on Writing an Interpreter in Go: The Paperback Edition
I'm actually really surprised by the quality. I expected, as you put it, "non-print-on-demand" quality, but what I got has no obvious flaws or defects and a really high quality feel to it.
misternugget··on Writing an Interpreter in Go: The Paperback Edition
I didn't really think about this that much before, it was more like "yeah, full colors, sure, why not?". Holding the proof copy in my hands I realized what a nice touch it was and that I haven't seen this in other programming books. Of course, the full colors come with a cost, but once I saw it, I couldn't go back to black/white :)
misternugget··on Writing an Interpreter in Go: The Paperback Edition
I recently read a comment (I think it might have been on HN, but I can't find it) that said something like this: if you recently learned/mastered a topic, you're in a far better position to teach that topic than an expert, who's so deep into it, that they can't understand the beginners.

I wish I could find the source for this, because it was much better put, but that comment contains the gist of my motivation behind writing the book.

misternugget··on Writing an Interpreter in Go: The Paperback Edition
It's a AST walking interpreter, completely built from scratch, including the lexer, the parser, the AST and, of course, the walking/evaluation step.
misternugget··on Writing an Interpreter in Go: The Paperback Edition
Yes. 5-6 markdown files, converted to epub, mobi, pdf and html with pandoc. I know there are better workflows, especially in regards to embedding code (my approach was simple copy and paste), but if there's one recommendation I can make it's this one: check out pandoc. It's an amazing tool.
misternugget··on Writing an Interpreter in Go: The Paperback Edition
It makes me really happy to read that. Not because you want to buy two editions, but because you apparently enjoyed the book a lot :)
misternugget··on Writing an Interpreter in Go: The Paperback Edition
Author here. Sadly, I can't offer digital+print bundles. I sell the digital version through Gumroad and the paperback through createspace, so I don't have to worry about printing/shipping. That makes it very easy for me to sell a paperback version, but also that much harder to offer discounts or bundles or anything, if you already purchased the eBook.
misternugget··on 'Check Your Backups Work' Day
You might want to check your Time Machine backups by hand from time to time using the tmutil[1] tool.

My Time Machine backups in the past have been missing gigabytes of data, without me telling anything about it. And not just volatile data, like temp files or caches, but photos, music and documents.

[1]: http://osxdaily.com/2012/01/21/compare-time-machine-backups-...

misternugget··on Forth: The Hacker’s Language
This is amazing. Thank you so much for sharing this.
misternugget··on Why I wrote a book about interpreters
Disclaimer: I'm the author of the book and thus pretty biased.

As a matter of fact, I wrote this book specifically for people like you and me: no CS degree, highly interested in interpreters and compilers, but intimidated by the existing literature. (If you studied compilers in college, this book will probably teach you nothing new.) There's a sample on the landingpage that should give you an impression of the difficulty - my guess is, that if you already know how to program and know the basics of Go, you'll get along just fine.

misternugget··on Writing an Interpreter in Go
Well, I couldn't describe a better use case, even if I tried. Check out the free sample, which shows how to build a lexer/scanner/tokenizer.
misternugget··on Writing an Interpreter in Go
No, not at all. That's precisely what the book is about: what is a lexer? how do I build one? what is a parser? what is a recursive descent parser?

I tried to make the code as easy to understand as possible, always thinking: "would someone who's never written an interpreter understand this?"

← PreviousPage 2 of 3Next →