byuu's homepage
Updates2014-10-28

The higan, loki and about pages are now up once again. I still need to recreate the remaining pages. Note that the URLs to the emulators have been updated. Rather than byuu.org/higan/, the URL is now byuu.org/emulation/higan/

For the past week, I've been revamping nall/string to scale better by combining small-string-optimization with copy-on-write semantics. I've also revised the API and made all but the match/tokenize functions fully binary-safe.

With that out of the way, I need to resume work on phoenix/gtk. I am currently battling a tough issue with GTK+ lacking a way to deparent a widget once attached to a container, and GtkNotebook destroying all child controls when it has been reparented. As of yet, I've been unable to think of a non-hackish way to work around this. But until this is overcome, I won't be able to proceed on to updating higan to compile again with all of the new, and extensive, underlying library changes.

To those waiting on forum accounts, I apologize for the excessive delay. I have to migrate the accounts manually, one at a time, and it just takes hours to do so this way. Please understand it's nothing personal, I'm going by the top posters when I have time. I hope to get some more accounts migrated over soon.

IE8 support2014-10-18

So it turns out that html5shiv does indeed work great, it was just IE8 forcing compatibility mode on because I was running it locally.

But like everything in the comp sci world, it seemed kind of bloated at over 10KB. So I wrote my own version. It's 574 bytes. If you'd like it, you can download it here. I'm sure it won't handle as many edge cases, but it works perfectly for my site at least.

On Ten Years of Emulation2014-10-15

My emulator, higan, is now over ten years old.

I must stress right away that work will continue on the project into the foreseeable future. But, there's no denying work has slowed down immensely. In fact, there hasn't been much of any progress since January. There are several reasons for this, which I'll go over.

In January, I was in the process of wrapping up the finishing touches on loki, my SNES debugger, in preparing for a v095 release.

The first major roadblock was Debian's decision to acquiesce on systemd. At that time, Debian was my primary development operating system. Having suffered through years of broken audio by the same egomaniacal Redhat developers, I wasn't eager to repeat the experience by introducing such fascinating features as having an HTTP server that generates QR codes as part of my init system. I fundamentally believe systemd to be poorly designed and a major step backward for Linux. But with Linus asleep at the wheel while Redhat turns Linux into Windows, the writing was on the wall: it was time for me to move on.

This led to a few months of crash-course learning FreeBSD. Now, FreeBSD makes for a wonderful server, but is not exactly the best way to run a desktop. It can be done, and to great effect, but it requires an immense amount of effort and dedication.

Due to most developers only considering Linux, this leads to lots of portability issues that result in bugs which slip past port maintainers. I battled through issues with font rendering, libvte crashing terminal instances, Thunar refreshing and resorting on every gedit save due to the latter's insistence on creating temporary files for every save, mousepad crashing when opening any file an even multiple of 4KB due to an out-of-bounds memory access which apparently was hidden by the Linux implementation of mmap, more Thunar issues in failing to update file types and file sizes in its displays, ibus issues with anthy and mozc, browser issues with large images, and on and on.

The worst part was probably the horribly buggy binary nvidia driver. It was so unstable, taking my entire system down, that I went back to using vesa. By some miracle, my graphics card actually has a 2560x1600 vesa mode. After manually rewriting my MTRR tables, I've found I actually get rather decent performance. By multi-threading my software XShm renderer, I can even run my emulator and watch movies just fine.

For the most part, I was able to work around these software issues. In many instances, I had to switch to new software programs, or revert to older ones. For instance, the Firefox team decided to completely change its user interface to the braindead Australis design, and to hell with anyone who didn't like it. Classic Theme Restorer may get something about 80% close to what you're used to on Windows, but is an unmitigated disaster on Xorg.

After Metro, Unity, Gnome 3, KDE 4, Firefox Australis, and on and on; it has become painfully clear to me that I cannot rely on software vendors to not radically disrupt my workflow whenever some wide-eyed kid fresh out of college decides it's time to completely redesign applications that were perfectly fine already. I'm not against change when it leads to better ways of doing things. But I am vehemently opposed to change for the sake of it. And my desktop is not a god damned tablet, you stupid fucks. But well, as they say, if you want something done right, you have to do it yourself.

Upon attempting to write replacements for critical programs, such as a file manager and text editor, it became clear that my UI abstraction layer, phoenix, was not going to cut it. I had to go back to the drawing board and work on the largest redesign that the project has ever seen. This required many new components in my template library, nall, such as shared objects and IPC. I then added a lot of power to phoenix, mostly focusing on the GTK2 target. I've added new widgets, new functions, and an entirely new shared memory model that will greatly aid in writing dynamically generated interfaces, among other things.

And just as I was finishing this up, the godawful web host I was using, InMotion Hosting, decided to reveal their gross incompetence. First, they managed to botch an Apache upgrade, resulting in all of my PHP files being accessible as plain-text. So anyone typing in /config.php would be greeted with the plain-text login credentials for MySQL. Then, a few weeks later, another update corrupted half of my phpBB SQL tables. Repairing didn't work: permissions were completely broken, allowing any user to edit any other user's post, page refreshes were broken, and many other similar issues arose. I had no choice but to drop five years worth of posting history and start over. But no way in hell was I going to start over on that host.

And so now, I've had to move my site over to a new host. This time, I decided to go the VPS route so that I could be in control of software updates. I certainly couldn't do any worse than my previous host. Thankfully I have plenty of experience in running and securing web servers, so this wasn't very painful.

But frankly, I've grown sick of Apache, PHP, and phpBB. I am so tired of bloated, buggy, poorly designed software. So now I am further working on designing lighter weight replacements with my usual emphasis on minimalism. Just because it's the web, that doesn't mean I want to throw away native code performance and compile-time type safety. And I am so tired of fighting mod_rewrite to do simple things like map a subfolder to a subdomain.

I've been having frequent chest pains and issues with lethargy, which my GP is either too incompetent or apathetic to help me with. So my output has been reduced quite significantly. I've been trying to take up healthier eating and exercise to try and improve my health. All the same, I find it increasingly difficult to pull off marathon coding sessions any longer. And even when I do, it leaves me out of commission for the next day or two.

So as you can see, it's just been one hell of an awful year. I've been jumping from fire to fire, struggling to keep everything afloat. And it's been taking a toll on my enjoyment of programming. It seems like the more work I try and do, the more work I have waiting for me. I can never really complete anything when I keep getting new things dumped on me all of the time.

I have an incredible backlog spanning years worth of work here. I have to map out and scan nearly 1500 games, I have to do all of the programming work for a fan translation of Tengai Makyou Zero, I have to finish up the Windows, Cocoa and Qt4 phoenix targets, so that I can continue on the design of higan and loki, I have to write a myriad of desktop applications, up to and possibly including a web browser frontend (for either Webkit or Gecko), and then I have all of my backlogged hardware research on the BS-X, Cx4, etc, and it just keeps going. All the while dealing with diminishing health.

Yet when it comes to all of this ... I really feel that I've already accomplished more than I ever wanted to or thought I could on SNES emulation. I no longer feel like I am facing strong challenges that force me to grow, but rather an infinite stream of tedium and maintenance. I'm not saying I necssarily hate programming, just that it's lost its magic.

The most fun I've been having lately has been in attempting to improve my Japanese knowledge through some fan translations of manga (holy hell is that language a nightmare to learn), and getting a bit back into drawing again.

So, what I hope to do from this point out is to start winding down on my programming projects, and focus on new ventures while I'm still young enough to take on large new challenges in fields I have little to no experience in. Again, I don't mean to seek to abandon my projects, but to get them more suitable for a slower development pace, so that I can start branching out into new areas.

New Host, New Site2014-10-10

I now have a new host, and a new site to go along with it. The site itself is styled the same, but is now written in HTML5.

Unfortunately, it seems IE8 and earlier does not support HTML5, and html5shiv only seems to make rendering worse. After countless years catering to the broken mess that was IE6, I swore off ever doing that again. So I won't be supporting IE8 on this site at all. Sorry for any inconvenience this may cause, but please use a better browser (read: any other browser), or upgrade to IE9 to view this site.