There's never been an easier time to write your own language

Sunday 19 Jun 2016

As programming matures and shifts to higher-level abstractions, it becomes more and more about assembling pre-made building blocks and less about writing new, novel solutions of your own. When I create web apps (the bread and butter of my day job) I'm using an open-source OS, programming language, database, database connector library, web server, web framework, authentication libraries, API libraries, payment service libraries... You get the idea. Increasingly the code I write is "glue" code, simply binding together my building blocks in the correct order, like a more complicated IFTTT, or textual Lego.

It's not surprising that this collection of building blocks is expanding to encompass ever-more-complicated areas of programming. Today, it's possible to build a simple programming language in the same way you'd build a web app.

Read more

2015 personal review

Wednesday 6 Jan 2016

I find it interesting to read others' reviews of the year and their progress and discoveries, so I thought I'd share my own. It's nice to be able to summarise everything that went on.

Read more

Using RPython and RPly to build a language interpreter, part 1

Saturday 10 Oct 2015

Earlier this year, I decided I would try to create my own toy language. I'd been reading about language design, compilers, interpreters, and seriously geeking out over it. Sometimes I can really get excited by an idea that just won't leave me alone, and I'll devour everything I can find that's related. When my interest hadn't dissipated for a few months I decided the best way to get it out would be to bite the bullet and actually do something — write my own language. I wanted to create a grammar for a language and an interpreter that could take in some source code in that language and execute it. In the end, I called it Braid — feel free to check out the source on GitHub.

I went into this project with a keen interest, some vague ideas from my research, but no academic background in language design and pretty much NO IDEA WHAT I WAS DOING!

In this first part I'll talk about the tools I've picked and the lexing and parsing steps. In the second follow-up post I'll talk about bytecode, interpreters, and RPython pitfalls.

Read more

Sharing your inbox for fun and profit

Monday 21 Apr 2014

This was originally posted on the Hello Code blog.

Some of the best solutions are born of laziness. To be a programmer, after all, is to find the laziest solution to a problem. So it's quite handy that my solution for our Hello Code email addresses turned out to have a valuable side effect.

Read more

I sold my side project

Tuesday 21 May 2013

In February, I decided I would get rid of my side project of the last two years, blaster.fm. I listed it on Flippa and hoped that someone would buy it, but if not, I would just shut it down.

I wrote a blog post about the experience that had led to this point and submitted it to Hacker News, hoping that it would give the listing more exposure.

Read more

Shutting down blaster.fm, my side project of two years

Monday 25 Feb 2013

I started blaster.fm in late 2010 with only a vague idea of what I wanted to do with it. Over the next two years I would work on it for at least a few hours every week; tweaking, refining, all-out rewriting, trying to get it as close as I could to the image in my head of what it could be. It was a one-man project and I was the only developer, though I had the support of friends and early users (with a large amount of the former making up the latter) to keep me going.

Read more

A little update

Friday 24 Aug 2012

I finally updated the site to reflect current standards. It was starting to get a little long in the tooth.

The results are not aesthetically amazing, but it's now HTML5 and fully responsive, so I'm happy. For now.

Twitter user streams with python

Monday 5 Dec 2011

I have been trying to find a basic proof-of-concept for twitter user streams. I couldn't find a complete example, so I rolled my own.

I wanted to avoid the external pyCurl dependency (which means curl needs to be installed separarely on Windows) so I switched the pyCurl callback method you might have come across with some rather naive urllib2 buffering.

It works, though, and that's the important part.

Read more

Fix Firefox 5+ font rendering in Windows

Wednesday 30 Nov 2011

If you use Firefox 5, 6, 7, 8, or greater in Windows, without ClearType, you've probably noticed how abysmal the font rendering is.

However, there's an easy fix. In about:config, find the preference gfx.direct2d.disabled and toggle this to true. Restart and your fonts will now look as they used to, which is to say, not nearly as horrible.

A bit of icon work

Tuesday 31 Aug 2010

I don't consider myself a designer at all, but I do enjoy pushing pixels. So recently I've done a tiny bit of work designing icons for various projects other than my own.

Icons

On the left is the icon for MahTunes, from The League of Paul. I think only the source is available at this stage.

On the right is the icon for Convertor, a webOS app by Coding Bees.

While not incredibly awesome, they're a start and hopefully something I can look back on in twelve months and laugh at scornfully because I'll be so much better.

< Newer posts Older posts >

About the Blog

I'm a developer in Melbourne, Australia, and co-founder of Hello Code.

I am joshsharp on twitter.