Older blog entries for elanthis (starting at number 200)

Cross Platform UIs

Raph: please do duplicate the UI for each platform. That is 100% the correct thing to do. Even when you have a cross platform library (and BTW, GTK+ runs natively on Windows and runs in X11 on OS X, and it's possible to port GTK+ to Aqua if you really wanted it), you have to understand that that doesn't mean that the app actually behaves properly on each platform.

Take something like OpenOffice.org. It works, looks, and acts great on Windows. Bring it to Linux and it still works, looks, and acts great - as a Windows-based UI. Same on OS X. The app feels completely alien and out-of-place anywhere but Windows.

Cross platform UI libraries can't fix this fact. They can let you write code that works on multiple platforms, but they can't let you design user interfaces that work on multiple platforms. At least none of the currently popular cross platform toolkits.

Your absolute best bet is to do what the Abiword developers did - split the UI code from the main app, and write UI code for each target platform. That way, not only does it run on OS X, it follows the Aqua HIG and generally looks, acts, feels, and behaves like any other well-designed Aqua-native app. On GNOME, it looks and acts mostly right. On Windows, you can't tell it apart from any other (properly) Designed for Windows app. Same for the other platforms it supports.

There is just so much more to developing a GUI than just how to draw buttons. That's all a technical solution (i.e. a toolkit library) can solve for you - the low-level details of getting widgets on screen and responding to events. When it comes to layout, widget choice, behaviour of widgets, interface integration, and so on, you really do need to redesign the UI for each target platform. Otherwise you end up with a monstrosity that feels alien and uncomfortable for users of all platforms other than your main target.

If you do want a technical solution due to development time, stick with GTK+. Just make sure you use libglade. That way you can ship a different .glade file for each platform. Plus, since it's rendering engine is replaceable (themeable), it can look native on all major platforms. (It's feel might be a little alien, but it should be Close Enough(tm) in most cases.)

[#] Comments

KANAR and AweMUD

<img src="http://www.awemud.net/people/elanthis/kanar-me.jpg" alt="Daedron at KANAR" style="margin: 1em; float: left; border: 1px solid black; margin-top: 0px;" />

Someone snapped a surprise picture of me at the last KANAR event. There are a couple others that were taken (which were not surprises), but surprisingly, the surprise photo is my favorite. That's a lot of surprise.

Yesterday I drove up to Port Huron to play even more KANAR. (Ya, I'm a geek, get over it.) Another player (who was the GM for a number of years) was running a special one-day module ("adventure") at his parents' farm, and asked me to come and NPC for him. It was fairly fun, if incredibly wet and rather cold. Something I'd definitely be willing to do again, except for maybe the two hour drive part. I'm not very fond of sitting in one place for a long time. If I can't get up and walk a few times an hour at the minimum, I go nuts. Not to mention the pain my back ends up in.

Two more weekends is yet another event. Yay. ^_^ I still wish these things could run every other weekend or so. Except for the whole bit where I rather need the time on my weekends to do other things. Ah well.

I'm finally getting back into the AweMUD work. The other KANAR web team members are working on various things (which I'm not much in agreement with, but oh well) so I'll let them deal with things until they need something new coded up, or I get sick of the bugs and poor design and step in to fix things.

I'm actually planning on getting (drumroll please) magic affects in AweMUD coded. As in, I might start writing the code as soon as I'm done posting this. Whoo!

Affects will work something like so: a group of affect detail objects will be made, and then stored as a single affect object. This affect object will then be stored in a list on the characters. There won't be any built-in logic for duplicate affects or anything like that - the magic system will deal with that if it wants to.

The affect objects will hold some meta-data to be used by the magic system, or nano-tech system, or whatever system is used to apply affects in the actual game. Things like the name of the affect, the class of affect (magic, tech, psionic, natural, poison, etc), the level of the affect (arbitrary number to be used for duplicate/stacking rules), granter of the affect (caster of a spell, whatever), and duration.

[#] Comments

KANAR Site

I've been getting a lot of work done on the KANAR web site. I'm the main coder, and somewhat minorly a designer, of the new site. It's been a lot of fun. I'm not sure why, but working on it seems more fun than working on one of my real-job sites, even though it's doing the *exact same thing*. I'm thinking it might be the meetings. Real live, face-to-face meetings, with other coders and designers, who are all competent at what they do. I sit there on my iBook hacking on the site (and actually listening and responding to the meeting conversation - I'm getting damned good at that) while the content managers go over the stuff they need to see online, the designers go over some cool design ideas, and I code up whatever they happen to be discussing without them knowing it and showing them a functional demo by the time they're done. ;-)

If you're wondering why AweMUD work has slowed, that's why right there. I just have a few more main bits of the site that I personally need to hammer out (being the only real coder at the moment; the other coder is also our manager until the end of the year, and he's swamped with management stuff), and then the designers and content managers can handle most of the work from there on out.

I'd also like to give some "mad props" to Jesse, one of our two designers and also a personal friend, who came up with a gorgeous and theme-fitting main design for the site. He's also going to be doing a lot of various graphics, like portraits of some of the characters using the same art-style and color scheme as the site graphics, and tons of other various little tid bits. The site really does look amazing.

It'll hopefully go live in a couple months, and then I can show it off. ^_^

[#] Comments

Political Spam

Today I got a very interesting type of spam I've never seen before. It was a political advertisement. An anti-GW advertisement.

The message itself was what you'd expect from someone with the spammer mentality. As much as I absolutely despite GW as a president, the message made even me mad - at the person who wrote it. It's filled with a number of incredibly questionable "facts" (I cannot verify many of them). I'd love nothing other than to see GW lose the election, but if he loses because people are voting based on lies, then democrary has failed.

My old high school's motto was "democracy can only work when our country's citizens are educated." That doesn't just mean that the citizens have a high school level (or even college level) background. It means that the voters have to actually know the facts on what they're voting.

I have some friends who are voting pro-GW for the absolutely stupidest fucking reason I can imagine: Kerry seems softer. What the hell does that have to do with how you run a country? These same people call themselves Republicans despite that, if you ask them their opinions on all the major (and a number of minor) issues, they are more often against the usual Republican stances. These friends of mine (who are great people otherwise) are a perfect example of what that high school motto was getting at. They are a detriment to democracy. Their votes, which are based on falsehoods and bogus criteria, dilute the votes of people who are voting based on the truth and criteria that are related to what makes a good president. What could be worse than someone who votes Republican because they think they're Republican, even though they're closer to being a Democrat or Libertarian? What could be worse than voting for any candidate based on their party instead of based on the actual candidate, since even GW doesn't agree with all Republican beliefs. The same is true for other parties and candidates; if you vote for Kerry because he's a Democrat which you think you are, even though you're closer to being a Republican or Libertarian, you're part of the problem.

This spam I received simply infuriates me. Because I know that there are a lot of people who might be pro-GW, and for perfectly valid reasons (even if I don't personally agree with them), who will get this or a similar message and change their opinion.

Leading the people like sheep to get rid of a bad ruler is just as bad as the people being led like sheep to vote for the bad ruler. Either way, the system stops being a democracy.

Damned spammers.

[#] Comments

Anti-Spam

Seems spam is getting a little more frequent on the blogs comments here. As a simple fix, I've added a feature that requires a simple math expression to be evaluated and the result entered. If the entered result is incorrect, no comment will be posted. The math expressions are always addition using two numbers in the range of one through nine. I figure, if you aren't capable of answering the question, you probably don't need to be posting to my blog anyhow.

[#] Comments

KANAR - Finally!

Finished up another KANAR event last weekend. It's been two months since the last, so I'm quite glad to have been able to go again. The next event is at the end of this event, on the weekend of Halloween. Always fun in a fantasy LARP where the GMs like to toss powerful undead out by the bucketload.

The weekend wasn't too bad. A bit light on the combat/NPCs. A lot of the people that usually NPC (including myself) were a bit pre-occupied as our normal characters. ::sigh:: There was especially a lack of low-level monsters, which would have been nice for our handful of newbies that came this event.

Of the two friends I wanted to drag out, only one managed to make it. He had a great time though, and plans on returning for the next event. Glad he enjoyed it.

[#] Comments

Ouchie

Eek, am I sore.

Friday was the day I increased most of the weights in my workout by 10 lbs., because I'd hit the upper limit on the lower weight settings. So that put me a little sorer than a normal workout. Saturday was a party in which I spent 4 hours in constant field battle with no breaks other than several short and quick gupls of water. Sunday was the last day of the Michigan Rennaissance Festival, in which I walked around all day on my already sore muscles. Thus, today, I'm having trouble moving. Seriously, I wasn't sure this morning I'd be able to get my pants on due to the pain in my back and legs reaching down to pull 'em up.

And you know what? I love it. Thrashing your body makes you feel so much more alive than sitting around doing nothing all day on a computer. Getting out and doing something is so much more fun than just sitting there. Sure, I'm in pain; that pain just means I spent my weekend well. ;-)

Festival was productive. Spent most of it sitting around talking to friends. Also picked up some items I've been wanting at last-day prices. Got a new ring (finally) for my left hand (a nice silver piece of celtic knots), a very small potion bottle necklace (useful for the LARP), and some leather armor for the upper torso (which I look quite sharp in). All in all, I spent <$400. ($290 for the armor, $40 for bracers, $30 for the ring, $12 for potion bottle, $17 for entrace fee, adds up to $389. If you add food and drink that might push it over $400, I guess.)

In any event, next weekend is the LARP again (finally), so I'm planning on having fun. I have a couple friends I'm making newbies of by bringing them out, hopefully they enjoy the experience. I'd like them to come out this event as their first versus the next, as the next it will be a lot colder, and it'll also be Halloween, meaning the big bad undead type monsters will be out, and those can be... painful. Nothing quite like a lich walking through town laying death spells on everyone in sight. Ah, the memories...

I didn't get crap down with AweMUD or my contract jobs this weekend. As I said above, I was having way too much fun doing physical activity sorts of things.

The fatigue I have right now tho from the combination of my recent insomnia and my exertions over the last several days is making it rather hard to get any work done now, though. Seriously considering heading home. Although, I suppose, I might get more work done if I stopped writing in the blog and just got to work... ;-)

To quote Ron White: "I didn't get where I am today by worrying what I'd feel like tomorrow."

[#] Comments

Bloody Joke

yeupou, haruspex: you guys need to learn how to take a joke. ;-)

Honestly, the only reason I picked MIT over the GPL was because I didn't feel like making a tarball, and didn't feel like copying the whole of the GPL license into the source file. Granted, I ended up not even feeling like including MIT license in the source file, so that reasoning is probably moot.

I'd relicense as GPL, except that also is too much effort, especially for a silly ~20 line python script.

I apologize to you for my sins against Saint Stallman and the Church of GNU. (Hint: yes, that too, was a joke.) ~_^

[#] Comments

Syndicate to Advogato

mathrick: I'm using a very simple Python script run from cron to export my WordPress entries to Advogato using the XML-RPC interface.

It needs a small table modification to the WP install; currently, it is just used to mark when an entry has been syndicated to Advogato. It does this by marking the post ID Advogato gives back when the post is made. Because it keeps the ID, it can theoretically allow you to edit a post in WP and have those edits get posted to Advogato as well. I haven't gotten my installation to do so yet, though. (I probably should, because I have made some edits to WP entries after they've been syndicated...)

I took the script, stripped out my user names and passwords, added some docs, and added an extra configuration option for the permalink address. I haven't tested these modifications, I may have introduced a bug, you are warned. Also, the permalink format is still somewhat hard-coded; you can easily change the URL, but if you are using a different permalink URL structure, you'll have to modify the code a bit. It could be made to just take a copy of the permalink format you enter into WP itself and auto-handle any WP permalink format, but I don't have much reason to do that myself. I'll take any modifications and put them on my copy; or you're free to officially maintain the script.

MIT licensed. The GPL can keep its dirty hands off my code.

You can download it here: repost.py

[#] Comments

Education

My younger sister brought home her progress report from school. On it are several scores the teacher thought we should know about, both good and bad. She thought it was important to tell us that my sister scored only a 65% on her "vacabulary" quiz.

We're writing up a progress report to send back to the teacher with my sister tomorrow. On it will be the scores: Spelling, 65%; Irony, 100%.

[#] Comments

191 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!