Programming language trends

Languages like Rust, Go and Swift have all come onto the programming scene fairly recently, and they’re all compiled and statically typed. What is it about compiled and statically typed languages that’s making them so fashionable at the moment?

At least part of their popularity is due to their provenance. They’ve been created by some of the biggest tech companies today. Mozilla (Rust), Google (Go) and Apple (Swift) are all solving problems that benefit from the extra speed and safety that you get from statically typed compiled languages. The companies realised early on that by releasing these languages as open source they can benefit from the community that builds around them, so they successfully marketed them to programmers. Now there’s a network effect going on where the communities around these languages are growing, so there’s more useful open source code available, so more programmers can solve their problems using these languages.

In the Stack Overflow Developer Survey 20191 the most popular programming language was JavaScript, a dynamically typed interpreted language. But the most loved language was Rust. So why are people wanting to go back to compiled languages, aren’t they really slow to compile? Well it turns out that advances in computer science mean we’ve now got significantly faster compilers, so there’s not as much time spent waiting while code compiles compared to older compiled languages. In fact for small to medium size programs it can often feel like you are running an interpreted language the compilation step is so fast.

The preference for static typing in these languages must be driven at least in part by a desire to reduce the number of bugs encountered in production. In one study the use of static typing was shown to reduce the rate of bugs by 15%2, which is a big saving no matter what scale you operate on. The extra overhead of understanding and using a type system are outweighed by the benefits it provides. We all want fewer bugs in our code, after all.

Another nice benefit that a lot of compiled languages provide is simplified deployment. For languages like Go and Rust that output a single binary you easily deploy that binary to production and store previous versions for rollback etc. Contrast this with interpreted languages like Node.js and Ruby, where you need to have a copy of the whole source tree and the source of all the dependencies arranged appropriately on disk.

Most important of all these languages are fun to create software with. Compared to languages from the previous generation like C++ and Java, these new languages can be a joy to use, in no small part because they leave behind a whole raft of legacy cruft that older languages have to support.

This new generation of languages provide lots of benefits for the big tech companies behind them. By making them open source these companies have benefitted from the network effect as communities have sprung up around these languages creating and sharing useful code libraries. These languages are fun to write, fast to run and have the potential to uncover bugs earlier in the development process.

  1. Stack Overflow Developer Survey Results 2019 

  2. Gao, Zheng, Christian Bird, and Earl T. Barr. “To type or not to type: quantifying detectable bugs in JavaScript.” Proceedings of the 39th International Conference on Software Engineering. IEEE Press, 2017. 

Do things for fun

Artwork by my daughter, 18 months old

A life well lived requires activities that serve no other purpose than the satisfaction that the activity itself generates.

– Cal Newport, Digital Minimalism

Not everything you do has to have a reason or purpose behind it. Sometimes it’s fun to do something that serves no practical purpose.

Do some drawing, painting, knitting, woodworking, stargazing, writing, bookbinding or whatever. You don’t always need to share it on Instagram or sell it on Etsy. Do it simply because you enjoy doing it.

Find the underlying principle

Steve Jobs on problem solving1:

When you first look at a problem it seems easy because you don’t know much about it. Then you get into the problem and see it’s really complicated and come up with lots of convoluted solutions.

Most people stop there, but the key is to keep going until you find the underlying principle of the problem and come full circle with a beautiful elegant solution that works.

It’s tempting when solving a problem to use the first solution that works and move on. Indeed with deadlines and external pressures this often feels like the only choice.

But if possible it’s worth taking the time to understand the problem at a deeper level. Understand what the underlying principle is. When you understand this you can understand what a more elegant solution to the problem will look like.

  1. Quote from Steve Jobs: The Man Who Thought Different by Karen Blumenthal. 

Sunday morning runs

Dowdeswell Reservoir on a misty Sunday morning in September

I find it incredibly theraputic going for a run early on a Sunday morning. I like to go out just as the sun is rising, around 7am this time of year, but before the roads are filled with cars, noise and pollution.

These runs are about more than just exercise. They’re about finding space and time away from the everyday hustle and bustle to just exist. There’s no pressure to do anything other than put one foot in front of the other.

It’s on these runs in the small hours of Sunday morning where I most often get into a state of flow. I stop noticing the effort required and just enjoy the run. They’re also a great time to enjoy solitude, which helps me process my thoughts and emotions.

Sunflowers

I’m really pleased with how our sunflowers have turned out this year. They’ve grown about 2m tall and each plant has multiple flowers on it. This picture shows one of the three plants that we’ve got dotted around our garden.

Sunflowers with blue sky in the background

I’ve observed a wide variety of bees feeding on them, including some remarkably large bumble bees. They seem to especially like feeding on sunny mornings, when the flowers are bathed in light.

I think perhaps the most incredible thing about sunflowers is their rate of growth. They can go from seed to about 2m tall in around 6 months, and then in another 3 months they’ll be dying and setting seed ready for next year.

The life of a sunflower is ephemeral, but it gets an impressive amount done in it’s short life.

Just start

Often when I’m stuck on a task I’ll start procrastinating. I’ll go and empty the dishwasher, do some gardening, or read a book to avoid working on it. Most often this is because I have a rough idea of what needs to be done, but I know there are parts that I’m uncertain about, or I know the task will be a bit painful or annoying to complete.

When I catch myself procrastinating in this way I have to force myself to just start. Just start clearing out the spare room. Just start replying to that email. Just start cooking the meal. Most of the time I only have to force myself to work on the task for a minute or two, then I start to get ideas and start to see what steps I need to follow to complete the task and it becomes easy to continue working on the task.

The act of starting a task is usually enough for your brain to take over and guide you though the task. Don’t wait for inspiration before beginning a task, begin a task to get inspiration.

August musings

We had a bank holiday in the UK on Monday and the weather has been lovely, so I’ve been outdoors harvesting vegetables. Our courgettes have done really well this year. I think putting them in the ground and underplanting them with white clover has helped the nitrogen levels in the soil, which means the plants are big and have lush green leaves.

Solitude

I’m reading Digital Minimalism by Cal Newport at the moment. One section of the book talks about the importance of solitude, which Cal defines as “a subjective state in which your mind is free from input from other minds”. He argues solitude is disappearing in modern life because we’re so addicted to our smartphones. We fill moments where we used to be alone with our thoughts with a quick check of social media. The book suggests three practices that can help us reclaim some solitude in our lives.

  1. Leave your phone at home sometimes, you’ll be fine.
  2. Go for long walks, preferably without your phone.
  3. Write down your thoughts using pen and paper.

Gut facts

I read Gut: The Inside Story of Our Body’s Most Underrated Organ by Giulia Enders earlier this month. It’s a fascinating look at the internal workings of something we use every day but probably don’t give much thought to, our gut. Here are some interesting facts I learned while reading it:

  • Squatting results in better bowel movements than sitting. You can help your bowel movements by leaning forward slightly and putting your feet on a small footstool.
  • Alcohol can multiply the number of gas-producing bacteria by a factor of up to a thousand.
  • Tummies rumble between meals not because you’re hungry but because you’ve left enough time between meals for your small intestine and stomach to do some cleaning.
  • Bacteria do more than just break down our food. They also produce completely new substances. Fresh cabbage, for example, is less rich in vitamins than the sauerkraut it can be turned into.

English cricket

Finally I just wanted to mention what an exciting summer it has been for English cricket. First the unbelievable world cup final, including that super over. Who could have predicted a drawn match and a drawn super over, which meant the cricket world cup was decided by which team got the most boundaries. Poor New Zealand though, you have to feel for them. I hope in the future they modify the rules so that the teams keep playing super overs until there is a clear winner.

Then Ben Stokes’ incredible innings at Headingley last week in The Ashes third test, just 6 weeks after the world cup final, to take a monumental victory that seemed all but impossible after England went all out for 67 in their first innings. Hopefully the English batting lineup can take some tips from the way Stokes approached the innings. Defensive at first, not taking any risks, then building up to the point where every other ball was a boundary.

subscribe via RSS