First and foremost, I don't want to get anyone's hopes up here. I am not intending to begin actively developing higan again as I've used to.
However, I also don't want the code to rot. The reason there hasn't been even a single WIP release in a full year has been because the core GUI library, hiro, has undergone massive changes. It currently only compiles under Linux/BSD with GTK+ 2.20+. This means that even upon writing a new UI, it wouldn't be usable by most people. It will take months of effort at my current pace to get hiro fully compatible with Windows, OS X and Qt again, and I really don't even have the motivation to start on that.
But it would still be nice to apply bugfix submissions, and keep the code compilable going forward. So to that aim, I have started on a new GUI using hiro, with the aforementioned limitations that this will only work under Linux and BSD. I've decided to call this new UI "tomoko" (if you get the joke, you win a cookie!) It's going to follow the UI paradigms of v094 very closely (game folders, etc), but with even more minimialism. I want to keep the codebase as small and nimble as possible, so that even radical changes to eg hiro can be applied without a massive amount of effort.
The primary goal of tomoko will be just so that I can build and test bugfixes, and as such, it'll be entirely devoted to the design I am wanting. It will also allow new versions of the core library (in other words, the non-GUI portions) to be compilable under all platforms, which will allow other projects that utilize higan to use updated versions.
The long-term goal I am really hoping for is to find some people willing to help maintain a new UI, which I would want to be more in the spirit of bsnes v070/Qt. In other words, loads of features, ease of use, ability to use regular ROM images and patches, and all of that. I've realized this isn't going to happen with me in absentia, so I'll see about possibly setting up a shared repository; but I'm also not going to be able to drive something like this alone, so if there isn't much interest, then this won't happen either.
So now for the good news, tomoko's already capable of loading and saving games, and has video, audio and input hooked up; along with the library and input manager UIs connected. Still a long way to go, but after a full year of zero activity, it's at least some form of progress. Here's a screenshot of it in action. Not much to look at, of course.
My SRS tool is mostly finished now. I am calling it renshuu (練習). Yeah, unfortunately Anki already took the best Japanese word for this kind of software. Oh well.
The SM2 model that Anki uses was too complex (or just too poorly explained) to implement, so for now I'm going with a ten-stage Leitner system. I've designed the card scoring to allow for model changes at any time without losing all of your previous review scores.
The deck itself is of course in BML format, and beautiful to look at in any text editor.
The program itself contains a deck manager, a deck editor, and a deck reviewer.
Here are some initial screenshots of the program in action:
So, with this, I'll be able to get back to studying tomorrow. "Yay."
I ended up receiving a lot more responses to my previous post than I had expected. Around 100 e-mails, and another 100 or so comments on various forums.
I'm extremely grateful for the kind words from everyone. And I sincerely apologize, but I haven't really been able to reply to many of the messages. But please know that your words are appreciated all the same.
I picked up the げんき textbook series recently, and I've now finished the first of the two books. The first book was mostly stuff I already knew, but it never hurts to polish up on the basics and get some practice in. I even did every exercise, although it was hard to improvise many of the classroom-based ones.
About half of the content in the second book looks to be stuff I don't yet know. Along with the new vocabulary words gleaned from the first book, I will need to stop for a while and get SRS software up and running before I proceed. Otherwise I will just forget most of what I've learned.
Overall, I'm fairly disappointed that years of studying has resulted in me only being able to pass the JLPT N5 (equivalent to 450 - 750 hours of study.) The N1, which is roughly on par with middle-school fluency, requires 4,500 hours of study. So, a very long way to go still. But, this time I'm changing up my studying methods.
I would still really appreciate it if any native or N1-level speakers wouldn't mind chatting with me from time to time so that I can practice. In return, I could help with teaching English or programming stuff, in which case we'd try and divide the time 50/50. If you'd be up for that, please ping me at hotmail.com, setsunakun0.
I've upgraded to FreeBSD 10.1-RELEASE (amd64). So far, I'm very happy with it. Lots of the upgrades and enhancements are very much appreciated, so even despite the issues below, I'm happy with the upgrade.
Now that the base has a stable version of GCC 4.9, I've officially switched to C++14. Right now, Clang 3.4.1 seems to be unable to run hiro, and a backtrace isn't revealing any useful clues.
As far as new bugs, I encountered two regressions. The first was Chrome not
displaying properly. Chrome seems to assume that hardware OpenGL acceleration is
available, even when running with the VESA driver now. So, I run with
chrome --disable-gpu to resolve this.
The second bug was a lot nastier. It requires three components to trigger. First, it only happens when using the VESA Xorg driver. Second, it only happens when using the Thunar file manager. Third, it only happens when using custom Xorg mouse cursor themes (almost all of them are affected, including Vanilla-DMZ.)
When opening a folder that has a large amount of files, or is mounted remotely, the cursor would disappear. It would stay invisible until you moved the mouse, at which time it would reappear. But the second you clicked again, the cursor would again disappear. Nothing short of restarting Xorg entirely would restore it.
I wasn't about to go back to the kernel-panicking nvidia binary drivers, and I don't yet have my Thunar replacement completed, so I opted to use the hideous stock black cursor theme instead. Sigh.
I'm currently in the design phase of creating an SRS tool, and I also need to create a tool to track my article / manga translations, so that I can try and get them reviewed and corrected.
So, I am forced back into programming for a bit. But I'll need to move quickly; as I don't want my study habits to decay again. I'm trying to keep up a pace of studying at least four hours a day, but would really like to get that up higher still.
This past year, I've become increasingly disillusioned and unhappy that my only really serious talent is in computer programming. Everything else I try and excel at goes absolutely nowhere.
My studying has been off and on, but I realize that I've spent the last fifteen years of my life drawing and studying Japanese. I'm getting old, and my health is starting to fail. And yet my drawings look like something a ten year old would make, and I sound completely retarded whenever I try and say anything in Japanese. This is insane. It makes my physically ill to think about. Even if by some miracle, I mastered both of these tomorrow, half of my productive life in using these tools has been permanently lost, and I can never reclaim that time. At this rate, I won't be skilled in either before I am too old to do anything anymore. I'm going to end up dying almost entirely with regrets.
I'm so fucking tired of it all. No amount of studying or practice ever seems to lead to any meaningful improvement. These human brains, especially mine, are so unbelievably fucking terrible. Intelligent design my god damned ass. It is absolutely absurd that to memorize a single word, I have to drill on it literally thousands of times before my brain takes the fucking hint. And by the time I do it, I've pushed two other words that I used to know out. Nobody would design something so unbelievably stupid, cruel and frustrating, unless they were a sadist.
But I won't ever give up: I'm just going to have to go completely insane on it and dedicate every last free hour I have to them. Life isn't worth living if we can no longer better ourselves.
This will be probably the longest shot I've ever taken, but ... if anyone out there is fluent in Japanese (as in, not "I took a college course once and I have a Japanese girlfriend"), and is willing to chat with me about anything, I would truly appreciate that more than words could express. I'd be happy to return the favor with lessons on English, programming, emulation, reverse engineering, ROM hacking or server administration. I need someone to have actual communication with. But I know what a tall order that is: who would want to talk to someone they could barely understand, right? It drives me up the wall trying to listen to people who can't speak English, so it's only fitting that the reverse would apply to me. It's not that I choose to be annoyed by bad English, yet it's still karmic justice, right?
Still, if anyone were interested, my e-mail is the same as always. On hotmail.com, the user name is setsunakun0. Note the zero, not capital 'o'.
But ... I have to refocus my time. I can't spend it all on the billion and a half programming projects I've started. I need to start dropping projects. There is no intellectual pursuit in continuing something I've already mastered, and I simply don't have the time for it if I want to seriously study other things.
I'm so hesitant to just outright quit on higan, but I don't want to be like the authors of the major SNES emulators who dick people along and pretend they're still active projects that just haven't had an update in 8+ years now. So at this point, I will just painfully say ... higan is dead for now, sorry. If and when I can attain some joy out of other pursuits in life, I might resume it then. But if history is any indication, I wouldn't count on it.
As for my other projects ... a lot of them are basically "complete" in a way that an emulator never can be, so there's no great loss to not receive updates to eg libco. And I'll still probably push out some new builds for bass and beat, just to get them up on the new site.
I'm still going to have to do some programming: I need to build out SRS learning tools and such. But I can no longer ask or recommend anyone to use any of my libraries such as ruby or hiro. Which is probably for the best, as I never did manage to produce anything resembling a stable API in all of my years as a programmer.
My dreams of building a programming language, GUI library (not wrapper), and forum software are going to have to die here.
Well then, off to study ...
The site is now being generated via Document Markup Language (DML), along with server-side CSS variables for styling. Very nice to not have to manually write out HTML tags anymore.
All old forum accounts with at least 15 - 20 posts have been activated on the new forums. For anyone else waiting on an account, please be patient: I'll open up registration again as soon as I have the time.
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.
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.
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.
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.