2007-04-12

Updates: Dell's 2407WFP, Vista.

Before I mentioned that my 2407 was getting terrible artifacts.

So...

It turns out they go away if you plug it into the other port on my graphics card.

Doh.

Also, I mentioned that I was using mostly Microsoft apps on Vista. Some changes:

  • Windows Media Player has been sacrificed for Foobar2000 for music, after it "removed" most of the id3 tags from my mp3 files. Nitpickers' Corner: Technically, it didn't remove the tags at all.
    • Windows Media Player (and Windows Explorer) (and, for other things, pretty much the entirety of Windows) likes things in UTF-16. Most of the files in my collection have both id3v2.3 and id3v2.4 tags.
    • The 2.4 version of the tags, having been written by Picard (which, by default, writes UTF-8 tags (which I'd have probably picked anyway)), were not acceptable to WMP.
    • In this situation, WMP reads the 2.3 version of the tags (which has some nasty limitations like, for instance, cutting off all fields at a certain length), and writes a second id3v2.4 block to the files, at the start.
    • Next time anything attempts to read the file, it'll see WMP's 2.4 block (containing just the 2.3 information), skip over the real 2.4 block, and see the original 2.3 block, making it look like the tags have gone, whereas they're actually still in the file.
  • WMP is still in use for video playing, but most of it's decoding is now assisted by ffmpeg, which is awesome.
  • IE7 has now disappeared for Opera. Yaaaay, Opera.

2007-03-23

Vista!

Yay, Vista arrived, thanks to Microsoft for running the developer "competition", and thanks to Ian Moulster for keeping us posted.

Everything worked fine, even automatically grabbing the drivers for my (unflashed) SI3114 card up off Windows Update, and telling me to install the drivers for my X-fi.

So far, I've only had one major problem: The GUI is slow. Far too slow.

I expect that some of the slowness is actually being caused by Windows itself, but the one-second-plus black screen whilst switching to the secure desktop for UAC sounds incredibly unlikely. I've not worked out what to blame for this yet, but the nvidia drivers and the creative drivers are high up the list of possible candidates.

For reference, I currently have a Windows Experience index of 4.2 (RAM and CPU limited), and have tried disabling Aero and desktop composition, updating graphics drivers, etc.

I find it strange that, despite getting a 5.9 Experience index for "Graphics" (ie. desktop), the Vista required specs, quotes some rather vague definitions for "adequate graphics memory", which makes no suggestions as to what would be recommended for ~4MP (3520x1200). Some event log messages suggest I'm running out at 256MB, which is bad. :/

Other minor things (note that, bar Miranda, Daemon Tools and BOINC I've been sticking to mostly Microsoft apps (yes, even IE7 and Windows Media Player)):

  • The "official" OpenSSL binaries use an old version of MSVCR71.dll, which I didn't feel like installing (I'm sure I'll pick it up when I install some crap later), building them is easy: perl Configure --openssldir=c:/openssl VC-WIN32 ms\do_masm nmake -f ms\ntdll.mak nmake -f ms\ntdll.mak test nmake -f ms\ntdll.mak install
  • Textpad 4 (I didn't get along with 5) needs to be run as Administrator to add itself to right-click menus.
  • You can no-longer set a PNG as your wallpaper?!
  • It'd be nice if there was some official support for XVid and Ogg/Vorbis (and maybe some other free (as in, to implement(ish)) standards, the second doesn't even have an unofficial solution for WMP/Vista.
  • Aero picks up the artefacts in my tft quite spectacularily, damn.
  • And, most importantly, I suck at pre-format backups. :(


2007-03-06

Learning Dvorak, take 1.

Having decided to look at Dvorak again, and having completely failed to find any software that was even remotely interesting (I couldn't cajole Typing of the Dead into working with Dvorak) to teach typing, I reverted to the classic "look at a layout and try and type with it".

I got bored of looking for the keys.

After having played with SVG/javascript as an alternative to Flash with 'motes' (temporary hosting, might not be up), I thought I'd have a go at adjusting it into a mini typing tutor.

Note that that's almost completely clientside, the php is used only to dump the default message in the text box, which could be done in JavaScript (probably easier, too, die, magic quotes, die).

It completely doesn't work in IE (I haven't tested any SVG plugins), and has a weird JavaScript array bug in Opera (still works, just doesn't look perfect). So, much to my shame, I'd suggest trying it in Firefox.

And, on a related note, it strikes me as odd that Scalable Vector Graphics use absolute coordinates for everything internally.


2007-03-01

cl /out:filename.exe

I was minorly confused today as to why all of my lovely compiled programs were disappearing and, instead, I was left with some empty files called ut.

For example, a test C++ file:

echo int main(){} > empty.cpp

Compile it:

>cl empty.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86

Copyright (C) Microsoft Corporation. All rights reserved.

empty.cpp Microsoft (R) Incremental Linker Version 8.00.50727.762 Copyright (C) Microsoft Corporation. All rights reserved.

/out:empty.exe empty.obj

As it clearly says, this /out:puts to "empty.exe". Okay, I don't want it to output to "empty.exe", I want it to be called "full.exe". So, I add /out:full.exe to my build script (along with all the normal junk like /MD and /nologo), and the output is now:

C:\Desktop>cl /nologo empty.cpp /out:full.exe
cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
empty.cpp

Curious, but only a warning, let's ignore it.

..and full.exe doesn't exist. Neither does empty.exe. There's just this empty, zero-byte (according to Explorer) file called "ut".

What's happening, and what's not immediately obvious if you don't read boring warnings, is that the compiler it outputting (/ofilename to write the output to filename) to "ut:wrong.exe", which is the NTFS alternate data stream called "wrong.exe". Woops.

For reference, the message comes from the linker, not the compiler, which does use /out:filename, and the non-deprecated version of /o for the compiler is /Fefilename. Much clearer and easier to remember. Not.


2007-02-21

C/C++

I hate that term. People write it on job applications and job specifications. People use it in conversation. People use it on reference sites and books, gah.

I hate it because it gives C++, a lovely language, a bad name. Below are some examples, both of these are nowhere near the most efficient way to do these in either language, but they are the most obvious way, and the ones you're likely to see:

C

#include <stdio.h>

int main() { char name[20];

// Crash here if name > 19 characters:
gets(name);

{
    int length = strlen(name) + 4;

    // Manual memory allocation, no exception safety.. wait, what exceptions?!
    char *row = (char *) malloc(length);
    int i;

    // Clean the memory so strcat works:
    memset(row, 0, length);

    for (i=0; i < length; ++i)
        strcat(row, "*");

    strcat(row, "\n");

    // What does that format string do? Nobody knows.
    printf("%s* %s *\n%s\n", row, name, row);

    // Cleanup:
    free (row);
}

}

C++#include <iostream>

include <string>

using namespace std;

int main() { string name; getline(cin, name);

string row;

for (int i=0; i < name.size() + 4; ++i)
    row += "*";

row += "\n";

cout << row <<
    "* " << name << " *\n" <<
    row << endl;

return 0;

}

I hope, from that, you can see that there's absolutely no similarities at all, in any way, between those two programs (they both do nearly the same thing, differing only in that you can easily crash the C one).

Ignoring the fact that it's simply sane, you get pretty much the entirety of C to play with so, if something is easier to write in C, do so, plus "templates, exceptions, namespaces, constructors/destructors (and therefore RAII), virtual function polymorphism, references, operator/function overloading, reusable standard generic containers, explicitly named casts" and, best of all, Boost.

If you're still not convinced, the closing evidence should be that it took me seven attempts to get the C one not to segfault on run, and the C++ one worked first time. :)


2007-02-14

Music in pieces

I was involved in a discussion a few days ago about my favourite track featuring a guitar.. and I realised that I really don't listen to anything with guitars in. All of the music I listen to tends to lack guitars, and, in fact, stringed instruments of any kind (I'm including the piano here).

Further than that, it tends to lack instruments that I can't distinguish between whilst it's playing. To pick an extreme (aha) example, Straight Ahead (Hardcore remix) ( sample: as .ogg ), despite sounding awfully chaotic, contains "clearly" distinguishable instruments (I count seven), each of which are on their own "channel".

When I say "clearly", I mean that you can work it out, not that it's easy to do so. It takes me a depressingly long time. I'm using the MOD definition of "channels", ie. if you have a set of audio samples (snippets), you can only have one playing on any given channel at a time.

This raises a couple of interesting (at least, for me) questions:

  • Can you teach a computer to take it back to samples and a playing order? Assuming this is insanely hard to do, can you do it for a restricted set/layout/etc. of songs, and/or with human interaction?
  • Would the sampled version offer better quality/compression? This depends on loads of things, like track length, repetitiveness, how well you can store the samples themselves (lots of little dissimilar files tend to be harder to compress than a long one), etc.
  • Assuming it does, and the artists are in on it (ie. you don't have to do the conversion), would this help with music distribution? How small can you get a 70min CD?
  • Can people with "different" hearing to me distinguish between guitars/other string instruments in anything but the simplest of songs?
  • If so, does people's varying ability to "focus" on the music change their enjoyment of it?
  • What would you do with partially discrete instruments like pianos, where more than one key can be held at once, producing a subtly different sound. 88 samples or one sample and fiddle the frequency? Fading off over time? Fall back to what'd have to be done with voice: try and seperate out "verses" of piano, and have them as a sample? Piano Track would be particularily susceptible to that.
  • Could one design a game based on people's ability to pick out instruments/number of channels? It'd have to be more fun than DDR and Guitar Hero. ;)
  • Do I really think that I can rate tracks simply on the number of channels they'd require to compose, ie. their compressability? ie., for ogg, Chris Lake - Changes(musicbrainz) (generated by oggspot and sed).
  • ..and so on.

This unfocused ramble was sponsored by Lasse Gjertsen's Ameteur (two channels).


« Prev - Next »