Tuesday, July 31, 2007

Getting Started with Blender 3D and XNA

Glenn's posted a comment on one of my Blender posts to an article he's written about exporting Blender's 3D models into Game Studio Express.

Check out Getting Started with Blender 3D and XNA for more information.

I'll need to make some models first, but when I've done that this article should provide some much needed assistance.

Thanks Glenn

Monday, July 30, 2007

Brilliant Blender Tutorials

Just starting out with Blender and I have just discovered something that might be really obvious to other people out there. Linked from the Blender website is the Blender 3D: Noob to Pro guide, which I am finding very comprehensive. I feel I am beginning to get somewhere with it, rather than just staring at a very complicated looking user interface.

I'm only up to Modeling a Simple Person, but it's looking very helpful indeed.

Blender - Free 3D Modelling Software

I've had an anonymous comment left on a post in which I asked if anyone knew of anything free I could download to create some 3D models for an XNA game I want to start.

The comment suggested Blender, so I've downloaded it and given it a go. Seeing as I've done zero 3D modelling before it's going to be a steep learning curve, but there seems to be tutorials to walk you through most of it. There's DirectX's .X format in the Export list as well, so hopefully this should be all I need.

Thanks for the heads up who ever you are.

Friday, July 27, 2007

"User" terminology revisited

Julian's added a comment on my previous post asking what we call "users" if we want to get away from using that term explicitly.

There are comments on the original post that I linked to that discuss some alternatives, with most people concentrating on the relationships between the two parties. Tim Harrion's remark "How about terms like readers, members, contributors, visitors, or guests?" is particularly apt in this regard.

Companies have customers, blogs have readers, forums have contributers, a website has visitors. Just because they are using a piece of technology to perform some task doesn't necessarily mean that they should be referred to solely as "users" of that technology.

People don't become Esendex customers to use an ASP.Net web application to submit an SMS message to a mobile phone operator, they become customers to send text messages.

I agree that it's not always going to be clear cut though. The term "user" is so broad it encapsulates a number of relationships, and there are situations when it would be pointless to call them anything but users. But the point that Josh was raising to was to stop thinking of people using technology, and to instead concentrate on what people want to do with your software.

This may seem like a petty difference, but how many times have the software developers among you implemented something that you think is perfect and works flawlessly, only to be told by your customers "Well, that's cool, but that's not how we work"?

Designers and developers should always be looking at what tasks people want to carry out rather than simply showcasing new technology. Getting away from calling those people "users" can help in directing attention to doing this.

Thursday, July 26, 2007

Download XNA Card Game Code

Please feel free to download the code for the card game I wrote in XNA. It's not the best card game to play, and I have no idea whether the code is correct from a gaming point of view, but if you want to take a look at a possible way of developing a card game, then you're welcome to take a look.

If you're looking to write a card game and you need card graphics, then some are included in the download for you to use.

If anyone finds it useful then please let me know. The 3D game idea I had has fallen through a little as I can't find any free software that will allow me to create my own simple 3D models. If anyone knows of one I can use, then let me know about that as well.

Interesting point about "users"

Interesting post about using the term "users" when refering to people who visit your website, or are really your customers:

Nobody talks about users of dishwashers, or users of retail stores, or users of telephones. So why are we talking about "users" of computers, browsers, and software?

Try, just for a day, to stop using this word. You'll be amazed at how differently you think about the world.

Wednesday, July 25, 2007

My XNA Card Game - please wait a moment

Ken's posted comments on a couple of posts asking for the code for the card game that I wrote in XNA. I'm glad someone asked as I'd totally forgotten I'd said I would make it available.

It's woken me up from my XNA slumber, I've just had lots of things happening recently that I haven't had chance to look at it as much.

I've packaged up the code as a download, but I can't find the login credentials for my FTP site right now, and it's getting late and I need to go to bed.

I swear I'll upload the code tomorrow evening (UK time) and post a link here. So just watch this space.

Thanks

Thursday, July 19, 2007

There's no water here today

Most of Nottingham city centre is currently without water due to a leak that Severn Trent are struggling to find. Water's been off since we got into the office this morning, but luckily we've got water in the cooler still, so drinks aren't a problem. Toilets, on the hand...that's another thing ;)

So, while parts of Yorkshire are under water, here in Nottingham we've got officials scratching their heads trying to find where the water's gone.

But Esendex is struggling on regardless, just as long as the power holds out we'll be fine. Hope that's not tempting fate... ;)

Wednesday, July 18, 2007

Is Log4cpp new, or has it been abandoned?

Any C++ programmers use Log4cpp? For C# we use Log4net for logging, and when I found that PC SMS used Log4cpp as it's logging framework I just assumed it would be as easy to configure as Log4net.

But Log4net has a very active user community, and the mailing list gets regular visits from the developers Ron and Nicko. No so with Log4cpp.

All I needed was a really simple basic setup to log to a file. Could I find anything? Well, would you find this useful, which says "The configuration file format is undocumented and may change without notice". Ok...

Luckily I found the log4cpp.properties file buried within the tests directory of the log4cpp download, which goes some way to giving the example I needed.

So, if anyone else is searching for the simplest Log4cpp configuration to log to a file, just use this:

log4j.rootCategory=DEBUG, FILE

appender.FILE=org.apache.log4j.FileAppender
appender.FILE.fileName=c:\filename.log
appender.FILE.layout=org.apache.log4j.BasicLayout

And no, that's not a typo, and I haven't cut and paste from the wrong file: Log4cpp uses Log4j stuff in its configuration file.

Revisiting comments

Back in May I wrote a response to a Slashdot article about writing comments. The jist of my response was that most times you can get away with not writing them if you write self-documenting code.

And the important part of this is the "self-documenting" part. C# lends itself very well to being written in an easy to read fashion. I can't say the same about C++.

Like most computing graduates I have had exposure to C++, but all my commercial (i.e. real world) experience has been in C#. Today I had to look at C++ code, and I didn't enjoy one bit of it.

Esendex's PC SMS download is a C++ Windows application that sits in the system tray, notifies you of new inbound messages and allows you to send SMS in much the same way as you would an email. It's been around for a while now, but I can't say I've worked on any part of it.

We had a customer today who reported that the application was having trouble with the initial connection. Having no experience in commercial grade C++ applications I found it very difficult to track down even how to switch logging on. A few comments here and there would have eased this greatly.

But I still don't believe source code should be swamped with comments. When you're working with a fluid code base (as you do with XP), code is continuously moved around as the design changes, and no one wants to maintain comments as well as code.

Thursday, July 05, 2007

Going Global

I must admit I wasn't expecting many people to read this blog when I first set out, but looking through my Google Analytics reports I've had visits from every continent now.

Judging by the stats most of you are just viewing 1 page (with the post about EventType dr20r3 leading the way) and are new visitors, but I don't mind that as long as you're finding something useful while you're here.

The returning visitors among you may have noticed a new search bar in the corner, and I debated with myself for ages over whether or not to include it. But, after manually scrolling through (often poorly labelled) posts, I thought it was about time to put one on and see how it looks.

Just make sure you select the "My Blog" radio button if you want to search just my blog.

Wednesday, July 04, 2007

New Developers in an Agile Team

Two new developers, Jonathan and Andy, have started at Esendex this past week, both fresh from university. I'm sure they'll start their own blogs soon enough, so watch this space.

It's got me thinking about the best way of introducing them to the work that they will be doing so that they can be productive as soon as possible.

Esendex developers are very agile for the most part--we're able to turn out new and updated tested functionality relatively quickly--but while this is great for the company and our customers I'm sure it must be overwhelming for a new starter.

Documentation helps, and we do have some which explains (in loose terms) the architecture of the internal messaging system, and how our system's tiers hang together. But for the most part knowledge is passed verbally, if only because the entire system is far too large to describe in documentation. After all, we'd do nothing but write documents if we had to document everything.

So the way we have introduced new developers before (and how I believe Andy and Jonathan will be introduced this time), is to get them exposed to the code as soon as possible, and let them ask questions so they get things straight in their own minds.

Pair programming and test driven development helps here, so they'll always have someone to direct questions at, and the tests should make it clear if something will break another part of the system.

I guess the key is to not flood them with too much information to begin with. People can only take in so much information at any one point, so introducing someone to part of the system they are not currently working on will only complicate things.

If anyone has any suggestions, or stories about what you do in this situation, then please leave a comment.

Alan Johnston Released

Alan Johnston has finally been released. Great news for him and his family who must have been going through hell these past 114 days.

I'll leave the banner on this site until he's back home safe with his family.