Category Archives: Personal

Used to describe topics that pertain mostly to myself.

Debugging issues booting a PC in 2018

I figured out a solution to a hardware troubleshooting problem I’ve had going off and on for at least a couple of years.  I feel like others might run across it and, not knowing anywhere better to note it, suppose I might as well dump it on my blog and hope search engines can make it available to those who need it.

Anyways, the problem is that sometimes my computer wouldn’t boot.  Particularly after power outages (in retrospect, clue 1).  Sometimes resetting the CMOS would work.  Sometimes resetting CMOS wouldn’t work but pulling various cards / memory modules around and reseating them would work.

Once when I encountered this issue, I discovered that plugging in my monitor using HDMI instead of DisplayPort worked (clue 2).  This, however, lead to a separate problem which took me months to figure out (HDMI only supports 30 fps on my monitor’s native resolution, an issue fixed an a later rev of my monitor’s hardware). Continue reading

Things

I haven’t updated in awhile. This isn’t going to be much better, but it’s something.

Just got done with another long day at work. I will be leaving very soon to do my final class presentation (on a MySQL-backed Catalyst web site). After that I will be hitting the road tonight to drive 4-5 hours in order to see the Change of Command for one of my former Executive Officers, now taking command of my old ship (albeit the “other crew”…)

I hope to get more time for other things soon! :-/

Benoît Mandelbrot

So it seems that Benoît Mandelbrot has died today.

If you’ve never heard about him, he was famous to many people for using computers to delve into mathematical studies about that had what he called “fractional dimension” instead of being simply 1-dimensional or 2-dimensional. These shapes would end up being called “fractals”.

Perhaps the most famous fractal is the one named after him, the Mandelbrot set:

Mandelbrot Set, from the Wikipedia article.

I bring all this up if only because it’s probably how I seriously got started in programming. My father had somehow acquired an old Compaq laptop which he let me use when he didn’t need it (which was often!)

For whatever crazy reason my high school actually offered a programming course, teaching Turbo Pascal 7.0. I ended up getting a version of that to use at home on the laptop, but since this was before the Internet was common I was kind of stuck as to what to do next.

I ended up reading about Mandelbrot fractals in the library, and they were very simple to make. I’m not sure where in the Turbo Pascal examples I found working code to do graphics-mode things, but I did, and eventually I had a program that could make fractals in full 320x200x8bit Mode 13h VGA glory.

Of course, I couldn’t for the life of me figure out how to save them to disk. I still had a lot to learn. ;) I think I had ended up getting a working PCX image writer before I was able to figure out Windows .BMP.

That gentle sloping introduction to programming was much better than teaching languages like Logo or more formal courses in my opinion. Results were almost instant, the problem setup was fairly easy, the output looked much better than plain old “Mad Libs” type of problems, and there were plenty of opportunities for improvement to explore when I got bored.

So even though I’d had an introduction to programming earlier with the Apple ][c+, it wasn’t until I came upon Mandelbrot’s magical fractal that I started seriously investigating how to program, or why I’d want to.

So here’s to you Dr. Mandelbrot. Thanks for always looking further into what happens when you zoom just a little bit closer…

Timing belts

So… the engine on my Chevrolet Aveo abruptly stopped working today. Always a nice experience!

After getting it towed to a local mechanic who asked what happened, I related how the engine pretty much just stopped, all power-assist features went away, but the electrical gear still worked fine. I also told him that I was thinking it was probably a belt that broke or something.

  • The good news: I was right! :( — Specifically, it was the timing belt.
  • The bad news: The engine on the 2004 Aveo seems designed to self-destruct in this particular failure mode. Initial best-case estimates for damages are in the range of $1500.
  • The worse news: This is a known problem for 2004 Aveos (my model year). For instance, try Google searching for aveo timing belt and be absolutely amazed at all the 2004-specific hits that pop up.

My car was at about 53,000 miles, the timing belt was supposed to be replaced at 60,000 miles (and had been inspected sat at around the 30,000 mile point). I even bothered having regular maintenance performed. Apparently Chevrolet knew about problems with the timing belts, as indicated by a Technical Service Bulletin 06-06-01-021 (the summary of which can be found at the National Highway Transportation Safety Administration 2004 Aveo TSB listings). I don’t have access to the full text but apparently GM would pay for the belt to be replaced (sans labor) before 55,000 miles, but that offer has since been rescinded.

So I called Chevrolet customer service, who essentially told me to go pay for the car to be towed to an authorized dealer, pay for an official inspection of the damage, and then they would decide whether they would show any responsibility for the damage caused. I’m OK with paying to have the car towed, and even to have them perform their inspection, but not without some measure of what I can expect to get in return besides “we might pay for part of the repairs”. Especially when the non-dealer shop is refusing to mention “best-case” prices below $1500! I don’t even want to think of what the “authorized dealer” would charge to fix their own shoddy parts sourcing. For that matter, I wonder how it is that GMAC Financing and seemingly every other GM-related subsidiary never had problems sending me junk mail, but receiving fairly serious technical bulletins describing engine-totaling casualties was left out of the mailing loop.

So this is my warning to you, if you have a Chevrolet Aveo, get that timing belt replaced probably every 40,000 miles or so (30,000 might not be bad either) until you can feasibly get rid of the car. One of my friends always made fun of me for buying a Chevy, and now I see exactly how right he is… Sayonara, General Motors.

Retro tunes with Phonon

So, in The Beginning, when I was just a young padawan on the Internet, I had been let into a glorious secret: Emulation (not of IBM System/360 machines, but of more important things like the Super NES). Some branching from there led me to zophar.net, a popular emulation site, and their message boards, and also left me with a fascination with emulation.

The attributes of some of the older systems like the NES and Super NES made it fairly easy to capture their music-producing software, since those systems used separate co-processors to handle music effects. NES music would be stored in the NSF format, and SNES music was handled with the SPC format (named after the audio chip used, the Sony SPC700). There were (and still are) specialized plugins on many systems to play these formats (they emulated only the music chip, not the rest of the system).

I’ve been involved on the periphery of some of these things for the past couple of years. (For instance I had written a KFileMetaInfo plugin for KDE 3, and had helped Chris Lee with adding playback support to GStreamer.

One problem with the previous GStreamer solution (which I’ll call gst-spc) is that the underlying playback library, libopenspc, is written in x86 assembly, and has some crash bugs associated with it as well. As well the code has long been orphaned. I’m not really any good at writing emulation code and although I could learn, it would take far too much time for me to do anything useful.

Luckily for me the state of the art has advanced and last year I was pointed to a library called game-music-emu. This library included a very good SPC emulator written in C++, which had been merged into some popular SNES emulators already. Unfortunately it didn’t really have a great build system (using it involved simply copying it into your existing program) so my initial proposal to port GStreamer to use game-music-emu by simply including the source files with GStreamer was rejected. The GStreamer devs preferred to have an external library which could be used (or not) and I couldn’t blame them since in general good OSS projects avoid copying or forking external code.

So I contacted the game-music-emu author (Blargg) asking about the possibility of adding support for building a library, and ended up with commit access and an invitation to do it myself. Hmm.

So I did, and awhile ago I had made a release of “libgme” 0.5.5, working with Blargg has he got free time. My subsequent patch to GStreamer was accepted and since gst-plugins-bad-0.10.14 it has been possible to use libgme to playback many emulated music file types (not just SNES, but others as well).

With that solved I left the issue, but I recently came back to it since I figured out that even after upgrading to gst-plugins-bad-0.10.17 the other day, that gstreamer playback was not using libgme, but the older libopenspc.

At first I thought it was simply my fault, as I’d still had gst-spc installed from years and years ago. Removing gst-spc and libopenspc (just to be double-sure) left me with no SPC playback features. Running gst-inspect confirmed I did not have any gme decoder. WTF.

I then again thought it was my fault because I had installed libgme to /usr/local instead of /usr. So I dutifully wrapped up libgme in an ebuild and installed it. And still nothing. WTF.

I dug into the Gentoo ebuild for gst-plugins-bad and it seems that for whatever reason not all possible plugins are installed. It seems the new installation method is supposed to be that each individual plugin is supposed to have its own ebuild (i.e. gst-plugins-gme), like how Gentoo has split out other packages like KDE into individual ebuilds. Fair enough.

I write another ebuild, and finally hit paydirt:

Screenshot of music player playing SPC files
The Qt example music player playing SPC files

Obviously this does require that you are using the GStreamer backend for Phonon to have this work, otherwise you can just try it in some other GStreamer-using application. (I’d show it in JuK but I’d have to add SPC support to Taglib first)

If you’re interested in the ebuilds I used you can use this Portage overlay, (SHA-512 sum c0ff9aa5413b0c0b14f7c52d5b3ee887edc4e7bf47182e58c21e9c340d8ff7e9). The overlay may or may not work for you, and I don’t even know if overlays are still the “hip” way to do things in Gentoo, but It Works For Me. ;)

So long 2009

So 2009 is expiring where I live.

The year was shaping up extravagantly 12 months ago. We were expecting our second baby soon. My ship had just come off a spectacular (for SSBNs) patrol, and had won the squadron Battle “E” and even the Omaha Trophy. I was due to rotate to a nice shore duty soon.

In my volunteer efforts, KDE 4.2 was shaping up to be a fantastic release of the KDE Plasma Desktop and associated platform software. I was even going to get to visit my family in the upcoming 2009 summer and reconnect with a lot of people I hadn’t had a chance to see in awhile.

As it stands though, 2009 has been a massive heartbreak. Good riddance to a horrible year. Here’s hoping 2010 can’t get any worse.

“Decontamination efforts continue at the Pyne residence…”

I don’t normally post about noteworthy disasters in diaper changing because, well, duh. Babies and toddlers in diapers will result in messes.

But this last one was so bad that it nearly should have resulted in news coverage, a Federal disaster area being declared, cleanup crews in the HAZMAT suits, etc. YUCK.

Token KDE reference for pk.o: I’m working on improving kdesvn-build docs, more on that later.

GNOME + Slashdot

So our brothers/sisters at the GNOME Project managed to hit the front page of Slashdot.

There’s a lot one could say about the topic, but I’ll just leave it at this: I think it’s ironic that a project started essentially entirely due to the non-Free nature of Qt (at that time) would decide to separate from the Free Software Foundation and GNU based on Richard Stallman’s disapproval of proprietary software. I guess the times, they are a-changin’.

The November update

So it’s been a busy month for me:

At work I’ve qualified as an instructor, qualified as Command Duty Officer (basically the senior-most officer on duty when everyone else goes home for the day), and just today I’ve become the Division Director for my division. Basically it just means way more work (I spent 10 hours at work today…) but on the other hand I’ll eventually get my picture on the posted Chain of Command pictureboard at the entrance. Not sure that’s the best tradeoff ever but that’s the major job I was assigned here for in the first place so onward I’ll go.

My class has a sense of humor. I mentioned yesterday that we always ran out of a particular flavor of coffee creamer first while underway. When I walked into the class today there were two little individual-sized creamers waiting for me. :)

On the KDE front, I sent the KDE.news story about Sheldon’s T-shirt to a friend of mine who watches Big Bang Theory. I’ve switched kdesvn-build in trunk to not use any specific remote alias names for git repositories (since people who already had a repo clone couldn’t just use it with kdesvn-build). Finally I’ve been testing a patch to fix a JuK crash-on-shutdown bug. (My reproducer hasn’t gotten back to me though, so it may end up in trunk with me being the only tester :-/). Oh, Jeff Mitchell and Kubuntu conspired to get support for ASF and MP4 added to JuK (requires taglib 1.6, with support for MP4 and ASF specifically enabled). Still to do is to actually make a new kdesvn-build release, change the kdesvn-build name (I’m accepting reasonable suggestions!), and somehow, someway, eventually port JuK off of qt3support and kde3support.

Last (but certainly not least), on the personal level I’ve been super-busy learning LaTeX so that I could turn in two research papers (due on the same day, THANKS PROFESSORS! :P). Now I have to prepare related presentations (which I’m going to use LaTeX Beamer for).

The most somber assignment deserves its own paragraph: We received the death certificate for Emma in the mail recently. We know as much now as we did when she died; the cause of death is listed as undetermined. I need to find time during the working day to run to various Navy offices to handle the administrative mumbo-jumbo of updating my record of dependents to match. It’s still weird. Every day that I really focus my thoughts on Emma, I still don’t really accept that she’s dead. Not sure when it will finally hit me but I’m not looking forward to that day.