BASIC parsing difficulties in EndBASIC

The original BASIC parser in EndBASIC 0.1 was very rudimentary and it stayed pretty much unmodified until the 0.10 release last month. This release brought major changes to the parser to support new features, but it wasn’t easy to implement them. In this post, I want to look into various difficulties that arose implementing certain BASIC constructs in EndBASIC. Overcoming these difficulties was difficult, but it was also fascinating because it gave me a glimpse of the design choices that the original BASIC designers must have faced. Capturing these ah-ha moments in a post is also tricky, but I’ll try anyway.

January 13, 2023 · Tags: endbasic
Continue reading (about 14 minutes)

EndBASIC 0.10: Core language, evolved

After three months of early-morning hacking, I’m pleased to announce that EndBASIC 0.10 is now available—right on time for some holiday-time experimentation! This release marks a huge milestone because it makes the language usable for real-world development. You see, when I started this project over two years ago, I wrote a rudimentary interpreter for something that resembled BASIC and then launched EndBASIC 0.1. Since then, I have been piling onto those insufficient foundations by adding flashy features such as a web interface, a cloud file sharing service, and a hybrid text/graphics console.

December 27, 2022 · Tags: endbasic, featured
Continue reading (about 5 minutes)

From AST to bytecode execution in EndBASIC

Since its inception two years ago, the EndBASIC interpreter has been using an AST-based execution engine. And during all this time, people have mocked the language for not allowing 10 GOTO 10. Well, fear not: the upcoming 0.10 release has full support for GOTO and GOSUB, features that were made possible by moving to a bytecode-based interpreter. Let’s take a peek at what the problems were and how I addressed them.

November 22, 2022 · Tags: endbasic, rust
Continue reading (about 8 minutes)

Farewell, Microsoft; hello, Snowflake!

After two years, it’s time for a change: I left Microsoft last week and I’m starting at Snowflake today. Read on for details on my stint in Azure Storage, why I ended up looking for a new role, and how I landed at this new company.

October 31, 2022 · Tags: featured, microsoft, personal-story, snowflake
Continue reading (about 10 minutes)

Tips on formatting Markdown lists

Lists are a very common construct in technical documents, which is the kind of material I most often write and review. But getting complex lists to look right is tricky, especially when authoring them in Markdown. Let’s look at a couple of tips to ensure that any list you write will always be correctly formatted with ease.

July 7, 2022 · Tags: markdown, readability
Continue reading (about 6 minutes)

Speeding up autoconf with caching

In the recent Remembering Buildtool post, I described how setting up a cache of configuration checks was an important step in Buildtool’s installation process. The goal was to avoid pointless repetitive work on every build by performing such common checks once.

Episode 457 of BSD Now featured my post and Allan Jude wondered how much time would be saved in a bulk build of all FreeBSD packages if we could just do that same kind of caching with GNU Autoconf. And, you know what? It is indeed possible to do so. I had mentioned it en passing in my post but I guess I wasn’t clear enough, so let’s elaborate!

June 17, 2022 · Tags: freebsd, netbsd
Continue reading (about 10 minutes)

EndBASIC 0.9: Run shared demos easily

It is with great pleasure that I announce the release of EndBASIC 0.9.0 😎️.

The major feature in this new release is the ability to launch publicly-shared files via a click of a URL without having to create an account first. Here, try running my jmmv/bounce.bas or jmmv/paint.bas demos in your browser, now!

June 5, 2022 · Tags: endbasic
Continue reading (about 6 minutes)

A blog on operating systems, programming languages, testing, build systems, my own software projects and even personal productivity. Specifics include FreeBSD, Linux, Rust, Bazel and EndBASIC.

Follow @jmmv on Mastodon
Follow @jmmv on Twitter
RSS feed
0 subscribers