I’ve been fairly quiet lately, and there’s a good reason – I’m going into the money time of the first (and possibly last) stage of my indie developer carrier. I’ve let myself be very lenient with my time, branching off into many different projects all the time, and I like it that way, but the time has come where I need to start making money, or getting an actual job. So here we go – I’m dedicating this month to my one commercial project (and one more long-term project, still in early stages). If by the end of February I don’t have a demo to publish, nor feel like I’m ridiculously close to having one – I’ll know I’ve been defeated (at least for now) and go get a job. So, hopefully you’ll hear from me in a few weeks, with some good news.
As you may have figured out from my blog so far, I like books. I like reading, I like recommending books I appreciate, I like hearing other people’s recommendations, and I like discussing books I’ve read. For all those reasons, I now have an account on LibraryThing. If you want to know what I’ve been reading, or tell my what I should be reading, you’re welcome to visit.
I’ve been writing software for quite a while now, and it’s about time I started thinking about something I’ve neglected – internationalization. It’s generally a simple matter – make sure that all pieces of text you have in your software are gathered in a single place, provide different versions of those texts for different languages, and let the user choose their preferred language. Usually it becomes more complicated than that, but it’s about time I’ll have at least the basic stuff working.
I don’t know why I’ve delayed it for so long, but now I finally did it – I added a language choice to Terramancers, which is now available in both English and French. Which means that from now on, everything I publish will be available in every language I’ll be able to translate it to.
By the way, this is a very appropriate time for this – I had just finished my first full-length book in French (and quite a nice book it was). I’m still far from fluent, but it will probably be possible soon to start calling me trilingual.
 I’m sure some experts would punch their monitors after seeing internationalization defined like that. But for a small game, I really don’t think any more than that is necessary. It gets more complicated with bigger software.
This is it – after some exhausting work, I submitted my entry to the Liberated Pixel Cup. Unfortunately, lack of time made me give up some elements I really wanted, like music and character selection (right now characters are selected automatically).
You’re welcome to try it, right here.
I have a little decision before me. I’ve done some nice work on my Liberated Pixel Cup project, but after losing almost two weeks because of recent events, there’s no way I’ll be able to complete what I wanted. So right now I’m looking into some other options – maybe I’ll try something a little less time-consuming. With a week remaining, it’s becoming a little bit like the Experimental Gameplay Project – luckily, thanks to that I have some experience in making a game within a week (and of course, I’ll try to use as much as possible of the code I’ve already written). Tomorrow I’ll know for sure what, if anything, I’m going for. Anyway, I’m pretty sure I’ll still try to have something to submit by the end of the month.
I’ve had a new challenge keeping me a little busy for the past two weeks – helping my mother with Microsoft Office for her new job. It’s actually not entirely new to me – a few years ago I volunteered in a community center, helping with computer lessons for adult populations (many of them Haredim, so quite likely saw very few computers in their lives). And the concept is the same – teaching computers to people who have never used a computer in their lives.
Obviously, it can be quite frustrating sometimes. Helping people with Microsoft Office is pretty much the bane of computer geeks and computer science students everywhere. However, I think it can also be a pretty educational experience.
First of all, it’s an exercise in patience. Some people see it as a bad thing, but I like to think about it like training – sometimes you go to the gym to exercise your muscles, and sometimes you teach someone Office to train your patience. And I consider patience to be a strategic asset in my life, much more than my muscles.
But more importantly – Being a computer programmer, and a geek in general, and living in a developed country, it’s easy for me to forget how many people out there have absolutely no idea about computers. So really, it’s a way to step out of a bubble and back into reality. It shows me how many things I take for granted when I use computers: Often when someone has a problem I’ll try to explain it in terms of files, and checkboxes, and double-clicks – but then I realise that these terms are not really that obvious, and some people don’t know what a checkbox is, and don’t know that a double-click always uses the left mouse button, and don’t know that a Word file and an Excel file are the same thing when you want to copy or delete them.
The most interesting thing about it is realizing how those things are not really neccessary, and maybe could have gone differently. If computers were developed separately by five civilizations with no contact between them, would they all have files and folders? would they all have double-clicks? Would they all have first-person shooters and real time strategy games? I think it’s easy to imagine an alternate universe where things would have gone just slightly differently, and all the Starcraft pros of today would have been playing something completely different and convinced it was the best game that could possibly exist.
So to conclude, my advice – if you’re a programmer and want to make something truly creative, that challenges existing habits and appeals to new populations – go help your mother use Microsoft Office
 Not that they’re not important – another thing I’ve seen too many computer geeks neglect.
 Definitely not. Who came up with this ridiculous thing in the first place?
Do you know how, when you’re reading a long book, you read a little bit every day, not spending too much time at once on it? And when you’re close enough to the end you feel like you have a chance to finish it in one day, you allow yourself to read all the way to the end, even if it takes you several hours?
So I finished Anathem today. Therefore I didn’t have much time remaining for development… I did get a little going – mostly the replaying mechanism, and some more for the combat engine. I was hoping to finish the day with characters appearing on screen though, but that will have to wait for tomorrow.
The book, by the way, is quite recommended. Not the best I’ve ever read, but certainly worth the time (which is saying something, because it’s a lot of time. And I’m not easy to please when it comes to books).
There’s a little piece of software I think should exist, and I’m trying to decide if I should write it, or if there’s a way to use something already-existing for it.
The need – One of my hobbies is playing the guitar. For Hebrew songs, I use the excellent “Israeli chord book“, for others, I search for chords in the popup-infested chord sites around the Internet which all seem to have been designed by late 90′s web designers, and for songs that don’t appear (or are completely incorrect, which is not uncommon) in any of the previous locations, I figure out the chords by ear (not easy, since I’m not much of a guitar master) and write it in some transient notebook, ready to be lost a week later.
So what I’m looking for is a computerized chordbook – something that provides the following features:
- Inputting songs without worrying about formatting: If I want “Cm” to appear above some word, I don’t want to put a bunch of spaces until it looks well (and then, redo it every time I change the font or something). Inputting the chords should be done inside the text, and the display should worry about showing it properly above the line of text.
- Full support for Unicode and bidirectional text.
- Sorting, searching and tagging of songs.
- Ability to export to common text formats (PDF?)
- Ability to mine data (for example, if I want to ask “what are the three most common chords in Chinese-language reggae songs”, it should be reasonably easy to write a script that answers it).
Now I need to find: Is there a possibility of achieving any of this with existing software? I thought about LyX, or some other LaTeX-based solution, but I’ve never been able to get those things to work properly with Unicode and bidirectional text. If I’m going to develop something myself, should it be a full application? Or maybe some sort of XSLT script over XML input could work? I’m not sure. If anyone has any ideas, I’d love to hear.
 That is to say, 15-year old boys with a “Learn HTML 2.0 in 15 days” book.
After about 10 years of thinking about making games, and writing some code once in a while but not producing anything – I published two games in the past few months. This didn’t happen because I suddenly achieved enlightenment for the Tao of game programming, it happened because I was also not working at the time, which means I had time for making games.
Unfortunately, this can’t go on forever. I have rent to pay and food to buy, which means I’ll have to do something that earns money. But get a normal job again and have no time for my hobbies, including game programming?
So I decided to try a daring move. I’m going to try stepping in the commercial world – after making a tiny free game, then a small free game, I’m going to try to make a serious game and sell it. I think I’m ready for it.
Free software supporters, fear not – I think this is the best possible move for my free software career as well. Instead of going back to having a boring job and no time to work on games (as seen in my zero contribution over the past 10 years), if I succeed commercially I plan to both adopt the John Carmack way and set everything free after a suitable amout of time, and to still make some contributions directly to free software when possible. All it takes is for me to succeed.
Time to get to work.