Apparently, Mac OS X Lion supports Emoji icons like iOS does.
Please, nobody get in the habit of using these. Anywhere. Unless you're talking specifically to other Apple users.
Nobody else supports Apple's particular variant of Emoji icons as well as Apple does. For Linux and Windows users, all your Emoji icons you paste in Twitter updates don't work. Most of the icons will be completely broken for these users (rendering as a block character), and the few icons that do render, won't look nearly as good as on Apple devices: they'll just look like Unicode characters, i.e. using the same black-and-white font color as everything else. Not full color icons.
It's already bad enough that cross-platform mobile apps (iOS and Android) have idiots using Emoji icons everywhere (which do not display on Android at all, but show as broken block characters), but for desktop Apple users to be able to paste Emoji icons everywhere else is just the most terrible news as of late.
Don't use them. Period.
[ 1 comment | Add comment | Permalink ]
Another mini rant about GNOME 3.
To add to the reasons why GNOME 3 impacts other areas of the Linux ecosystem in ways I wish it wouldn't, they have changed the behavior of zenity and removed a feature just because it no longer makes sense for GNOME 3.
Zenity, btw, is a command line program for displaying simple dialog boxes and things that may be useful for bash scripts. It can pop up alerts, progress bar windows, open/save dialogs, etc.
One feature it used to have was --notification, which let you put an icon in the Notification Area ("system tray") on your desktop. But now, since GNOME 3 doesn't have the same concept of the Notification Area as other desktop environments, Zenity's --notification option no longer puts an icon in the Notification Area.
Now it uses GNOME 3's style of notification... which is, the same behavior as notify-send - it pops up a Growl-like black bubble in the corner of your screen with a temporary message (like "New updates are available").
This sucks.
I was playing with writing a desktop Google Voice app for Linux, which would have an icon in the Notification Area and notify about new texts and things. I was going to just use Tk for the GUI (even though it's ugly as sin on Linux) and use Zenity only for the notification icon. But I can't do that now! Now I might as well make my GUI in GTK+ so I can use the Gtk2 module for the notification icon.
GNOME developers, the universe does not revolve around GNOME. If Zenity's --notification is just going to duplicate the functionality of notify-send, you might as well just have switched to notify-send and leave Zenity how it was before.
I'd written a Perl script a while back that would act as a super simple front-end to Mednafen, an NES and GameBoy emulator. It just used Zenity to open a file select dialog to let you browse for a ROM to load.
But now, Zenity's file selection dialog doesn't have any way of letting you specify which directory it should look in by default. It used to start in whatever the script's current working directory was, but now it ignores all that and always starts in the "Recently Opened Files" list.
Fuck everything about GNOME. Do we need to fork Zenity now? This is so ridiculous.
The latest US news is that California attempted to ban violent video games, and instead, video games are now protected under the First Amendment.
I love it when the law blows up in the face of the Soccer Mom Brigade.
"Soccer Mom Brigade?" It's a term I made up to describe the sort of person who complains about this sort of thing. Dumb people (usually overbearing parents who don't know anything but think they need to have an opinion about their kids' lives, hence, "soccer mom") find something--no, they seek out something to bitch about, and they write angry letters to whoever they need to in an attempt to get the thing banned for everybody.
If the target of the complaints doesn't ban it straight away, the soccer mom goes on a crusade, gathering up all the other soccer moms in the neighborhood and forms the Soccer Mom Brigade, where they become very loud, very obnoxious, and make their point heard across the country, usually getting the media involved. And then stupid stuff gets banned for stupid reasons.
Example I can think of offhand: the Pokémon episode "Tower of Terror" (where they visit the Ghost Pokémon Tower in Lavender Town), because the Soccer Mom Brigade thought their little 5-year-old would relate the title of the episode to the September 11 attacks. And they succeeded. Bullshit.
[ 0 comments | Add comment | Permalink ]
The AI in Pokemon is a Cheating Bastard
I've been playing a lot of Pokemon SoulSilver lately and feel like ranting about how the AI in the game is a cheating bastard.
First of all, I don't believe the AI in Pokemon has any reason to cheat. Pokemon battles are by default completely fair. Every Pokemon owned by the enemy trainer is a Pokemon you could also go out and capture or trade to get. And all the moves their Pokemon knows are moves you could teach to your own Pokemon.
But regardless the AI feels the need to cheat. Some examples I've seen:
How it cheats: it knows exactly which move your Pokemon is going to wake up on, and it will use Sleep Powder or Sing on this turn to put your Pokemon back to sleep (these moves would fail if your Pokemon is already asleep).
Evidence: the AI fails sometimes. If the enemy Pokemon is too fast, it will use Sleep Powder, it will fail because your Pokemon is already asleep, and then your Pokemon will wake up. This happens all the god damn time. You can also confuse the AI by using an item on the turn your Pokemon is about to wake up on (but, this is all down to chance, since you don't know which turn it will wake up on).
But I foiled its plans by healing my Gyarados. It followed up with a Quick Attack which did exactly 14 damage.
Protect always goes first in the turn it's used, and it prevents the opponent's move from hitting.
Bruno's Forretress is a cheating bastard though, because it only uses Protect when you're going to use your most powerful move. Forretress is weak to fire, so I used my Typhlosion's Blast Burn move, which is a very powerful fire attack. Forretress used Protect so it failed; I tried again, it used Protect a second time. Tried again, and this time it hit, because Forretress knows that Protect can't be used more than twice.
I battled Bruno later with my Umbreon. I used Dark Pulse, the most powerful move my Umbreon knows, and Forretress used Protect to block it.
I figured Forretress was gonna use Protect again, so I used Faint Attack instead. This hit. So I tried Dark Pulse again -- Forretress used Protect and blocked it. I tried again, Forretress tried Protect again, but it failed (you can't use it more than twice). So, I confused the AI there.
Anyway, I just think this whole thing is ridiculous. The AI has no reason to cheat. It wouldn't be that hard for Nintendo to program the AI to pretend it doesn't know all this stuff that it shouldn't know about the battle (hint: they just don't need to program it to look). There's probably logic in the code like, "if the player chose the player's most powerful move, and protect hasn't been used twice in a row now, use protect". Nintendo should just NOT write that code. Pokemon battles are fair by default.
[ 3 comments | Add comment | Permalink ]
This is a little rant about the Eclipse IDE for Java (and other languages, but it's mainly a Java IDE).
I hate it.
I have to use Eclipse because my current project at work is a Java project, with a massive amount of source code, and I have no idea how I'd compile and run the project except with Eclipse. Also, there's a significant amount of source code managed by CVS in a hundred different projects, and authentication is made complicated by a VPN and I have no intentions of trying to manage CVS via command line.
Eclipse creates more work for me just by being Eclipse. The CVS system on it is broken, and I frequently get CVS conflicts on files that I didn't even touch between updates, which cause syntax errors, some of which aren't immediately obvious (sometimes they cause runtime errors instead of compile-time errors).
Then, Eclipse likes to just crash from time to time with no explanation. I ended up jury-rigging a chain of shell scripts just to start Eclipse to try to minimize how often it crashes, and catch the errors (if any) when it does.
Namely, I needed to use ulimit to increase the number of filehandles Eclipse can have to keep it from crashing. Only root can do this, though, and I don't want to run Eclipse as root, because I don't want new files coming in through CVS to be owned as root and make my job more difficult.
So, just to start Eclipse, I had to set up /etc/sudoers to not require a password to use sudo, and allow sudo to run without a TTY (these are both bad security practices, btw), and to sudo execute this script as root:
$ cat start_eclipse.sh #!/bin/bash # increase fileno limit ulimit -n 50000 sudo -u kirsle "./start_eclipse.pl" &This uses root only to increase the filehandle limit, then it switches to kirsle (my user) so nothing further runs as root, and runs start_eclipse.pl, a Perl script that attempts to catch errors when Eclipse goes down like a cheerleader at homecoming:
$ cat start_eclipse.pl
#!/usr/bin/perl -w
my $out = `./eclipse 2>&1`;
if ($? != 0) {
$out =~ s/\'/\\'/g;
system("zenity", "--info", "--text", $out);
}
Ugh. I strongly prefer a plain old text editor like vim or gedit.