Stuff On This Site

Other Sites Of Interest

Meta

Email Subscription

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 42 other followers

Comment Moderation

All comments are held for moderation. If you have a WordPress account, prior approval will allow you to make further comments without moderation. This is done to catch spam, off-topic, and troll posts. Approval time may be measured hours or sometimes days. This blog isn't my bread and butter, but I try to keep up on it daily.

You know what grinds my gears? When someone posts in-use wallpaper without sources. It doesn’t even have to be the wallpaper itself, but at least provide a working link! Sheesh!

Well, I’ve done one better. Just want the wallpaper? Download the PNGs. Want to to move Ika Musume around, use a different background, or replace the Arch logo with another Linux distro’s logo? Download the XCF and have at it.

Situation: I wanted to back up the files of one remote server to another, but wanted to give that connection as little privilege as necessary to complete the job. The backup job was going to be scripted, so the process had to be passwordless. (Hence, the jitters over security.)

Solution: For locking down what a particular key can do on a server, Arabesque had a pretty good post about that called Restricting Public Keys. From that, I got this line to add to the authorized_keys line for the key that was going to be used:

This limits my backup server to only recognize the key if coming from the server being backed up, and disables forwarding, tty, and .bashrc processing.

Allan Feid had a pretty damn good article called Creating a Chroot Jail for SSH Access. However, as noted by his use of OpenSSH 5.1p1, the article is growing stale. Of particualr note is the unification of bins to /usr/bin and libs to /usr/lib since he wrote the article. NB: As of the writing of this article, OpenSSH is up to 6.4p1 in Arch Linux.

Being the tool for automation that I am, I prefer that location for the jail be abstracted so that (1) the user decides where they go and (2) the user can create more than one. Learning from previous encounters, I’ve put this code up on GitHub.

Since the XB1 DRM debacle, it’s taken me a long time to come up with talking points. Everyone else was expressing their outrage, and doing it better than I would have. I thought about how the DRM could have been done right, but that covers a lot of territory, and the Xbox One wasn’t alone in that regard.

Today, it hit me: With the exception of the Atari, every company that makes video game consoles loses its God-damned mind between the second and third release of its home console.

In between the Super NES and the N64, Nintendo tried to come up with a CD-ROM extension like Sega had done, only to let the cooperative venture with Sony fall through. Nintendo came out with the N64 later, completely ignoring CD-ROM and forcing higher consumer price tags and dev licensing costs due to the insistance on using cartridges.

In between the Genesis and Saturn, Sega also had a cooperative venture with Sony that also fell through. Additionally, the 32X was a complete debacle — Sega of Japan wanted to release an upgraded Genesis and Sega of American poo-poo’d the idea and convinced the board to release an upgrade module instead. Sega of Japan countered that by proclaiming that the Saturn was the future direction of Sega. To continue the insanity, Sega of Japan largely relied on arcade ports to sell the Saturn, which were meaningless to Americans due to the collapse of their own arcade scene.

Sony found their way into the home console scene not so much by cleverness or marketing mojo, but by pulling the trigger on the hubris that Nintendo and Sega had on display. By keeping consumer game prices at $50 and dev licensing at $1 per copy of the game, who wouldn’t develop for the PlayStation? But the Playstation 2 marked a slow turn for Sony. First there were the over-the-top claims (real-time Toy Story graphics) Sony made prior to the release of the PS2. Then there was the laughable attempt at making UMD a media format with the PSP. Everything came to a head with the announcement of the PS3. A $600 price tag, an esoteric chip design, and a complete hand-waving of the online play Xbox & Xbox 360 were bringing to the table paved the way for Sony being last in the 7th generation up until the very end.

Which now brings us to Microsoft. Just like Sony, Microsoft found good things that no one else was offering and latched on to them. Those good things were unified online play and DirectX. Heck, Microsoft went so far as to release XNA, giving smaller devs a toolkit for simultaneously releasing to Windows and Xbox 360. But the hubris settled in quick. First it was the shifting of the dashboard to match that of Windows Phone 7. Then it was the $10/year price hike of XBL Gold. Then it was the interface change to Windows 8, replete with ads. Then it was the yanking of XNA. So, is it any surprise that Microsoft is trying to release a console at $500 price tag that initially sported consumer-unfriendly DRM?

There is a bright spot in all of this. While Sony may have lost their mind with the launch of the PS3, it seems they started learning their lessons part way through the console’s life span. The escalated hacks showed Sony that their system wasn’t as secure as everyone thought. And screwing consumers over only invites the general public to more pantsings. The first sign of this lesson learned was allowing Valve to build a bridge between PSN and Steam with Portal 2. The high-point of this lesson learned was to completely forego console DRM after watching how it was blowing up in Microsoft’s face.

This 8th generation is going to be interesting for sure. At the moment, Sony is making Microsoft look like a fool. Sony has been giving games away for free with a PSN subscription, Microsoft follows suit at E3. Microsoft introduces console DRM, Sony says they won’t do it, Microsoft follows suit. Microsoft pushes indie devs to make games for Windows 8 first, indie devs flock to PS4 for Sony’s self-publishing, Microsoft follows suit. But it was just 8 years ago that the roles were reversed.

While a good backup plan is a must, one thing I just caught myself doing is running those backup without storing the filesystem label or UUID. Normally, this really doesn’t matter as the minor convenience of not having to change /etc/fstab wouldn’t be worth the hassle.

However, in the case of system partitions, this can save a lot of time. With the increasing preference of using UUIDs or labels in boot loader configurations (especially GRUB2), restoring the UUID and/or label to their original value means you can instantly boot into a restored system once recovery is complete.

Of course, simply putting a couple of files into the root of each drive by hand wasn’t good enough for me. I had to go and automate it. In order to avoid writing to devices that might cause a catastrophe (like the individual devices in software RAID), I queried and parsed the output from the df command. I then used /proc/mounts to find out where the device was mounted (since the output of df is dynamically spaced).

Use pacman-key --import ~/.gnupg to import the key you just created into pacman on your build machine.

Use pacman-key -lsign [key-id] so that pacman will trust the key.

You’re going to get sick and tired of entering your key’s passphrase as your package list grows, so set up the gpg-agent.

By default, the script instructs makepkg to remove all packages that had to be installed to build the package. If you are running a dedicated box (or a virtual machine) to build packages and want to keep the build and run-time dependencies, change makepkg -src to makepkg -sc and save yourself some time

As mentioned earlier, AUR packages sometimes rely on other AUR packages. In these instances, you just have to make sure you list the dependencies first. The script will update the repo database upon a successful build and refresh pacman, allowing the dependency to be installed from your own repository.

The problems left over after that usually stem from lesser-maintained packages not keeping up with changes to Arch or Linux in general. For that, you can create a shell script that, if found, will allow you to make changes to the files found in the tar.gz file before sicking makepkg on it. I had to do this for avant-window-navigator-bzr and awn-extras-applets-bzr.

UPDATE 2013-02-04: There was a slight bug in my logic. I assumed that only numbers would be found for version-related info inside PKGBUILDs. Turns out some PKGBUILDs use variables, and that threw off everything. Scoured packer’s source code and found out about AUR’s RPC.

UPDATE 2013-02-13: Script now tells you what version you currently have built. Now has nicer-looking output. Fixed incorrect usage of repo-remove. Fixed bug where packages were removed in error (e.g. rm lightdm-* removes all packages that begin with lightdm, not just lightdm itself.) If package is not found in the AUR, a pacman search (pacman -Ss) is performed to let you know if the package got moved to the official repos.

UPDATE 2013-02-16: Broke some functionality off into functions for easier reading. Script will now delete packages and remove them from the repo database if it detects that a package is not in the AUR but present in the official repos.

UPDATE 2013-02-24: Added architecture detection. Added ability to compile for multiple arches without changing config. Added precaution to not attempt compilation of lib32 packages when target arch is i686. Changed expected directory structure. Under $repdir should be $repnms and under $repnms should be build and arch (i686, x86_64) directories. Added rsync to remote host. TODO: Allow for multiple repos in one go (hence reponms and not reponam).

UPDATE 2013-03-02: Code now posted to GitHub. The First Real Commit adds a skip to package moving and repo database addition if the package is never successfully built. (These commands would just fail harmlessly before.) Also added a check to to see if the PKGBUILD can be built for the target arch. (Again, commands would just fail harmlessly if the package couldn’t be built.)

This post is years in the making. Not that I’ve spent the entirety of those years working on this problem, or even the entirety of my spare time. This is just one of those things that I’ve relentlessly banged my head up against until I couldn’t take anymore, only to have it nag me somewhere down the line and pick it back up again.

For the longest time, I could not for the life of me process video that was mixed telecine and progressive without having the resulting video end up longer than the original. The immediate problem is that A/V sync starts out fine but then drifts to whatever the time difference is between the two videos. I eventually discovered soundstretch, which can adjust tempo (play time) without affecting pitch, but then that introduces the problem of calculating the time difference as a percentage (and the rounding errors involved in that), re-coding an already-lossy audio stream, and the time it can take to process one-to-two hours of uncompressed WAV data.

Early morning on September 28, I went through all of my posts to add and fix lead-in pictures. Along the way, I noticed some posts were uncategorized, and also fixed that. It seems that latter action caused some old posts to re-surface as new posts, even though the original publishing date remained the same.

This “uncategorization” stems from the legacy of this blog, which initially used categories but switched to tags. The “category” functionality is used by the P2P Theme to distinguish between a blog post and a status update. If a post remains “uncategorized” weird things happen when you go to edit the entry in-line, hence the impetus to change the category.

I am a 35-year-old North American male, so what the hell am I doing playing a Japanese import PSP game whose target audience is people half my age and whose main attraction is mashing buttons to music sung by (mostly) underage (mostly) girls? For me, I think the hook is obvious. Not only am I fan of Rock Band, I’m also a fan of Japanese quirkiness and also happen to be a fan of the Vocaloids. So what do you do when one of your favorite console games completely bungles its hand-held port and someone else comes along with another spin on mashing buttons to music, including some other stuff you happen to like, on a system whose games are region-free?

If you need to know what a Vocaloid is, Wikipedia is a friend that can get you started. If you want to know what veered me into Vocaloid territory, I would have to tell you to thank Valve and Ellen McLain for GLaDOS. By making a humans sound like a computer, you’re bound to pique the interest of people using computer software that tries to sound human, and you get Miku singing a translated version of Still Alive, which at first listen could be mistaken as an official translation of the song. After that, I stumbled upon Caramelldansen, and as with any meme like this people are going to incorporate their favorite characters into it, including Vocaloids. The nail in the coffin, though, was Love Is War, an actual full-fledged song, reminiscent of Linkin Park, using Vocaloid as it was intended. Being fully subbed in Kanji, Romaji and English helped greatly.

(Lest you think English users are being totally ignored: English is harder to pronunciate, thus harder for a computer to pull off, thus the popularity problem. It’s become much better in recent years.

It’s been a long time. How have you been? I’ve been really busy….playing video games. So much so that I realize there was a 2-month gap in my posts. Well, I guess if I had nothing better to write about during that time, I should indulge you with some of the things that have pilfered my free time.

Something that came to mind while writing these mini-reviews is the argument over whether or not the Japanese video gaming industry is declining. I came to the realization that the answer is both yes and no — the mainstream industry is rotting while the small devs and indies are picking up the ball. Just like it is here in the States. Hence, the title of the article and the inclusion of one non-Asian game.

Deathsmiles II X

First up is Deathsmiles II X. If you’re unfamiliar with bullet hell shmups, I suggest you also take a look at Triggerheart Exelica as well.

The fun in the Deathsmiles series isn’t beating the game — that’s relatively easy with unlimited continues and 3 selectable difficulties for each stage. The challenge is in mastering the scoring system. Of course part of that mastery lies in playing on the hardest setting and not getting hit, but haven’t we had enough insanely difficult games where getting anywhere is next to impossible?

The devs certainly thought so and have toned down things a bit in this incarnation. The slowdown in Deathsmiles II X is more prevalent. Getting the true final boss Pigeon Blood Jitterbug in DS2X is a snap. Level 1 (Easy) can now be selected all the way through the game instead of just 3 stages. And the penalty to your item counts for getting hit is slashed in half — from 50% is DS1 to 25% in DS2.

Just because penalties and hoops have been reduced doesn’t mean getting billions of points is any easier. A hit is still ultra-damning to your final score and finishing off each boss with the homing shot to get Jitterbug leaves you wide open. You’ll have to work for your 6 billion point achievement, and you’ll have to work even more if you want to score anywhere near 150 billion point mark of the top players on the leader board.

One thing to note with this game is that Cave experimented with 3D with Deathsmiles II. Cave is well-known for some of the most gorgeous 2D sprite-based shooters, and they didn’t quite pull it off graphics-wise with Deathsmiles II. However, with 720P the 3D of DS2 gets a B. (Compared to the lower-res arcade version which gets a C by comparison.)

Speaking of Arcade, that mode is a little messed up on the 360 version. Initially Cave wasn’t even going to bother, but decided to try and stuff it in at the last minute. Whereas as the the new 360 and Arrange modes have more slowdown than the original arcade version, the Arcade version on the 360 has less. The incoming enemy markers are also missing. And there are no leader boards.

The biggest ding against this game comes on its price tag of $30. I don’t suppose the fact that this was a retail disc release in Japan makes that pill any easier to swallow. Especially seeing as how we get absolutely ZERO translation. That’s right — ZERO translation. Whatever you see in English in this game was already in English. Brush up on your Google-fu.

Afterthought: You may opt to go for the original Deathsmiles NA release, which can be picked up used on Amazon for as little as $19 including shipping.

Trouble Witches Neo

Next up is Trouble Witches Neo. If it isn’t obvious by now, I’m a schmup fan. (More precisely, a previously-dormant schmup fan.) As with Deathsmiles, beating the game is no sweat on Easy with unlimited continues. The challenge is the high score.

One thing to note is that this game has HORRENDOUS English voice acting. Consider half of your $15 purchase to be the entertainment value you can derive from that alone. Here’s the kicker: You’re going to HAVE to play with the English voice acting if you want to know what the bosses are saying since there are no English subtitles if you chose to enable the original JP voice acting.

The most interesting thing about this game is that it started life on the PC and its creator is very anti-Touhou. Aside from that? There’s actually a tutorial and a this game is translated, so it might be an easier pill to swallow than Deathsmiles II X. Then again, this game brings back the difficulty that DS2X leaves out, meaning beginners aren’t going to be able to count the continues with their fingers and toes alone.

Gotham City Impostors

Hey, we’re still shooting things here, but at least it’s not a shmup and the characters are actually able enter into legal agreements! The best way to describe Gotham City Impostors is with an analogy: GCI is to Call of Duty multi-player as Outlaw Golf is to Tiger Woods PGA Tour. In other words, a completely farcical take on the genre that has a surprising amount of depth and thought put into it that can actually put the big guy to shame.

The back story makes no sense — a variant of Joker Gas is turning people into Batman and Joker wannabes — and serves little more than to give a flimsy excuse to set up team of Bats and Jokerz. There are pre-defined load-outs for Medic, Scout, Soldier, and what-not, but you can either tweak these to your liking or roll your own. (One of the common ones I saw was a mostly-Soldier load-out save for the megaphone — a soldier that could be a healer in a pinch.)

It’s hard NOT to like this game unless you like to take your games too seriously. If so, please stick with your Call of Duties and Halos.

Dungeon Fighter Online

The final entry, and the game I’m currently playing, is Dungeon Fighter Online. Take Final Fight (or Streets of Rage), then add swords, guns, magic, a juggle-happy combo system, a fantasy setting, RPG elements, and some MMO.

Did I mention that it’s Free 2 Play, and that you really don’t have to party with anyone if you don’t want to (though it helps if you do)?

Dungeon Fighter Online has taught me where Phantasy Star Universe has failed so hard. While both games have you running “dungeons” over and over again, DFO actually gives you a reason to do so (even if it’s something as simple as collecting items, defeating a certain number of a particular enemy, or clearing harder difficulty levels). DFO’s dungeons are more organized in difficulty, meaning you’re not running all over the game world for harder missions as you level up. (Counterpoint: Sometimes you’ll be running all over the world for quests pertaining to a particular dungeon.) While the organized dungeons all but eliminate the need for a centralized party system, DFO has one anyway, as well as a centralized auction system. And lastly, there’s always some special event (common in F2P), unlike Sega and PSU.

One word of warning: Although the game is very keyboard-centric, and the game itself does include a bit of game pad support, you may wish to use a program like Joystick 2 Mouse to map a controller to keyboard presses and/or mouse movements yourself. Reason being: The game itself only supports one joystick, leaving out any secondary joystick and/or D-pad you might have.