November 2007 Archives

AMD taking a page from Intel’s marketing

AMD’s new Phenom processor comes with a new instruction set called SSE4a. For a while I’ve been running under the assumption that this also meant they caught up and added support for SSSE3, and that SSE4a was simply SSE4 with a few new instructions added on. This was pretty cool to me, because SSE4 has some nice instructions like DPPS that I was looking forward to using.

Turns out it’s not so – SSE4a doesn’t include any of the 54 new instructions in SSE4. What it does add is 8 new instructions, one of which is similar to but incompatible with a SSE4 instruction. SSE4 aside, the Phenom still doesn’t even have support for SSSE3.

Although they have improved quite a bit recently, Intel is well known for using anti–consumer tactics in marketing in the past. The "GHz myth" they started will undoubtedly be fresh in the minds of weary techies for years to come. I never expected AMD to sink to such underhanded marketing, but it appears they have: SSE4a is named to be nothing more than confusing to potential consumers.

C++0x work progressing

A bit delayed, but I just found the results of the October 2007 C++ meeting. In it, they voted in several really nice things for the C++0x draft:

Using proper punctuation marks

I recently learned that the lovable character between the 0 and the = key on QWERTY keyboards is not a hyphen (U+2010) nor a minus (U+2212), but a hyphen–minus (U+002D). Not just that, but I learned of the existence of various dashes, such as the figure dash (U+2012), en dash (U+2013), and em dash (U+2014).

Using proper punctuation marks can be especially hard for the simple fact that they don’t exist on my keyboard. Microsoft Word will automatically replace two hyphens with a dash, but what about the rest of the apps I use? For now, I’m stuck using the tedious Alt+Numpad formula, or copy–pasting from the Character Map. I think this auto–correction would be a great thing to integrate into Windows, perhaps into an IME. Call it the next evolution of input, like how speech recognition was added to Vista.

Working with cryptography; turns out it’s not so simple

While coming up with a new list format for PeerGuardian 3, I decided it should have built in digital signatures, so everyone getting lists can verify the integrity and who the list came from.

Although I’ve used crypto systems like GPG before and understood the basics of it, I’d never implemented one myself. So after much research, I decided on LibTomCrypt due to its simple API, stellar documentation, and support for modern algorithms like AES and ECC. Being entirely in the public domain is a good perk, too.

The first iteration is a very basic public key system. After further reading, I’ve decided it would be useful to implement a full public key infrastructure – that is, signed keys and possibility of revocation. This allows Phoenix Labs (or anyone else) to sign other public keys to verify they’re legit and trustworthy, and later revoke the key if something happens with it (such as the private key being leaked).

All in all, it’s turning out to be a lot more work than I expected, but I don’t mind – it’s something new and interesting, which seems to happen less and less these days.

Visual Studio 2008 released, TR1 support coming

Anyone following Visual Studio 2008 will know that although it offers a plethora of new features for the managed world, there was little focus on the unmanaged side of things. Now that it is finally out the door, I guess it’s a good time to look at what few new features are there for us unmanaged C++ coders.

Not much, huh? That’s because Microsoft was running under the assumption that people would flock to C# and only use unmanaged C++ to maintain "legacy" code. Perhaps the best news so far, they’ve finally realized their mistake. Although they didn’t have time to put things into VC++ 2008, they have re‐committed to unmanaged code for the next version and in the meantime made a small separate announcement that they will be bringing VC++ 2008 users a mostly complete TR1 implementation update in early January.