Archive for Technology

EA Origin, or: a Case Study in bad consumer experience

I don’t play The Sims. The premise holds a certain amount of appeal for me, and the franchise’s quirky sense of humour and artistic style agree with my aesthetic sense, but something about the gameplay – the ebb and flow of action and the effort/reward cycle the game creates – doesn’t quite gel into an experience that I enjoy.

But my wife, she loves The Sims. She has sunk at least as many hours into The Sims 3 as I have in Starcraft 2 and Civ 5 combined. She owns every major expansion that’s been released, as well as The Sims Medieval and its expansion.

So when her Sims 3 update failed halfway through, leaving the game in an unlaunchable state, she was understandably distressed. The game plus all of its expansions requires a lot of effort to reinstall; we’d be looking at several hours of installing, with user prompts spaced just far enough apart to make doing anything else impractical.

So, we researched the issue and discovered that the EA Download Manager needed to be updated before The Sims 3 could be updated. Now, EA doesn’t make it terribly clear that the Download Manager is a separate application; it is usually launched from The Sims launcher, and is skinned to look like any other menu in The Sims when this is done. So, we found and updated the EA Download Manager.

And it turned into EA Origin.

Again, nothing told us this was going to happen, it just popped up an EA Origin installer, without telling us what Origin was, why we needed it, or why it started installing it when we were trying to update EA Download Manager.

Some further googling revealed that EA Origin is the new replacement for the Download Manager, and that it (gods help us) is “our new digital playground”. Apparently it is EA’s attempt at Yet Another Online Distribution System. With social features! Look, EA, I hate to break it to you, but Valve already one that battle conclusively. We need another Games For Windows Live about as much as we need arsenic.

The fact that nothing told us, at any point during this process, what EA Origin was or why it was being installed is a huge oversight. The user shouldn’t have to use Google to figure out what the product you’re giving them is. This is a terribly sloppy user experience.

But it’s still not insurmountable. So, rolling our eyes, we proceed to install it, and then we go back and launch The Sims 3.

It launches EA Origin instead.

Why has this happened? Perhaps Origin serves as the new launcher? Okay, that’s fine – another crappy application sitting in the system tray, but we can at least live with this. Let’s just launch The Sims 3 through Origin.

What’s worse, EA Origin wants us to create a profile before it will let us do anything. This is obnoxious – yesterday, The Sims 3 would just launch and let us be happy. Plus, we already have a login on The Sims website, which is where you go to purchase downloadable content for the game. So this is Yet Another Login to Remember, and that’s annoying. With absolutely no warning, EA has added a ton of requirements that prevent us from playing a game that has worked fine on its own. Still, whatever. Let’s make this profile, get this over with.

Now we can just launch The Sims 3 from here, right?

Click. Click. Nothing happens.

Did we do something wrong? Is our profile not acceptable? Is EA just not that into us any more? We close origin, launch it again, try The Sims again. Still nothing. After a few more minutes of troubleshooting, we give it the old Windows solution – we reboot the machine.

When we get back to Windows and launch The Sims again, it launches perfectly, without seeming to care about EA Origin. It’s like nothing ever happened, and everything works just fine. The old Download Manager interface is even still there, and allows us to update the system. Apparently it just wanted Origin for authentication, or something?

But even though this story has a happy ending, there are still troubling implications here. EA did a very poor job of informing the user about what was happening here, leaving us to guess and google and hope that things would end up working. This was a very stress-inducing experience, which is not what you want when you sit down to play a game.

Also, the fact that they retroactively tied a single-player game into an online distribution platform seems both unnecessary and potentially problematic. When we bought the game, we did not do so with the understanding that an Internet connection was necessary for authentication or activation, for instance. We didn’t agree to have the game tied in to an account that may prevent us from updating if it is ever suspended or deleted for some reason (and these things happen; no system is free of errors). While we don’t have any reason to suspect that the game would become *unplayable* in the absence of Origin, this is still troubling.

In a post like this, I would, at this point, customarily make a plea to the company in question to be better, to stop disappointing its users, to be more transparent and try to foster trust. But I’m not going to bother. Because EA has proven themselves time and again to be unwilling to hear those pleas. Instead, I’m going to close with a question.

EA, what happened to you?

Comments (1)

Tabletop Roleplaying over the Internet

I have been playing tabletop roleplaying games since a fateful day when I was 13. I had gone with a friend to play Magic: the Gathering at a local video game shop that also happened to sell Magic cards. One of the players mentioned a gaming group starting up at the local Media Play.

Curious, my friend and I got a ride over to Media Play. There, I found a pretty large group of people playing Magic. I also saw an interesting sight: some people with books, funny shaped dice, and little painted figures arranged on a square grid. I watched for a few minutes, and quickly got the gist of what they were doing. I asked if I could join. The response? “Sure, we need a cleric.”

Thus began a hobby that has spanned half my life and cost a great deal of money. I have played a number of systems: World of Darkness, Cyberpunk 2020, Shadowrun, Rifts, Call of Cthulhu, Star Wars (the older edition that used d6s), homebrew systems created by various friends. But I always come back to D&D. It was my first system, and it remains my favorite through three editions of the game. In a lot of ways, it has grown with me.

In the last few years, though, I haven’t had many chances to play D&D. I was skeptical of 4e at first, and then spent a lot of money buying 4e books after Alexandra Erin convinced me of its merits in her repeated, impassioned blog posts about it (all of those links are excellent reading, even if you already know you like 4e). I sat on these purchases for months, planning games, even getting some people to make characters. But no game formed; the other players either didn’t have free time, or I didn’t have free time, or we were too far away.

The Search for a Gaming Table

Eventually I found a little free time to bring a game together, and since I couldn’t solve the problem of my friends’ lack of free time, I started looking to solve the problem of people who had free time, but were too far away. So I started looking for a solution to playing D&D over the Internet. Namely, what I needed was something known as a virtual tabletop. I started out with simple requirements: free is good, open source is even better. Since there was no good overview or comparison of the existing virtual tabletop options, I decided to make one. I’ll describe, briefly, why I didn’t pick each one (until I get to the one I *did* pick, of course).

OpenRPG – frustratingly deprecated

Years ago (about 10 of them), I tried using WebRPG as a virtual tabletop. I remember it having a somewhat cumbersome and over-engineered interface, and being frustrated with it on many levels. Still, it was the first thing in my memory, so it’s the first thing I looked up. Turns out it went open source a while back, and is now called OpenRPG.

Unfortunately, this was a non-starter. OpenRPG is written in Python (yay!), but doesn’t work with Python 2.7, which is the de facto standard in Fedora. I didn’t want to maintain a separate Python install for just one program (this is possible, but would be a pretty big hassle to set up), so OpenRPG was a bust.

Screen Monkey – expensive and cumbersome

The next program I discovered was Screen Monkey. Once again, Alexandra Erin was instrumental in this – she mentioned using it for her online games. Screen Monkey has one big advantage – for the players, it is browser based, so only the DM needs to install any client software. Unfortunately, that software only runs in Windows. So, I found an old install disk for Windows XP, and installed it as a virtual machine using KVM. Then I installed Screen Monkey Lite.

More bad news, though. Screen Monkey Lite turns out to be rather light on useful features. The biggest problem is that you can’t save your work – you have to buy the $35 version of the program to save and restore a session. The tools for hiding what the players can see was also fairly awkward. Awkward, in fact, is the word I would use to describe the program’s feeling as a whole. NBOS are terribly proud of their software ($35 proud) only to be outdone by multiple free and open source competitors. Sounds like some other software companies I know.

Gametable – RIP

Gametable looked promising, but doesn’t seem to be actively developed (there was a sourceforge project available a while back, and remnants of it are here, but it seems to be dead now), and it didn’t work very well for me.

Fantasy Grounds – pretty, but overpriced

Next up is Fantasy Grounds. I didn’t even try the demo once I saw the price tag – $40 for the DM-capable client, and $24 each for the players’ clients. One of my hard requirements is that my players not have to spend any money on the solution, so this one was right out. For a more affluent group, though, it might be a great solution. I will concede that it is gorgeous, and looks very well polished. Certainly a better contender for your money than Screen Monkey. And it has acknowledged, if unofficial, plugins for various game systems, including D&D 4e.

MapTool – the right balance

Eventually, I found MapTool, one of the applications created by the RPTools team. MapTool originally didn’t impress me – it seemed cumbersome and unwieldy. After working with it for a while, though, I found that most of its design decisions make sense, and that it is very powerful. Like most powerful toolkits, it is subsequently pretty complicated, and using it effectively took some practice. However, once I got the hang of it, it’s unbeatable. It’s more stable than any of the other open source offerings, and it runs well out of the box. It lets you use fog of war, individual player views (based on available light sources), and it lets you make maps in advance but have them hidden from the players until you are ready to show them.

Also invaluable was Dorpond’s 4e framework. This is a set of configuration settings and macros that work together to make MapTool work well with the D&D 4e rules. I have modified his macros a bit to fit my particular play style (notably, I prefer to let players roll their own initiatives), and am continuing to do so as I playtest them. You can find my latest version of the framework here.

Also, three caveat with maptool:
1. The network functionality doesn’t work with OpenJDK. Linux users will want to install the Java JRE instead. In Fedora, I just installed the jre RPM from Sun’s website, then edited MapTool’s startup script and added ‘export JAVA_HOME=/usr/java/default’ and ‘export PATH=\$JAVA_HOME/bin:\$PATH’ near the top of the file.
2. When starting a server, if you do not select ‘Use Individual Views’, the GM will not see an accurate version of the player’s view.
3. When you have tokens in the initiative list, players can only move their token on their own turn. Trying to move when they don’t have initiative will send them into an annoying endless loop of NullPointerExceptions. I’m hoping this gets fixed soon by the MapTools team, because it’s an obnoxious bug. Luckily, MapTools is Open Source – I may take a crack at finding that bug myself.

D&D Virtual Table – still cooking

Wizards of the Coast has recently announced a beta version of their own virtual tabletop – called, simply enough, D&D Virtual Table. It is only available to select D&D Insider subscribers. And, since D&D Insider is not worth the price for me personally (a topic worthy of an entire post unto itself), I have no idea whether it is any good. It would also certainly require every player to have their own D&D Insider subscription, so it breaks my stated rule. Still, it might be something to keep an eye on.

Adding Voice

So, now that we had a game table, we needed a way to talk to each other. Luckily, there is a readily available, cross-platform solution to this: TeamSpeak. Now, TeamSpeak isn’t open source, and it is not free if you want to host multiple teamspeak servers on one machine (or have more than 32 clients connected). But it’s great for a D&D game, which would never need those resources. It’s dead simple to set up the server in Linux, and the permissions management is very intelligent (and again, dead simple).

Let’s look at the options I didn’t choose for voice chat: Skype relies on a central server, and has a history of iffy privacy practices. Ventrilo offers a Linux server, but no Linux client. And the voice chat available in various Instant Messaging programs is either unreliable, or doesn’t work in Linux either. So, TeamSpeak it is, and it works great.

Passing Notes

The last thing I needed was a way to present textual information to the players. I do a lot of world-building and writing background material, and I want to make sure that is available to the players (at least, the publicly revealable parts). I also want to be able to give them things like notes that they might acquire, and possibly conduct some roleplaying between sessions if a session ends during downtime.

There are plenty of ways to simply share files, and these would be adequate. Dropbox could be used, especially for image files. Google Docs seemed like a pretty good way to share documents with players. After considering it for a while, I discovered a site called Epic Words. Epic Words gives you a journal system, so players can post in-character summaries of game sessions; this also works well as a means to deliver chunks of story-based text such as notes, riddles, etc. in a way that the players can easily access and remember.

Epic Words also has wiki-like functionality, and lets you define “references”, including NPCs and places, that will be linked automatically when mentioned in a blog post. This is an especially useful feature, because it lets me, as the DM, add content to the players’ writings without actually changing their creative work. It also gives you a private forum, which is perfect for the kind of between-session downtime roleplaying I have in mind.

Epic Words’ biggest problem is that it only allows you to run a single campaign without either upgrading, ‘retiring’ the existing campaign, or deleting it. And even with the upgrade, there doesn’t appear to be a way to share references / wiki content between campaigns (I don’t know this for sure, because I can’t really test that, but it appears to be the case). If I were running multiple campaigns, there is a slew of generic world history and other setting information I would like to share between campaigns. If you could make wiki pages independent of campaigns and then ‘link’ them in, that would be ideal. As it is, I happen to only be running one campaign at the moment, so I will have to cross that bridge if and when I come to it.

Final Thoughts

In the end, I ended up using three tools to interact with my players: MapTool, TeamSpeak, and Epic Words. I like this solution because it is very Unix-philosophy friendly – each tool serves one purpose. MapTool acts as our tabletop, TeamSpeak is how we communicate, and Epic Words gives us a handy place for wrap-up/reference/between-session play. The overall experience is pretty excellent; this is a good way to play D&D. It is better than I was hoping for, and even surpasses actual face-to-face play in some ways (I would love to find a way to use MapTool with a projector for face-to-face play).

Comments (3)

Gaming in Linux – my adventures with wine

I like playing games. My 1600-word review of Portal 2 should have been at least some indication of that. I enjoy console and PC video games, tabletop roleplaying games, and board games. But today, I’m talking about playing PC video games in Linux.

wine is not an emulator

Let’s start with the basics (then probably skip the middle ground and jump straight to the advanced stuff). Programs written for Windows or Mac OS can’t be run natively in Linux. By ‘natively’, I mean you can’t just click on a Windows application, or type its name on your terminal, and expect it to work. You’ll get an error like this:

bash: ./windowsprogram.exe: cannot execute binary file

There are a number of reasons this doesn’t work. The first and most fundamental is that Windows and Linux use different binary file formats; that is, the actual program code is structured in an entirely different way.

So why not just create a tool that can take one binary format and convert it to another? Well, to begin with, that would be pretty complicated, and probably fraught with problems; these binary formats are actually pretty complex, and include things like how to dynamically access libraries. Libraries are big chunks of code that are written separately from the program, then used by the program so that software developers don’t have to repeatedly write the same code to accomplish common tasks.

And that leads us to the real problem – Linux and Windows have fundamentally different sets of libraries available. Each OS has a large collection of system libraries that developers can use to interact with the Operating System in different ways. And there is very, very little overlap between these libraries. A prominent example of a library that exists only in Windows is Direct3D, which is used by a lot of game developers; it contains code that makes it easier to do a lot of complicated things with the graphics card, thus making it easier to make pretty, visually involved games.

So, if you want to run a Windows program in Linux, you would have to create a tool that could take a Windows program, make it “think” it is running in a Windows environment, and then take its library calls and somehow convert them into a set of library calls that Linux can understand. Direct3D calls, for instance, might be converted into equivalent OpenGL calls in Linux. This is exactly what the wine project does.

Wine has been around for a long time, and it has aged well (these are the jokes, folks). The latest wine codebase does a great job handling a ton of Windows applications, including a great many games. This article is an overview of my experience using wine to play games on Fedora.

blizzards and steam valves

My journey begins with wine-1.3.18, the version packaged with fedora 13. Wanting to play Starcraft 2, I ran the installer, which executed without a problem. The game itself also ran great, without having to make any tweaks at all to wine’s configuration. So, Starcraft 2 was an easy win. Blizzard’s games, in general, work great under wine. I’m not sure if Blizzard just avoids strange API calls, or if wine has a lot of developers interested in making certain Blizzard’s games work. Either way, this one was phenomenally easy.

The next thing I tried was Valve’s Steam client. If you’re somehow reading this from the past, or Steam no longer exists in the future (or you have recently emerged from a coma), Steam is a game distribution platform. You can buy electronic copies of games, install them in steam, and play them. Many games also support achievements and server-side syncing of your game data. This makes gaming on multiple computers really nice (as long as you’re the only one using Steam, that is). It also has community features; you can see what your friends are playing, join them in multiplayer games, etc.

So, I have quite a few games on Steam, and before I can try to run the games under wine, I have to get Steam to run. This was a little bit trickier than running Starcraft 2. First, the Steam installer is a .msi file, which requires the msiexec tool to run. Luckily, recent versions of wine come equipped with an open-source clone of the msiexec tool. So, all I had to do was:

msiexec SteamInstall.msi

Once this was done, Steam launched, but I ran into a new problem: every time I move my mouse over the Steam windows, they would flicker, making it hard to see what I was doing. This was solved by using winecfg to set the ‘Windows Version’ to Windows 7. Problem solved.

The next problem I encountered with Steam was that, when I drag a Steam window, it continues to move around after I release the mouse button, as if I’m still holding it. I have to click on another Steam window to make it stop. This problem remains unsolved in the latest version of wine (1.3.21 as of this writing).

Having Steam running, though, I was able to try a few games. The first thing I discovered was that every game I tried had major problems until I unchecked ‘Enable Steam community in-game’. Once I had done this, Plants vs Zombies and Darkstar One both worked great ‘out of the box’, with no tweaking required.

Portal, on the other hand, was not as great. Every few seconds of game play (not exactly precise, and it happens more when portals are open) the game will stutter for a moment. I spent a lot of time tweaking wine to try to fix this, but the problem remains in the latest version of wine. In addition, in wine 1.3.20, an even worse problem appeared – instead of stuttering, the game would act as if the mouse had been moved a random distance in a random direction periodically.

The last game I tried out was Team Fortress 2. It refused to start until I added an override for hl2.exe (in winecfg) disabling gameoverlayrenderer.dll and changing the Windows version to NT 4.0 (who knew Windows NT was a good gaming platform?). After this, the game worked with a stuttering problem similar to Portal’s, but more dependent on how much action was happening on screen. This was probably my most disappointing experience with wine, and 1 problematic game out of 5 isn’t bad.

So far, I have a (let’s say) 80% success rate with running Windows games under Linux using wine, with comparatively little effort required on my part. This is a fantastic result compared to even 2 years ago, and I look forward to watching the wine project enable ever more games under Linux.

tips, tricks, caveats

If you’re using Fedora, you may run into problems with pulseaudio. I recommend disabling it completely, via the following:

yum remove alsa-plugins-pulseaudio
echo > ~/.pulse/client.conf << EOF
autospawn = no
daemon-binary = /bin/true
EOF

Then, reboot your machine (or make sure you kill all running pulseaudio processes). Wine works a lot better this way. You’ll probably also want to run:

setsebool wine_mmap_zero_ignore 1

To make SELinux play well with games in wine.

Something I wanted to do but was unable to achieve was run native Linux games directly from Steam, and have Steam keep track of them. After asking on the wine-users mailing list, I learned that the way wine emulates Windows process handling makes this impossible. So, instead, I created steamstub, a Windows program written specifically for Steam under wine. To use it, add it as a non-steam game to Steam, then edit the game’s properties and change the name to a native Linux game of your choice. Now, before you go play your Linux game, click ‘Play’ on this game in Steam. Steamstub will deliver a small popup, and to your Steam friends, it will look like you are playing a non-steam game until you click ‘OK’. This lets you advertise what game you are playing, even when Steam can’t launch it.

One more thing you may find interesting is a tool I developed called wino. It lets you keep track of multiple wine prefixes (virtual Windows environments), so you can keep your programs separated. This makes it easier to recover if something in your drive_c directory gets broken; you only have to worry about reinstalling at most one program. If you make heavy use of steam’s ‘non-Steam game’ functionality, like I do, then this is not as useful for you. However, wino also does a lot of other useful things, like allow you to have a default command assigned to a wineprefix (so you could just run ‘wino steam’ to launch Steam.exe). It can also run winecfg (and a lot of other tools) on a prefix via ‘wino prefixname –config’.

Leave a Comment

BitTorrent, the Linux way

I use BitTorrent a lot. Most Linux distributions have torrents available, and I have gotten a lot of Creative Commons-licensed music, such as the work of Jonathan Coulton, via BitTorrent. It is a great way to deliver content.

However, I have a problem with (most of) the available BitTorrent clients. Given what BitTorrent does, which is allow you to download and subsequently seed content, it should really run like a service – quietly running in the background handling your torrents. However, most of the clients for Linux work like Windows applications. They sit in your system tray, giving you “helpful” popup notifications. More importantly, they die if you logout. Luckily, I have found a solution.

Enter transmission-daemon

Transmission is one of the bittorrent clients for Linux that works like I described above – it’s a desktop application. However, it comes with a variant, transmisison-daemon, that can run in the background, as a dedicated ‘transmission’ user. This is much nicer.

Setting it up in fedora is pretty easy. Install the transmission-daemon package. Edit /etc/sysconfig/transmission-daemon to suit your needs. You can change TRANSMISSION_HOME to whatever directory you’d like your completed torrent files to live in (you do not need to modify the actual home directory of the transmission user, but do make sure TRANSMISSION_HOME is owned by that user).

Now, start transmission-daemon, then stop it again:

service transmission-daemon start
service transmission-daemon stop

That step created the transmission configuration files, which you can now find in $TRANSMISSION_HOME/.config/transmission-daemon/. The file you probably want to edit is settings.json. Edit this file to suit your needs, then start transmission again. To tell transmission to automatically start at boot, run:

chkconfig transmission-daemon on

transmission-remote – for all your transmission-related needs

So, now you have a daemonized BitTorrent client, running unobtrusively in the background. But how do you use it?

The answer is transmission-remote. This tool is an administrative front-end for transmission-daemon that lets you add, remove, start, stop, and view your torrents, and a lot more besides. To add a torrent, you can use ‘transmission-remote -a’ on either a local .torrent file or a URL, like so:

transmission-remote -a /path/to/file.torrent
transmission-remote -a http://example.com/file.torrent

Once the torrent is added, it will automatically start. You can get information on all your torrents with ‘transmission-remote -l’. Note that each torrent has a numeric ID assigned to it; you use that ID with the ‘-t’ option to tell transmission-remote to perform actions on the torrent. For example, to stop the torrent with ID 42, you could run:

transmission-remote -t 42 -S

transmission-remote can do a lot more; check its man page for details. In particular, the -s, -i, and –remove-and-delete are useful flags to know.

Making things easier – the watch directory

The problem with the approach I have described is that the command line, while great for interacting with your local torrents, is not the place most people go to look for torrents in the first place. More often, you find a .torrent file on the web, and having to open a terminal and run a command is an annoying extra step.

To make things easier, you can set up a watch directory; any .torrent files placed in that directory will automatically be added to transmission-daemon. To set up a watch directory, edit settings.json and add the following:

watch-dir-enabled: "true",
watch-dir: "/path/to/watch/dir",

(I have found it is best to always stop transmission-daemon before making changes to settings.json. It often overwrites settings at shutdown)

One caveat about the watch directory: when transmission-daemon is started, every .torrent file in there will be added. While this has no effect on torrents you are still downloading or seeding, torrents you have already removed will be re-added to transmission-daemon. For this reason, it is a good idea to routinely delete the files in your watch directory. You can use tmpwatch and/or cron to periodically delete the files.

Torrents from anywhere – using Dropbox with transmission-daemon

Dropbox is a fantastic tool for always having access to important files. Any files you put in your dropbox directory get automatically synced to every machine you use dropbox on. There are also Android, iOS, and web interfaces, so you can really get to your files from anywhere.

What does this have to do with transmission? Well, you can put your watch directory inside your dropbox directory. Any .torrent file you add to that directory – from any computer or phone – will automatically be started on the computer running transmission-daemons. This means you can start your torrents whenever you come across them, no matter where in the world you happen to be.

And if you have multiple people in your household who might all like to use one machine for BitTorrent, you can simply share your dropbox watch directory with all of them.

The way computers should behave – the world according to Anna

User interface design is a complicated thing, and a lot of research has gone into it. What a lot of UI discussions miss, though, is that everyone has different needs and preferences. The setup I have described here works the way I personally like best. It is transparent; that is, it gets out of your way and just does what it is supposed to do, with no fuss. It is powerful and flexible. For a Linux power user who prefers to use the command line where she can, it is hard to imagine a better BitTorrent solution.

Comments (2)

Bulding bridges in the metaverse

If/once you “get it”, Second Life is pretty cool. It can be a lot of different things, and its potential has barely even been scratched. Sure, the tools are cumbersome, but they are getting better. And some of Linden Lab’s policies suck, but that will just drive people to OSGrid, eventually.

Anyway, there are people in Second Life that I like being able to communicate with. However, when I’m at work, it’s a lot of trouble to create an SSH tunnel home, then forward a text-only client like ommviewer-light just so I can log in and see who is online.

So, as I always do, I went way overboard and created a system that can relay chat between an IRC channel (or channels) and any location (or locations) inside Second Life (or any other grid that supports LSL). It can also check the online status of users and send them one-way IMs. I call the entire system slrelay, and you can get it here.

It requires a few things to work: a running webserver is absolutely necessary. If you want the IRC features, then you also need an IRC network of your choice and a machine that can execute perl scripts. I have my IRC bot connected to irc.slashnet.org.

slrelay has a number of possible uses. You could use it to relay chat between key locations on a large landmass (say, an area that spans 3 or 4 sims). It could relay chat between Second Life and another metaverse grid like OSGrid. It can be used as a simple IRC tool to check who is online very quickly. Or it can do all of these things at once.

Leave a Comment

Tutorial: Creating OpenSim terrain with Blender

This tutorial will explain how to create RAW terrain files for OpenSim and Second Life using Blender and the Gimp.
Read the rest of this entry »

Comments (5)

emacs 23, dbus, and libnotify

A new major version of emacs is out, and it includes dbus support. This is great, because it means we can do things like this:

(require 'dbus)
(defun send-desktop-notification (summary body timeout)
  "call notification-daemon method METHOD with ARGS over dbus"
  (dbus-call-method
    :session                        ; use the session (not system) bus
    "org.freedesktop.Notifications" ; service name
    "/org/freedesktop/Notifications"   ; path name
    "org.freedesktop.Notifications" "Notify" ; Method
    "emacs"
    0
    ""
    summary
    body
    '(:array)
    '(:array :signature "{sv}")
    ':int32 timeout))

(defun pw/compile-notify (buffer message)
  (send-desktop-notification "emacs compile" message 0))

(setq compilation-finish-function 'pw/compile-notify)

Add this to your .emacs file and you will receive a libnotify popup when M-x compile completes. It will even give you the exit message, so you know whether the compile was successful.

So now you can let that long compile run, and work on something else. emacs will let you know when the compile finishes.

As written above, the notifications will stay on your screen until you dismiss them (by clicking on them). If you would like them to vanish after a preset time limit, change the 0 in the call to send-desktop-notification. Set it to the number of milliseconds the popup should remain on the screen.

Screenshot of libnotify popup showing a compiler error

Screenshot of libnotify popup showing a compiler error

This is just the tip of the iceberg, of course. Any application that presents a dbus interface can be interacted with from emacs, which means that emacs can also integrate itself with the Linux desktop in other interesting ways.

Comments (1)

so close, Netflix

I like Netflix. I think they’re a great service, reasonably priced, and they have completely replaced cable television for me. However, I have found one problem. According to Netflix:

If you are renting a series or seasons, we will ship the DVDs in order. That means:

* If there is a wait for a particular DVD in a series, will we wait until we ship you that DVD until we ship the next DVD in that series.

Which is great. If I add, say, Excel Saga to my queue, I can be certain that I will get disc 1 first, followed by disc 2 and 3. Under no circumstances will I have to worry about getting, say, disc 4 before disc 2. Right?

Well, in theory. In practice, some TV series (notably, Excel Saga) have discs missing completely. These discs go into your “Saved DVDs” list instead of your queue, and they aren’t considered to be discs with a “wait”. As a result, they get skipped over completely, and you get the next disc in the series that isn’t missing.

Why am I complaining here instead of directly to Netflix? Because Netflix doesn’t have any reasonable way that I can find to open a bug report or provide feedback. And I wanted to vent a little.

Leave a Comment

The Decentralized Metaverse

Several years ago I mused on the decentralization of Second Life, Linden Labs’ virtual world. Shortly after that post, I dropped out of the metaverse entirely for more than a year.

While I was off not paying attention, it seems that almost all of my predictions have come true. An open-source server for running a simulator and/or grid, OpenSim, has been created. OpenSim appears to have solved many of the problems, and implemented many of the predictions, of my post from 2006.

One “problem” that remains, though, is economy.
Read the rest of this entry »

Leave a Comment

Thoughts on the Transhuman revolution

I’ve been reading a lot of near-future science fiction and speculative nonfiction lately, and as a result I’ve been contemplating the idea of transhumanism and what it means for us as a species and a culture.  Transhumanism is decently defined by wikipedia, and has been explored in fiction by Charles Stross, Cory Doctorow, and others.  It has been discussed extensively in the non-fiction sphere as well: Ray Kurtzweil is probably the most well-known thinker discussing the topic.  However, while Kurtzweil discusses the possibilities of AI consciousness and the emergence of the singularity, I am more interested in transhumanism in this article.
Read the rest of this entry »

Comments (1)

Older Posts »
Follow

Get every new post delivered to your Inbox.

Join 136 other followers