Gb Se

Skills

Below is a list of various computer languages and technologies that I know, roughly sorted by amount of experience. If they mean nothing to you, looking at my previous work in the portfolio should give you a good enough overview of what my specialities are.

Click on a language/technology to get a description of it, and some notes on my experiences and skills.

Computer languages (roughly by skill)

  • C++
  • C++ is probably the world's next-to-most common programming language. It is a general-purpose language, which is used for most operating system, games and applications. Lately (past 5 years or so) there has been a trend to begin to write those three classes of software in higher-level languages, as C++ is a difficult, low-level language close to the hardware. However, parts of applications that require high performance are likely to be written in C or C++ for a long time hence.

    Basically all game programming except game logic is traditionally written in C++, and it is the language I have used throughout my education. While I would not claim to be a template wizard, I've done my fair share of hacking in C++.

  • C
  • C is the world's most common language, and is the basis for C++, Objective-C and many other languages. A fundamental understanding of C is critical before you can even begin to understand all the languages built on it (like C++).

  • Objective-C
  • Objective-C is the main programming language for writing Mac applications, similar in function to C# on Windows. Cocoa is the framework of functionality which you use to actually make things happen, similar in function to .NET on Windows.

  • Ruby
  • Ruby is a popular interpreted language, most used as a web development language in the Ruby on Rails framework. While new, it is excellent for very quickly building well-structured applications.

    I use it in all my new web development (like for example this very site). In Robot, I used Ruby as an embedded language to run all game logic (see more about this usage under Python); this is fairly uncommon: few applications embed Ruby as it is a rather slow language (performance wise).

  • PHP
  • PHP is the world's most common web development language. It takes a hands-off approach similar to C++, in that you have to provide any structure yourself; PHP does not help you to write a well-designed, maintainable application.

    Personally I use it for simple things and quick hacks, and use Ruby on Rails for real application development. However, since Rails is very new, most of the applications in the portfolio are written in PHP.

  • Python
  • Python is another interpreted language, but much more widespread than Ruby. It is popular for utility and server applications, but is also used as a web development language, and desktop applications (but that is rare). It is fairly common to run Python inside a C++ application, to make it drastically easier to write less time-critical parts of the application. For example, in Rymdvarelser Mot Soldater, we let Python run all the game logic.

  • Javascript
  • Javascript is the language that makes these boxes animate so nicely. It is the primary way to make web sites interactive; almost all content you see on a web site that isn't completely static is either Javascript or Flash (and flash's programming language is ActionScript, which is JavaScript with additions).

  • Java
  • Java resembles C++, but adds garbage collection and other technologies that tremendously eases error-free programming. It is used for cross-platform (that is, both Mac, Windows and Linux) desktop applications (e g the Blekingearkivet apps), cell phone games and utilities (e g my theoretical game), and web development (of which I have no experience).

  • Lua
  • Lua is a little-known interpreted language, aimed to be as lightweight as possible. It is very popular as an embedded language, and is used to script many games and commercial applications. Lua is the language me and Frank embedded into LuaPlayer.

  • SQL
  • SQL is a language for interacting with databases; you don't write applications in it. You need to understand SQL in order to work with databases.

    While I know enough SQL to do moderately complex database queries, I'm far from an expert in the field. It's an area I'd very much like to learn more about, however

  • C#.NET
  • C# is Microsoft's answer to the increasing unmanageability of C++ code. It is very similar to Java, in the respect that it takes C++ and then adds many higher-level features such as garbage collection. C# is a much more dynamic and modern language than Java, however. It is the main way to write modern Windows applications (although very many still write them in C++, because that's what they know).

    I know C# and have written a few apps in it, but that's about it. I'm curious about it but haven't had the time to learn it properly.

  • AppleScript
  • AppleScript is the native language for automating tasks in MacOS.

  • (Visual) BASIC
  • BASIC is a very old language meant as a beginner's programming language. It is still used today in Windows applications in the form of VisualBASIC and VBScript, even though the language is very, very outdated, slow and hard to maintain. I haven't written BASIC for many years.

  • bash shell scripting
  • bash, or shell script, is the scripting language used in Unix systems. It's a horrible, horrible language.

  • x86 assembler
  • Assembler is about as low a language as you get. All other languages ultimately translates down to this language. Very rarely, programmers drop down to assembly to write something very optimizied or processor specific. I know enough assembler to barely get around.

Technologies
(no order)

  • Ruby On Rails
  • STL
  • PSPSDK (homebrew PSP)
  • OGRE
  • Cocoa
  • OpenGL
  • FMOD
  • CoreAudio
  • J2ME
  • J2SE
  • ...
  • XHTML
  • CSS
  • Word
  • Excel
  • Mac OS X
  • Unix
  • ...

Summary

I would say my areas of expertise are:

I'm also very much into User Interface design and usability in general.