About this Page

This is for things that don't quite fit anywhere else!

Thoughts and Opinions

Tabs vs. Spaces

I'm of the opinion that tabs should always be used instead of spaces when it comes to indenting code, for two main reasons:

  1. Tabs always have a semantic meaning as an indent, spaces are just whitespace
  2. Tab size can be adjusted based on personal preference / needs, spaces cannot

As I see it, there isn't really in advantage to having spaces, whereas the semantic meaning and customisation afforded by tabs are two real, tangible benefits.

One thing that really annoys me is editors that replace tab inputs with just four spaces; not only does it impose what I see as a lesser option onto the end user, but it just seems like an overly convoluted way of replacing a perfectly valid existing solution with multiple characters.

This is another of my little Python bugbears, it has a strong preference for spaces over tabs. Though tabs are (so generously) tolerated, the official stance according to PEP-8 is that spaces should be used. As someone who prefers tabs, this makes editing existing code very irritating, as I must match the existing indentation style, otherwise Python refuses to run the code.

VIM or Emacs

VIM all the way! It's a pretty simple tool (at least, in the way I use it) that allows for genuine speed improvements over a convetional modeless editor, with a little experience. I just don't really get Emacs, but I do understand the appeal for the PROPER hacker types.

I don't use any of the clever features of VIM like syntax highlighting (not much benefit on a monochrome terminal anyway), and in fact I still use the arrow keys for moving the cursor - heresy, I know! Most of the time-saving VIM features I use are the different ways to enter insert mode which place the cursor at certain places, as well as the line copying and pasting ("yanking" and "putting" in VIM-speak), as well as the find and replace facilities afforded by SED integration.

VIM is great for what I want to do, and all I want is a fast, simple(-ish) little text editor.

Python

I am not an expert programmer by any stretch of the imagination. The bigger projects I've done were written in C (2nd year undergraduate robotics assignment), Verilog (dissertation), Java (multiple modules for my degree), and Python (odd personal projects, including the blog generator).

My most enjoyable programming experiences have been in C. I enjoy the general philosophy (small, lean, but capable and extensible), as well as the workflow (at least, for projects of such small sizes as mine - my largest C program was a single file of 693 lines). I love that C provides relatively little abstraction for a high level language, and I think that smaller degree of abstraction is really important in education, on top of being something I just personally admire.

My main gripes with Python are largely philosophical (again, this is from the perspective of an armchair computer scientist). Python is naturally a big language, with an awful lot of capabilities built-in. This isn't fundamentally a bad thing - in fact, it makes Python an amazing language for all sorts of projects; so many things really do "just work"! For these reasons, I do understand why Python is THE language for teaching programming; it's just most bang for your buck as far as languages go, you can build impressive, useful things relatively quickly.

HOWEVER! Python's inherent big-ness makes it, in my opinion, a much less fun language to program in. When programming, it is generally best practice to use existing implementations rather than creating your own, and Python enables this by solving so, so many problems for you already. For professional, practical programming, this is great, but when learning the fundamentals of computer science, I think it's important that you implement things yourself, rather than having it all done for you already. Another drawback of this is that a lot of Python programming consists of looking through the documentation to find existing solutions, rather than just getting on with the actual programming. Again, this isn't so much of a problem for experienced progressionals, but for the Python beginner it's a real problem.

I'm quite wary of criticising Python too much, as I don't want my attitude towards it to be some kind of dogmatic, radically lean approach to computing (everything should be in C, everything is bloat, yadda yadda) - that kind of mud-slinging mindset isn't at all constructive. I think the points I've made are fairly measured and reasonable.

Miscellaneous Silliness and Other Gubbins

My sincerest, unprompted thanks must go to Lewis, for the provision of Delicious Ribs (pictured below) from Amadeus, in Brussels.

Delicious ribs from Amadeus, Brussels.

Below is a picture of my beautiful robot illustration, drawn during an all-nighter spent programming my robot. If you came here after following the link on the board (or the Blackboard page), welcome! I hope CS260 is treating you well (and your little robot isn't giving you too much trouble).

An evil robot.