Earlier this week, my Bluespec extension for VS Code hit 100 installations, slightly under a month from when I released it. The number of actual users must be lower, but I’ve heard from multiple contacts in MIT’s 6.191 (both students and TAs) that people are finding it useful.
Thanks to my extension, there are now a bunch of folks who have industry-standard syntax highlighting for their Bluespec homework assignments and projects instead of plain black-and-white.
I remember going into it thinking, “well, if the only person this helps is me, that’s enough.” I’m very proud that it’s ended up helping others.
While reaching 100 installations is something I’m pleased with, it’s a coarse measure of impact that would’ve happened even if my extension was complete garbage.1
Installations are something that users can’t take back. If someone installs an extension, sees that it sucks, and immediately uninstalls it, there’s no mechanism that accounts for it in the popularity count. It still counts as an installation.
The number also reliably goes up because of how empty the field is. There are only three results that show up from searching Bluespec on the Marketplace, and installing VS Code extensions is so easy that people can just install all three and stick with the one that’s best.
I think my extension’s quality (both in implementation and documentation) has a positive effect for retention, but I have no way of measuring it. Practically nobody leaves ratings or reviews. The most popular extensions on the Marketplace with their 50M+ installations only have hundreds of ratings. Mine has three ratings.2
In all, I know a good handful of students taking 6.191 who are using my extension for their Bluespec (or I suppose Minispec). Some of them switched from the two barebones extensions on the Marketplace, and some of them switched from plaintext black-and-white.
When I released the extension, I told two current 6.191 TAs that I made my extension available, just in case it’d be useful for them or their students. One of them told me that they already had students asking for a VS Code extension for Minispec in office hours.
More recently, I was told by a friend that one of the other TAs (whom I’d never seen or heard of) was helping their students install my extension for their VS Code setups.
That was a sublime feeling, knowing that people I hadn’t met were recommending my tool to others and helping them install it.
It also feels nice, like in an artisanal way, to produce something beautiful (and I would consider my extension beautiful) and see it appreciated by others. It feels like what a carpenter might feel after having made a nice stool appreciated by themselves and others.
Effort vs Impact
In all, I didn’t spend a herculean effort on the extension, and yet it’s paid off handsomely. I spent about a week of effort and now that effort’s been amortized across dozens of my peers at MIT and Bluespec users at other institutions. I genuinely think the extension has already saved enough cognitive effort cumulatively across its users to outweigh the amount of time I spent developing it, and the degree by which that’s true is only going to grow with more users.3
Is my Bluespec extension technically impressive? Not really. It’s basically a set of regex rules in a trench coat.4 But has it filled a niche that has already made dozens of people happier to write Bluespec in VS Code? Yes.
Firehose (now Hydrant) was built in a weekend in 2017. Every semester, practically every undergrad at MIT uses it to plan their classes. It’s brought immeasurable comfort (even joy) to the undergrad community at MIT, and it has become quintessentially MIT as the Great Dome. I want to give appropriate credit to the maintainers from SIPB like CJ without whom the tool would no longer exist, but I’ve always thought it was remarkable that such an impactful tool was first created in a single weekend.5
My extension still has a ways to go to be a truly great extension9, but it’s a little mind-blowing that the niche it filled was so, so empty considering the amount of positive impact per unit effort. It’s by no means a massive user base, but definitely at least a thousand Bluespec users per year stand to benefit, if the other extension gives us any indication.
Before I did it, I would’ve expected maybe course staff in 6.191 (with their instructors or army of TAs) to provide a modest syntax highlighter the same way that other introductory classes at MIT have built up their class infrastructure.10 It would’ve taken a week, maybe two, of a single TA’s hours out of their ten TAs, and it would’ve paid dividends for several semesters because such a tool can be reused.
But I think the course staff hasn’t, as an institution, hopped onto the VS Code hype train yet.11 Or, just as likely, they just haven’t sought to take on that sort of pedagogical burden of providing syntax highlighting tools to students, especially when there are so many other pedagogical burdens to consider.
Instructors have many, many, choices on where to expend their energy to improve a class, and syntax highlighters might not be on their radars the same way it was on mine, especially when placed against improving lecture materials or operational aspects like running office hours. The instructors might not have known (or recognized the need), and the TAs might not have wanted to assume that sort of extra responsibility on top of their existing duties.
If not 6.191 course staff, then I would’ve expected Bluespec Inc. or the related B-Lang organization to develop and publish a VS Code extension for Bluespec. They seem to be doing a lot of marketing for Bluespec as a tool, including open-sourcing their Bluespec compiler, but none of that outreach seemed to include adding Bluespec support for the world’s most popular IDE, Visual Studio Code.
It’s a rather small company though, so it’s unsurprising if they’re focused more on other tooling, compiler enhancements, or toolchain integrations that make Bluespec more attractive to hardware companies. They have internal syntax highlighters for Emacs and Vim, but it could also be a generational12 difference where nobody there uses VS Code, or none of their main customers in the hardware design industry do.
every time I have to review software source code that was written by a hardware company I come away with the feeling that I have encountered an alien form of life— badidea 🪐 (@0xabad1dea) October 17, 2023
I don’t have data, but I would also be unsurprised if VS Code’s market share was greater among software engineers than it is among hardware engineers. There’s less of a distinction in the EECS undergraduate program at MIT, because everyone who’s writing hardware is probably writing software in another class. I can imagine the industry being a different world.
In this way, VS Code support for Bluespec might be far more important for college students than for industry engineers, but Bluespec Inc. is exclusively focused on the latter, as per their business model.
Who Else, Really?
It kind of all comes down to, who is in a position where they would care enough about Bluespec syntax highlighting to make it better? It’s not like there are syntax highlighting engineers running around looking for languages to develop extensions for. Course staff are generally focused on teaching their class material, and syntax highlighting is a ways off the beaten path. Bluespec Inc. is focused on developing their EDA tools for enterprise, whatever it is that they do.
And hardware engineers (like what I’m aspiring to be) generally want to be working on hardware, not the sort of infrastructural tools that involve playing with JSONs and writing regular expressions. But who else but the hardware engineer would care to work on tools to make hardware engineering more comfortable? It’s weird!13
These considerations presume that syntax highlighting for Bluespec is important. It’s a difficult case to prove to instructors or seasoned Bluespec engineers who have forgotten what it’s like to be new. I just know subjectively that, as a student who was learning unfamiliar concepts in an unfamiliar language, the familiarity of high-quality syntax highlighting would’ve made the learning curve easier and freed up some cognitive resources to focus on the technically difficult parts of writing Bluespec.14
In no place is syntax highlighting more important than for introducing people to Bluespec, whether it is MIT undergraduates in 6.191 or engineers considering picking up Bluespec. These people have not yet developed the Bluespec visual recognition skills that come with experience. Of course, syntax highlighting can remain useful after you do develop those skills.
I could’ve also been caught up thinking about how it should’ve been someone else making the tool, rather than me, a joe shmoe looking for a job after graduation. But I don’t know. It would’ve been nice if someone else made it, but it ended up being me. Someone had to do it. No great harm came to me from doing something useful that I wasn’t obligated to do.
Intellectual work, its proper distribution and compensation, and humanity’s open-source project are hard issues to think about in this digital age. Maybe I’ll think more about it another time. I don’t think the answer is necessarily to kick the can around waiting for someone else to pick it up, but I also don’t think the answer is for a self-selected few to pick up cans while the world looks on. But what can you do? Not everything fits within a transactional framework.
This syntax highlighting is a very small-stakes case for a very small audience, but it reminds me of the many actually important projects that really are thanklessly made and maintained by volunteer labor. The highest profile example that comes to mind, while not necessarily code, is the content on Wikipedia. There are countless examples in open-source software, but it’s not a world that I’m very steeped in on the developer side.
As a user, like everyone else, I’m constantly benefiting from software (and more generally, intellectual work) made by the volunteer labor of others. This website itself was generated using Jekyll, an open-source static site generator with really not all that many contributions compared to the value it provides.
I know in the age of hyperscale and impact (especially in software), a hundred installations is small potatoes compared to tools that millions of people use. But it’s my first time having such tangible (if modest) positive impact through something digital I created. It’s a profound feeling to have.
Case-in-point, the only other true Bluespec extension has nearly 10k installations since its release five years ago. Almost all its functionality is from out-of-the-box VS Code language support (C-like
//comment recognition, bracket matching) and very basic keyword recognition. My extension had better syntax highlighting within half an hour of development. However, the other extension’s redeeming feature (or context) is that there truly wasn’t anything better on the Marketplace, and this is a case where something is better than nothing. Kudos to them for taking action, however small. ↩
Three ratings is already more than the other true Bluespec extension, which has two ratings across its nearly 10k installations. And if you, dear reader, enjoy the extension, please leave me a rating too. ↩
Of course, not that I necessarily value my time the same as I do anybody else’s time, but in terms of Improving Efficiency™️ for humanity (taken at face value without all the moral baggage that attends whether brute efficiency is good), it feels like I’ve helped people! ↩
For now. We need to start somewhere. It is a nice base from which to add better quality-of-life features. ↩
I’ve long been captivated by the idea of beginnings. For example, why did EC Build start in 2004, why did no code editor command a supermajority of developers until Visual Studio Code, why did nobody make Firehose until Firehose was made? Every beginning must come from some context, but that context isn’t obvious for everything. It’s no surprise that rideshares or bikeshares didn’t take off until the proliferation of smartphones. The beginnings that are most surprising are the ones where there doesn’t seem to be an obvious accompanying shift that made them possible. Although, that might just be me not inspecting closely enough. ↩
Don’t tell my prospective employers that I called it unimpressive. It represents a lot of focus, effort, and difficulty, even if it doesn’t look all that fancy. It’s just subjectively anticlimactic because of what it is. An aspiring but solitary architect would make a dud of a cathedral by themselves. ↩
You could also say that whereas the Bluespec extension was built for impact, the processor was built as a learning exercise, which is true. With three months of solitary effort, I didn’t expect to go toe-to-toe with processors built by teams of hundreds of engineers. ↩
Though, it’s not like anyone but me is saying “anyone could’ve done it.” I just happened to do it and I’m thinking, anyone really could’ve done it, if only they just did it. ↩
I still need to figure out (if I’m still working on the extension) how to have truly useful snippets, and other subtle, quality-of-life changes that make writing Bluespec more comfortable. For that, I’ll need either user data (good luck getting that) or personal experience, which my slow but steady technical blog post series using Bluespec provides. ↩
Some MIT classes have developed impressive pedagogical tools, like 6.101 and Adam Hartz’s CAT-SOOP, 6.102 and its Praxis Tutor, or (the very same) 6.191 and Daniel Sanchez’s Minispec HDL. It’s hard to pick one example, but when I took Software Performance Engineering: 6.106 in Fall 2021, I considered it to be a master class in pedagogy (or at least classroom infrastructure).
Outside of MIT, I know there are some who use Bluespec at IIT Madras, University of Cambridge, UC Irvine, and so forth. I don’t know their standards for classroom (or laboratory) development infrastructure, so I don’t hold it against them. ↩
When I took 6.191 and when many of my friends took it, we were only taught to use the terminal. I still shudder thinking about it. In this year 2023? ↩
VS Code was only released in 2016, and even though it has taken over the world for several years running, it’s probably not super obvious to people who don’t actively interact with young developers writing code. I had a millennial professor who lectures hundreds of students every year and hadn’t even heard of VS Code when I mentioned it Fall 2022. ↩
When I was writing the syntax highlighter, I was reminded of the ice vendor that was featured recently on Eater’s YouTube channel. The guy was a bartender who wanted access to high-quality ice, but there was nobody in New York who could provide it. He started an ice manufacturing business that now produces clear ice for both his bar and other bars across the city. ↩
Though, the verbosity of Bluespec and most programming languages is nothing compared to the open-close tag system of HTML. The usefulness still holds. ↩