Content tagged computers

Some final thoughts on programming

posted on 2019-10-14

In the past seven posts of this series, we've looked at how to make software understandable, reliable, and extendable. We've seen techniques for dealing with errors, reducing complexity, and developing in teams. We've touched on different programming languages and paradigms, and conventions for documenting code. Of course, these have been very cursory glances; but hopefully enough to give a brief overview of what to think about when developing software in a scientific context. Now, in closing, I want to mention two last topics and give a few pointers on where to go from here.

more...

Developing in a team

posted on 2019-07-30

Although a lot of scientists who write code usually work on their own, there will always be occasions when one becomes part of a development team. This could be because a junior colleague is joining your project (or vice versa), or because the software you are working on is so large and complex it requires the joint efforts of several people to complete. These scenarios not only make the principles we have already discussed more important (readable code, good architecture, etc.), they also necessitate a whole new set of procedures.

more...

Dumping Mendeley for Zotero

posted on 2019-07-15

For several years, my library program of choice was Mendeley, which used to be a fantastic piece of software that perfectly fit my needs. Unfortunately, phenomenally bad management and some very dubious design choices have made it pretty much unacceptable. I've hesitated for a long time, but last week I decided it was time to take the plunge and have now switched to Mendeley's open source competitor, Zotero. Here's my first impression.

more...

Programming tools: paradigms

posted on 2019-07-08

When we talk about “using the right tools” in programming, that applies to a lot of different choices one can make. One is the choice of programming language, which we covered in the last article. Another important “tool set” to be aware of is that of programming paradigms.

more...

Programming tools: languages

posted on 2019-07-01

Programmers love to debate about programming languages. Almost everyone has their favourite, so discussions as to the relative merits of each often degrade into “holy wars”. Although no one will ever find the “perfect programming language” (despite numerous claims to the title), it is nonetheless instructive to compare different languages. After all, not all languages were created equal, and each have their individual strengths and weaknesses. Knowing about these can help you choose just the right language for just the right situation – in short, to use the right tools.

more...

Dealing with Errors

posted on 2019-06-24

The Jargon File defines programming as: “A pastime similar to banging one's head against a wall, but with fewer opportunities for reward.” Every programmer knows the frustration of looking for bugs that just won't be found. In fact, the majority of a software's development cycle is usually devoted not to the original writing, but to the subsequent debugging. Somebody who is good at finding and fixing mistakes therefore not only produces more reliable code, but is also a more efficient developer. So what techniques can we use to find bugs, or, if possible, prevent them occurring in the first place?

more...

The Art of Abstraction

posted on 2019-06-17

“Software's Primary Imperative has to be managing complexity”, says Steve McConnell in his book on software construction. In the first article of this series, I already said that reducing complexity makes software simultaneously more reliable, understandable, and extendable. Now, we are going to take a look at how that is possible.

more...

Nullboard - Lightweight Kanban

posted on 2019-06-10

After months of trying, my friends and I finally managed to schedule a new pen-and-paper roleplaying session for later today. As game master, that meant a busy last few days for me as I set about preparing a new campaign. Usually, I do my preparations with an actual physical notebook, but for various reasons I decided a digital note app would be better this time around. By a stroke of luck I happened to discover an excellent little tool that I think is worth presenting here: Nullboard.

more...

Understandable Software

posted on 2019-06-03

Having begun our series on software development with a broad look at the basic principles, let us now get down to the nitty-gritty. We said the three key aims of a developer should be software that is reliable, understandable, and extendable. As the second of these is probably the easiest, let us start with that. So how do you write software that is easy to understand?

more...

Principles of Software Development

posted on 2019-05-27

Working at an institute for computational biology, my colleagues and I deal with computer code almost every day. Yet none of us is a trained software developer as such – we are biologists, physicists, and mathematicians who happen to have learnt a bit of programming on the side. Some of us (like myself) got into it as a hobby, most picked it up along the way. So over the past few weeks, I started to ask myself a question: “How can we become better at developing software?” The next question came naturally: “Well, what is good software development?”

more...

Basic Traffic Analysis with Unix

posted on 2019-04-15

So you want to know how many people visit your website, but don't want to set up Google Analytics or anything like that? That at least was the situation I found myself in when I started this blog. Turns out, if you just want a daily number of visitors, standard Unix tools are perfectly sufficient.

more...

Project Ecologia

posted on 2019-04-08

Six years ago, I was looking for a new programming project. My dream was to create a self-sustaining “virtual world”, a little ecosystem inside my computer. This was long before I knew there actually was a field called “ecological modelling” (which I now happen to work in), but the idea intrigued me. So I set about the task with all the confidence of one year's programming experience. I failed. But a year later, I picked up the pieces and started over, eventually producing a graphical ecosystem simulator – Ecologia.

more...

Discworld MUD

posted on 2019-02-05

Imagine a game that lets you earn your way by writing poetry. A game in which you can go on hunting expeditions against fearsome monsters or campaign to be elected magistrate. A game where players run shops and newspapers, and organise tea parties and capture-the-flag tournaments. A game that has been online and in continuous development for almost three decades. Welcome to Discworld MUD.

more...

ASCII Art Animations in Lisp

posted on 2019-01-07

ASCII art may have fallen out of popular favour a couple of decades ago with the rise of “proper” computer graphics, but they are still fun to create. Having made a few myself, I always had the itch to not just create a static ASCII image, but to try my hand at an ASCII animation. Well, I finally did it. In this post I will show you how to create a very simple animation using Common Lisp and the classic Unix text-user-interface library, ncurses.

more...

An Impression of Common Lisp

posted on 2018-12-04

Common Lisp is a lovely language to work with. Although it has faded into an unfortunate semi-obscurity on the modern computing landscape, it is still a powerful and elegant language that is a joy to use. I've had a lot of fun playing around with it and discovering more about it in the past two months, and wanted to record and share some of that in this post.

more...

MooBreeder - a simple breeding game

posted on 2018-11-22

Recently I have been doing some teaching at a secondary school. Accordingly, I have been on a constant look-out for ways to make my lessons more engaging. So when the topic of selective breeding came up in one of my Key Stage 3 biology classes, I thought I might be able to turn the whole thing into a game.

more...

Blogging with Lisp

posted on 2018-11-21

So, I finally have my blog up and running. After several years of thinking: “I really ought to write an article on that thought.” 1 And two afternoons of trouble-shooting Linux, Lisp, and LAMP problems.

Because of course, if I was going to write a blog I would host it myself. And Wordpress is overkill for what I am planning, all I need is a simple static site generator working from markdown. How hard can it be?

more...

Unless otherwise credited all material Creative Commons License by Daniel Vedder.
Subscribe with RSS or Atom. Powered by c()λeslaw.