RSS 2.0 | Atom 1.0

Sign In


# Wednesday, December 03, 2008
Windows Live Installer for Windows 2008
I wanted to install the new Windows Live -- Messenger looks better (normal windows instead of custom, yey!). Unfortunately, the installer (wlsetup-web) has an annoying version check. Fortunately, it's nothing OllyDbg couldn't patch.

For the paranoid, you can check it against the original:

>fc wlsetup-web.exe wlsetup-web.original.exe
Comparing files wlsetup-web.exe and WLSETUP-WEB.ORIGINAL.EXE
00019DDD: C3 6A
00019DDE: 90 20

I've only tested on Windows 2008, 32 Bit, English, and I only installed Messenger. But it appears to work just fine. (I had to manually uninstall the current Messenger version first.)

Here's to hoping the final version of the "new wave" of Live removes this check for us. Enjoy!

wlsetup-web.exe (990.5 KB)
Misc. Technology
Wednesday, December 03, 2008 2:48:06 AM UTC  #    Comments [1]  |  Trackback

# Thursday, September 18, 2008
SQL 2008 Change Tracking with LINQ-to-SQL
I hacked up a little class to enable us to use SQL 2008's Change Tracking feature with LINQ-to-SQL. Change Tracking allows you to see which keys (and optionally columns) have changed in the database from a specific version. The SQL docs have a great overview with lots of examples and information.

Basically, we get a special CHANGETABLE function to SELECT from, which gives us the change information and keys. Additionally, there is the issue of versioning. Changes are only kept so long, so we want to make sure the last version we sync'd is still compatible, otherwise we have to re-initialize.

Finally, in order for our change SELECTs to be coherent, we need to snapshot the database. The easiest way to get this is by turning on Snapshot Isolation. Snapshot isolation allows us to read a virtual snapshot of the database. Any changes made from when we begin our transactions are not visible to us and we do not lock anything we read.

Here's an excerpt from a class I have to provide change tracking for our database:
public DbDataChangeProvider(long lastVersion) {
    this.lastVersion = lastVersion;
    this.txScope = ChangeTracking.GetSnapshotScope();
    var validV = ChangeTracking.GetValidVersionForAll(dataContext);
    baseline = lastVersion < validV;
    currentVersion = ChangeTracking.GetCurrentVersion(dataContext);
We take in the last version, then initialize a SnapshotScope. We get the minimum valid version and see if we're going to have to generate a baseline (re-init) or not. Next, we grab the current version of the database, so consumers can save the version for when they sync up next.

To get changed keys, you can do this:
ChangeTracking.GetChangedKeys<string>(dataContext, "Accounts", "AccountName", lastVersion, System.Data.Linq.ChangeAction.Delete);

This will give you an enumeration of all the Deleted keys; use other ChangeActions to get Insert or Updated. There's also a filter (SQL string) to limit further.

To get changed _items_, you can pass in a Queryable, like this:
ChangeTracking.GetChangedItems<Account>(dataContext, dataContext.Accounts.Where(a=>a.Balance>10), "Accounts", "AccountName", lastVersion);

The code should (seems to work for me) figure out your query and inject the JOIN to the CHANGETABLE function. The code is linked at the end of this article. Some of the functions use a Tuple type; if you don't have it, I've posted it elsewhere on this site. Or, you can delete those methods; they are only for 2-key tables.

ChangeTracking.cs.txt (9 KB)
Code | Misc. Technology
Thursday, September 18, 2008 2:03:46 AM UTC  #    Comments [0]  |  Trackback

# Thursday, June 26, 2008

[Reposting because it appears to have been deleted somehow.]

A bit ago, I posted some info on doing CRUD operations using LINQ: http://www.atrevido.net/blog/2007/08/26/A+LINQ+To+The+CRUD.aspx

This is a lightweight way (no codegen at all, only 2 lines of code per table) to get some CRUD stuff with LINQ. It's not the most efficient or fantastic way of doing things, but it works fine in the several projects we've used it so far. And we get to use C# 3's expression trees, which is a fantastic and under-exploited feature. At any rate, it does show that doing disconnected work with LINQ is trivial.

The code I posted was for Beta 2 and no longer works. I've since added a few new features, but the basic idea remains the same as before. I'm just posting the new code as I've gotten a few emails and one comment about the old code no longer working.

DatabaseBase.cs (10.47 KB)

While working on it in a real project, I started using our Tuple struct, so you'll need that too:
Tuple.cs (2.8 KB)

As Scott Peterson pointed out, this class doesn't implement IEquatable<T>. Just add it and call the == operator.

As always I welcome any criticism.

Misc. Technology
Thursday, June 26, 2008 4:56:24 AM UTC  #    Comments [0]  |  Trackback

# Monday, December 10, 2007
Access is denied when starting Windows Event Log on Vista

I ran into a strange problem today. The Windows Event Log service would not start, stating an error code 5 "Access is denied". This doesn't make any sense as running the services MSC requires elevated permissions and I'm an administrator. That error message alone didn't give me too much of a clue, especially because I don't know much about the event log service. Also, as the event log service was down, troubleshooting it required a bit more work than usual since I couldn't just turn to the event log.

Fortunately, Vista's ETW (Event Tracing for Windows) provided an easy solution. At a command prompt, I ran "logman query providers". This shows a list of all the installed tracing providers on the system. The interesting one in this case is "Microsoft-Windows-Eventlog". Using this information I could start a trace and generate a report. The report indicated that access was denied creating the System channel. It mentioned a path it was trying to use: %SystemRoot%\system32\winevt\logs\System.evtx

I checked the permissions and they looked ok (SYSTEM had full control). So I renamed the System log and gave permissions to everyone on the folder. Then I started the Event log service and it worked fine. It created a new System.evtx. When I checked the permissions I saw that Event log service runs as local system. Apparently that must be the security required. After resetting the permissions, everything seems to be working fine.

I'm posting this since when I searched for a solution, I found several people asking and no answers. This could be the solution for other people. I'd like to hear if anyone knows what might have caused this mess in the first place.

Misc. Technology
Monday, December 10, 2007 3:18:17 PM UTC  #    Comments [4]  |  Trackback

# Wednesday, April 04, 2007
SQL Replication on a cluster: Error authenticating proxy

We were rolling out a new database that is transactionally replicated to a few other nodes. In test and staging, everything worked fine, but in production, on a cluster, the distribution job failed. The snapshot runs as the SQL Agent account, but the distro runs as a separate account to distro just that database to the subscribers. The error is:

Unable to start execution of step 2 (reason: Error authenticating proxy DOMAIN\SomeUserName, system error: Logon failure: unknown user name or bad password.). The step failed.


We spent about an hour trying to figure out what was going wrong -- all the ACLs were right, the user was in the PAL. Everything was identical in permissions to the other environments.

After a bit of time on the line with PSS, we noticed that if we ran everything as the SQL Agent Account (the cluster service), then it worked. But, this required adding the cluster's account to the subscriber DB, and that was not acceptable.

Finally, our PSS rep suggested we check that the SQL Agent account was trusted for delegation. Bingo. On staging and test, the SQL Agent account is Network Service (or Local System). But in a cluster, it runs as a separate account, and that account is not trusted for delegation. Hence, the impersonation call failed. Simply going into ADUC and trusting it for Kerberos delegation, then restarting the SQL Agent, allowed us to use the proxy accounts without problem.

It seems like this message comes up a lot in context of replication and clusters. Hope this helps someone else!

Misc. Technology
Wednesday, April 04, 2007 1:24:11 AM UTC  #    Comments [1]  |  Trackback

# Wednesday, June 07, 2006
EA Tricks Players into opting in

Just got an Xbox 360 and tried Burnout Revenge on Xbox Live. For some lame reason, you have to play on EA servers (I believe it's so they have more of an excuse to get your details). Anyways, they ask for your permission to use your Xbox live data. The prompt looks like this (paraphrasing):

Can Microsoft share your Xbox Live account with EA?
A = Yes , B = No

This is the standard Xbox 360 convention, where A = Accept/Next/OK and B = Reject/Back/Cancel.

Then they ask two more questions, Can EA spam you with their newsletter, and can EA share your details with other companies. This time the responses are:
A = No, B = Yes

Of course, you're trained to press B for no and by the time you realise they've tricked you it's too late.

Way to go EA, thanks for just making sure we have a reason to hate your company. And Microsoft, WTF? What about making sure the user is in control? MS should not allow their partners to behave like this.

Misc. Technology
Wednesday, June 07, 2006 2:38:14 AM UTC  #    Comments [2]  |  Trackback

# Saturday, May 27, 2006
TF53010 mentioning sp_InsertProjectDetails

I got this error while using Team Build today (from the event log):
TF53010 ... Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression ... sp_InsertProjectDetails ...

According to http://geekswithblogs.net/cyoung/archive/2006/03/09/71820.aspx, this is a bug in the RC (yes, I still haven't had a chance to goto RTM). I'm not sure if it's fixed in RTM or not. At any rate, my issue was that I had 2 shared projects (projects that are included in more than 1 solution). The second shared project references the first. These seems to cause Team Build to die, with no error in the build log. The event log has more details. So, I added a hack of a file reference instead of a project reference for that solution and things seem to build.

Misc. Technology
Saturday, May 27, 2006 10:38:26 PM UTC  #    Comments [0]  |  Trackback

# Wednesday, May 24, 2006
Vista Tablet PC Enhancements

Here's one thing I love: Vista Tablet capabilities :). The tablet input area is always visible as a ~5 pixel deep tab, and it throws a drop shadow on windows in the foreground:

Pointing at it makes it slide out so you can click to open:

I prefer that to the hovering icon that appears on textboxes. Of course, it has nice animations and so on, showing it sliding in and out, and you can drag it around the screen.

Another thing that looks promising: Personalized handwriting recognition. My handwriting is very bad (22 years on a PC and counting!) -- and XP Tablet messes up a lot when trying to read it. Now, via a "Speech Recognition Training"-style UI, you can train it for your own handwriting by writing in 50 different sample sentences. Oh yea, and it's localized too (train for other scripts).

Also, a small, but profoundly useful enhancement: Different pointers and click effects when using a stylus. When you target using a stylus, you get a small diamond cursor. Clicking makes tiny ripples. It looks really superb, and it's great to get that kind of feedback. Although, at first it scared me, cause I thought my screen was damaged, and the rippling was from pressign on the LCD too hard ;).

Along with pen-mode feedback: holding down the pen button ("right click") adds a circle around the diamond pen cursor. Right clicking makes the circle do a beautiful blue "energy" glow. The cursors don't show up in my screenshots, but here's the right-click energy circle thing:

Finally, a "Pen Flicks" feature makes navigating and so on by pen easier. If you, well, flick the pen up/down/left/right, you can scroll or move that way. Perfect for web browsing, reading, etc., even though my Toshiba R10 has a directional button on the display. There's also an edit mode so you can do things like undo, etc.

Now I just need to install Office 2007 (OneNote in particular) on my tablet to see if there's some awesome integration and so on...
Misc. Technology
Wednesday, May 24, 2006 8:32:30 PM UTC  #    Comments [1]  |  Trackback

Vista Beta 2 Still can't scale DPI correctly

One of the big features of Vista was supposed to be that it was resolution-independent so that high resolution displays can be used. This makes extra sense when you think of Media Center on high-res systems. I have a Dell 24" LCD, 1920x1200 resolution and I run Media Center on it. Outside of Media Center, things look horrid. So I gleefully installed Vista Beta 2...

You still have to reboot after changing DPI. Sigh, ok... And then? Things look like crap. Half the windows seem to scale somewhat decently, half don't. And the ones that scale? Ever blown up an image in Photoshop? Yea, it looks worse than that. Seriously, WTF? There is supposed to be all these advanced graphics rendering capabilities, but they still can't render high DPI stuff correctly. Even the "Back" button (the round circle with arrow) looks like a horrible upscaled image. Pathetic. I've got no problem shelling out the $$$ that Vista ULTIMATE (sigh, MS marketing and sales needs to be caned) will cost IFF it's gonna make my home PC/MCE be one extremely slick amazing thing. But they've got a way to go, apparently.

Misc. Technology
Wednesday, May 24, 2006 6:51:04 PM UTC  #    Comments [0]  |  Trackback

# Tuesday, May 23, 2006
Office Outlook 2007 Beta 2 100% CPU

Anyone else having this issue? When I use Outlook, it sometimes just spikes to 100% (well, 50% since I have hyperthreading). This is making the magnificent Beta 2 release of Office 12 almost unusable.

-- OK, seemed to be the indexer, as I left it alone for two hours and now it's behaving... strange...

Other than that... WOW. Sending an email never looked so good :).

Misc. Technology
Tuesday, May 23, 2006 9:56:47 PM UTC  #    Comments [8]  |  Trackback

# Friday, May 05, 2006
SQL Server 2005 Reporting Services Configuration Madness

Well, after almost exactly 6 hours, I've succeeded at installing SQL Server 2005 Reporting Services on a server with more than one website.

We're running Reporting Services on separate web servers. So, after the install of reporting services, you run their little configuration tool. This of course, accomplishes very little :). See, apparently Reporting Services wasn't designed to work on a server running, *gasp*, more than one application.

If you have a decent IIS install, the default website isn't there and thus requests to http://localhost/ aren't gonna work. Reporting Services doesn't take this into consideration, and happily tries to request http://localhost/ReportServer/ even after you've specified this in the config tool. If this is your issue, you'll get a “HTTP Error 400: Bad Request“ when trying to access the ReportManager (/Reports/) website.

You'll need to edit the config files in Program Files\.....\ReportManager and ReportServer. rsreportserver.config needs to point to http://the.reporting.host.name/ReportServer in the UrlRoot element. In RSWebApplication.config, ReportServerUrl will need to have the same value. The ReportServerVirtualDirectory element must be deleted. You will get a “The configuration file contains an element that is not valid. The ReportServerUrl element is not a configuration file element. “ message. This is because the config reading code apparently doesn't fail gracefully. What it's trying to say is “the ReportServerUrl and ReportServerVirtualDirectory elements are mutually exclusive”. I'm still unsure why there should be anything besides a URL...

Around here, you might notice a bunch of DCOM errors in your Event Log (or before this point). To fix these, you'll need to go into dcomcnfg and edit the COM security for My Computer. Give the account you're using (like Network Service or “MyReportingServicesAccount“) permissions for local activation and local launch. You need to reboot for these changes to take effect (I think). But don't reboot just yet...

Finally, you end up with a 401 Unauthorized when accessing the Reports site. You might have also noticed you are also unable to authenticate when browsing the Reports or ReportServer sites from your the local server. Why?
“Windows XP SP2 and Windows Server 2003 SP1 include a loopback check security feature that is designed to help prevent reflection attacks on your computer. Therefore, authentication fails if the FQDN or the custom host header that you use does not match the local computer name.” So I'm guessing NTLM susceptible to this type of attack, and Microsoft is saving us from it. Well, it also hoses us in this case because from what I can tell, ReportManager (the thing in the Reports vdir -- why it wasn't called ReportManager by default...) needs to connect to ReportServer. It sends a request, which is denied because of the loopback protection above. A quick registry edit fixes this: http://support.microsoft.com/default.aspx?scid=kb;en-us;896861

After that... you might have a working SQL Reporting Services 2005 install! (Next up: Getting it to work with SSL...)

Really, apart from the horrible setup/configuration, it's a very very fine product. I'm actually pretty impressed. The report I wanted to setup (and the subscription so it's mailed out) only took about 10 minutes (first time I've ever used RS)! I'm just at a loss why Microsoft makes it so hard to setup. This configuration can't be that unusual. And, even stranger, most (if not all) of this configuration issues could take care of these problems. In other words, their little configuration app should automatically fix this stuff (or at least give explicit instructions on how to do so). Or maybe I just didn't RTFM that well... but this is a Microsoft product... you're supposed to just shove the DVD in the drive and click next, right? <g>

P.S., if you're getting a “Object Reference not set to an Instance of an Object“ when you add a new subscription, ensuring everything else is 100% working should make it go away...

Code | Misc. Technology | Security
Friday, May 05, 2006 6:02:44 AM UTC  #    Comments [8]  |  Trackback

# Wednesday, July 13, 2005
Fixing MSN Messenger 7

I was quite happy with Messenger 6. A few little enhancements, and I'd be set. As I mentioned before, MSN Messenger 7 is horrible. It is as if they want to compete in annoying features against Yahoo and AOL. <Shudders>

Anyways, MSN apparently has decided to ensure that you upgrade to v7, so I figured I might as well stop resisting and go along with it... Then I found Apatch: http://www.apatch.tk/ <-- This nifty little program removes all the junk from V7 (such as nudges, winks, “packs“, inline IM advert links, etc.). Now there's no need for 3rd party messenger systems...


Misc. Technology
Wednesday, July 13, 2005 3:26:38 PM UTC  #    Comments [0]  |  Trackback

# Monday, June 06, 2005
Team Foundation Server: ADAM Catastrophic Failure, BISGSS Access Denied, Not Operational

If you reboot your Team Foundation Server machine one day, and then get some errors such as:
A Catastrophic Failure with ADAM, Access Denied when starting BISGSS, or a COMException “The server is not operational“, you might want to read my problems:


In the end, I set Everyone to Full Control of the HKLM\SYSTEM\CurrentControlSet\VSS key, rebooted, and things went away.

Misc. Technology
Monday, June 06, 2005 5:07:03 PM UTC  #    Comments [0]  |  Trackback

# Tuesday, April 19, 2005
SQL Server 2005 April CTP: Quick first glance

Install took about 15 minutes. I installed the database server + workstation components. No reporting, analysis yet. Maybe my eyes were playing tricks on me, but it seems that it will install multiple components simultaneously if dependencies are satisfied. That's neat. Anyways, the setup is a very slick setup, and I didn't get any annoying errors about having to reboot (which always seems the case with SQL 2000). No errors reported.

After you are done, it tells you to run SQLSAC: Surface Area Configuration. Wow, this is very cool. Right in your face: Do you want local only connections, or remote connections via TCP/IP or named pipes or both? For the many people that have a single-server setup (i.e., tons of web sites), this should be a nice and easy way to lock yourself down.

The old “client network setup” and server setup is replaced by an MMC-based configuration manager. Quickly view your setup. Nice.

The old help system has been replaced by the new kind (Help 2?). In the earlier versions of Yukon, this meant it sucked, as the help was very messed up. But now, like Visual Studio 2005 Beta 2, the help flies and works just great.

I tried adding an operator and adding an alert. While the alert shows it's been triggered a few times, the operator is never contacted (email). I set up “Database Mail”, but that didn't seem to help either. The help files had some really lame advice. Like “to set up notification, click notify” kind of stuff. Spent probably 10 minutes trying to get some notification going, to no avail. :@. Anyone know how to do this?

One that that is great about the Studio is that things actually work. In the earlier versions, nothing was implemented. I've successfully attached my SQL 2000 databases. This is a huge thing, as now I know I can just upgrade my servers and go full 2005! Bye bye SQL 2000. It's been great.

I really, really, like the SQL Server Management Studio. No more having to go to Query Analyzer separately. Now I can do everything right there. Very, very, nice.

The only ugly thing is that the grid UI they have looks really old and ugly. It still reminds me of SQL 2000's Query Analyzer or something. It's also terribly slow. The rest of the UI seems fast, but those damn grids are just screwed up. I can actually see the lag. I hope they get replaced.

Database diagrams are back (like they should be!). This is great. However, after importing my SQL 2000 database, I couldn't view my existing diagrams, and trying to create one results in:

Microsoft SQL Server Management Studio
Failed to retrieve data for this request. (Microsoft.SqlServer.SmoEnum)
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission. (Microsoft SQL Server, Error: 15517)

However, it did work fine on a new database. The diagrams are way uglier than before, but whatever. At least they are there. Having them makes up for the table editor sucking. Seriously, the table editor is as bad as Visio's table editor. This means you must click a field, and then go down to the bottom and use this little property editor to set basic parameters. I just don't get it...

Support in Visual Studio looks like exactly what I'd expect from a development standpoint. It appears that you get the entire tree of SQL Management Studio from the database on down. Cool.

Well, anyways, that's my first quick look. I'll be using SQL 2005 as my primary database from now on, so I'm sure I'll come up with a lot more feedback.

Misc. Technology
Tuesday, April 19, 2005 4:31:01 PM UTC  #    Comments [2]  |  Trackback

Visual Studio 2005 Beta 2: First quick glance

I got my Windows 2003 machine installed without a problem (well, except for the bloody floppy disk drive being needed). After installing SP1 and Office 2003, I decided to go put on what I had been waiting for since Saturday: Whidbey Beta 2.

Install went smooth and fast. I think it was under 30 minutes (not inc. MSDN). I install almost everything except J# (haha), Crystal Reports (yuck), and Dotfuscator (I have way better!).

I reboot, install MSDN, run Visual Studio.

Package Load Failure
Package 'Microsoft.VisualStudio.QualityTools.TestCaseManagement.QualityToolsPackage, Microsoft.VisualStudio.QualityTools.TestCaseManagement, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' has failed to load properly ( GUID = {A9405AE6-9AC6-4F0E-A03F-7AFE45F6FCB7} ).

Damn, there goes all the testing features. While all the pretty icons are in, none of them work.

*Update! A friend who works on Team System says that not installing the Team Foundation Client will cause problems with Beta 2. I'm also told that I don't need to wait to install TFS first. So, I'll go install it. Thanks, I hope that works!

Next, open up a project, try the properties. Everything works smoothly. The properties window even closes correctly. This was a major pain point before.

Performance testing. Oh, wait, that doesn't work:
Microsoft Visual Studio
Could not load type 'Microsoft.VisualStudio.Performance.PerfWorkItem' from assembly 'PerfPkg, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

OK, well, I don't use those features everyday. I'm sure someone will find a fix shortly. I haven't even looked yet.
*Update: Supposedly related to not having the TF Client installed.

I got a crash while saving my settings (I can't resist going through all the nifty options). But I tried again and it worked.

Graphically, the whole program looks quite polished. Except for the test on the splash screen not being antialiased, and a few icons here and there (solution icon in the solution explorer), it looks very refreshing. The docking tabs (is that what they are?) for the toolbox, solution explorer, etc, are redesigned. A tad space wasting, but attractive. Dragging a toolbox around has a nicer targeting system. There have been a lot of great colourizing enhancements. (Yes, and my suggestion of maroon-coloured strings is now a default! Yea!)

Seems quite fast. Compiling my only real Whidbey app (~25K lines of C#) works great. UI does not lock up while compiling. Compiling web projects does not take forever (before, it'd hang for about 10 seconds).

ASP.NET... ok, here's the big one... *IT IS NOT FIXED*. Yep. Everyone (like me) who was hoping that the ASP.NET team would stop tripping before Beta 2... welcome to reality. You're gonna develop your web apps like ASP Classic, and you're gonna like it, dammit.

Basically, it boils down to that every bloody class is its own freaking assembly. What a pain in the ass. I mean, seriously. They do ASP.NET 1.0, and blow everyone away. Then they think that even though people like me have been saying it should be this way for years, they feel it is too early to introduce real app development to web apps. If you want to share code, you have to put it in the “App_Code“ directory. I guess this helps people who are used to <!-- #include “inc/functions.asp“ -->.

Another thing, ASP.NET isn't listed in the new project dialog. Somehow the ASP.NET team things that they aren't projects. I'd *love* to find out why this is, besides “idiots who could barely figure out PHP couldn't figure out ASP.NET need help“. Why I have to have this “file based“ “web project“ thing just keeps annoying me.

But, despite my complaining, I will, like an abused girlfriend, keep coming back for more from ASP.NET 2. The other features (i.e., great designer, awesome C# code editor, freaking fantastic framework) outweigh the huge annoyance that ASP.NET projects have become. I swear, if it wasn't for ASP.NET's new features (like Master Pages), I would not, repeat, would NOT, develop new web apps with VS 2005. But, they know this. They know their feature set is so sexy, I'm gonna happily get smacked around. They know I'm addicted and will play whatever little game they want to play to keep using. They want to treat me like dirt^H^H^H^HMort, fine. Whidbey is such a huge jump ahead that I'll just have to move on. Really. I will. Eventually. BTW, I'm not just complaining for no reason. Even on the relatively small projects (say, 18 project solution, ~100K lines) that I've done, I can't imagine ever, ever, using this new project model.

Of course, maybe I'm just missing something, and it actually is fixed. If I missed it, then I guess I deserve it. But I'm pretty sure they aren't hiding much.

Moving on...

I am also going to install Team Foundation Server and the Team Client. In the TFS setup, it says to install the client after the server (*Update: which might be incorrect). And the server needs SQL Server 2005, so I'm waiting for that to finish downloading. Finally.... real source control, defect tracking. Wow. I'm also looking forward to playing with the revised (hopefully revised) data tools. The ones in Beta 1... were next to unusable. I understand they've been fixed and features left in (like diagrams).

I heard there was community integration, and sure enough, there's a Community menu item. However, clicking anything there ends up with a:
Microsoft Visual Studio
The operation could not be completed. The RPC server is unavailable.

Maybe the install is messed up. Or maybe it's a crappy error message for “Couldn't contact Microsoft's community servers.” No idea.

In C++, I've had more success with the “go to reference” feature than before. This is a non-Microsoft C project. I'm using VS as the editor only. The experience seems to be improved over Beta 1. Cool.

MSDN works! It's fast too! Quite fast actually. And so does the search (well, haven't tried in detail, but before it was pretty crappy).

Upgrading. On my 25K line project, I had 34 errors and 10 warnings. The majority of them were from ASP.NET's changes (the ones that improved it from Beta 1). Not bad!

Well, that is my first quick glance. I'll have some real time during the next while to really get involved.

Misc. Technology
Tuesday, April 19, 2005 6:04:13 AM UTC  #    Comments [2]  |  Trackback

Half of a terabyte

As of right now, I have 760GB in my computer, temporarily. My Western Digital 120GB IDE drive had an error a month ago, so I got some Seagate 7200.7s and put them on an Adaptec SATA RAID card (RAID 1). After I remove my old drive, and discounting the mirrored drive, I have almost half of a terabyte of storage on my local computer (and it's mostly full already).

What's interesting is that almost ten years ago, I was making the similar claim about having 500MB -- half a gigabyte! Most other people I knew either didn't have a computer, or had much less than 500MB. Heh, and today, I've got 1.5GB of RAM alone :P.

Oh, one little rant. Windows setup sucks. Horribly. If you've had to install Windows onto a “3rd party mass storage device” (well, duh, Microsoft doens't make hard disks), you know what I'm talking about. It actually requires you to have a floppy disk drive. A floppy! Who the hell has one of those? Oh, you can do the $OEM$ thing, if you can figure it out. Microsoft doesn't have any guide on adding your drivers to the Windows boot CD. Nope. I mean, would it have been that difficult to have it also be able to load from a CD-ROM? I've got 2 spare CD burners here. Not a single FDD! I had to get someone to bring one down, and then waste probably an hour trying to get it to work, find an actual diskette that worked, etc... Sigh.

Well, at least I hear Longhorn will have an amazing setup system...

Misc. Technology
Tuesday, April 19, 2005 4:42:48 AM UTC  #    Comments [1]  |  Trackback

# Monday, April 18, 2005
Adobe buys Macromedia

I just read that Adobe is going to buy Macromedia. Ever since I touched that atrocity named “Flash”, I've been hoping that this would happen. I'm sure anyone who's ever dealt with Macromedia's “Freehand” will also let out a big sigh of relief. I won't say it's a brilliant move, because I don't know of a single good Macromedia product. Only that entrenched Flash thing...

Although, it's actually doubtful that Adobe will fix Macromedia's products, because their users would get all confused. In the past, when I've had to work in such environments that required dealing with “designers”, I've found that Mac users are only surpassed in cluelessness by Freehand users. That's saying a lot, since I've had a Mac designer tell me that Windows can't “draw a smooth line”.

As far as Flash... Adobe has a Flash product. “InMotion”. And for actually doing animation, it rocks Flash. But Adobe is not really that great at doing motion products. Their still-image stuff is the best, but Premiere, After Effects... blah. If you want to see what some REAL compositing/editing software is like, try out: www.discreet.com.

Now, if discreet (Autodesk) could just manage to get Adobe, we'd be living in a nice world. This is in spite of Microsoft selling off Softimage to *horror* Avid. Microsoft should have worked on a fork of Softimage, scaled down to home users. Movie Maker|DS anybody?

Misc. Technology
Monday, April 18, 2005 2:26:21 PM UTC  #    Comments [1]  |  Trackback

# Saturday, April 16, 2005
Tasty downloads on MSDN now!

Wow. It's up. Downloading @ 50KB/sec right now. If you don't know what it is, I'll give you a hint. It starts in Visual, ends in Studio. Beta 2.

On Monday I'm getting (2) 200GB SATA-II drives to use with my Adaptec RAID card. I'm going to run RAID 1 (mirror) just in case my daily backups + 2nd day archive backups + weekly DVD backups fail. Am I paranoid?

At any rate, that means installing Windows on the new system. And along with that, Visual Studio Beta 2, on a nice, clean, machine. Perfect timing.

Misc. Technology
Saturday, April 16, 2005 8:41:54 PM UTC  #    Comments [1]  |  Trackback

# Tuesday, March 22, 2005
Why not make VS Express free?

I just read that Visual Studio Express will be $49. This is what... $30 less than the usual “Standard” edition (which I can't imagine anyone can actually use :P)?

Why bother charging $49 for the product? $49 isn't much, but it's a huge jump from free. Why free? That way, to evangelise, you can just throw a bunch of free DVDs at people and let them use them. Say, for instance, academia.

With the standard line at $99, doesn't seem like there's much reason at all for an Express version...

Misc. Technology
Tuesday, March 22, 2005 3:37:43 PM UTC  #    Comments [3]  |  Trackback

# Saturday, February 26, 2005
Fixing SQL Server 2000 SQLDMO after 2005 Uninstall

Ran into this problem after uninstalling MS SQL Server 2005 beta and trying to open the Enterprise Manager: “SQLDMO has not been registered. Please re-install SQL Server and try again.”

Just go into C:\Program Files\Microsoft SQL Server\80\Tools\Binn\ and run “regsvr32 sqldmo.dll”. Things will work again.

Misc. Technology
Saturday, February 26, 2005 4:30:27 PM UTC  #    Comments [4]  |  Trackback

Visual Studio 2005 Install Errors (1304)

Well, I'm upgrading from Beta 1 to the December CTP, since my friend (who works on VS) insists that it's 150% better than the Beta. We've run into some issues, and I hope that December CTP will solve them (since no Beta2 was released today, as far as I know :)).

I was getting an error: 1304 Access denied on SdmCompile.dll. It tells me to check the path, but doesn't provide a path. Searching the whole system didn't find it. So, I went into the DVD and tried to install the .NET 2.0 Framework by itself - aha! It said “A previous product is installed....”. Even though I had already uninstalled everything.

All help pointed to a tool called MSIINV.EXE. Well, that's not public, and I didn't feel like calling PSS (why it's such a dangerous tool is beyond me, since MSIZAP is available). Reading some blog posts, I see that the suggestion is to find the .NET Framework, J# redist, etc. etc. for .NET 2 using msiinv.exe, and then msiexec /x or msizap TWA them.

Well, as far as I can tell, it just looks at HKEY_CLASSES_ROOT\Installer\Products. Maybe I'm wrong. But that worked for me. Regedit, goto HKCR\Installer\Products, and then search for anything related to the 2.0 Framework and friend. Find the product code, then run MSIZAP TWA {XXXXXXXXX-XXXX-XXXX-XXXX-...}. The format is important! If you just copy from the registry, and don't do 8-4-4-4-rest, it won't work.

After I've cleaned everything, I think installing the .NET Framework 2.0 and the J# redist (arrrg) separately from the VS install helps.

Just my few bits on getting VS working. A lot of others have posted too, so doing this plus what everyone else suggests might work :).

Misc. Technology
Saturday, February 26, 2005 2:46:16 AM UTC  #    Comments [2]  |  Trackback

# Monday, February 21, 2005
More visual spam

Wow, here's a cool technique in spam:

.,        ,; .r,                                                  iZ        .              ,  ...7  
@qy      jpp uol                                               peigllf.   @oiatmB          gnjqwgj  
 kd      fq,                                                  au0 pr rk  hac   cna        ia        
 Bym    bpB  WaW  ihjpopc:   igwpkWtk  Wfguvp  @gkbjgS         cu jS     ,,     va        lxpvkk8   
  rj    nv   uyw  yl    uq. Wig.  bly  uxn    yr;   @nS         plkea         @cx        abpX:,qof  
  gpu  ccn   WsW    8xurgl: hv     sv  WsZ      Zegydg@           b@ipl    .qwf2                8uj 
   jh .wx    WkW  xvW:: qr, db     ta  WiW    xbf,i 0sW       Za  dS nhr  jfe            8X     Zlm 
   SjdxgS    WoW ja     cb  vsZ   rds  WoW   gsB    0hZ       hx  pS gui ZdX             wks    pe: 
    xnff     alo  rfbfdvcyc  iprWkoaf  scc    yknxrxpuk0       fjWhbjsb Xkavsnhgib7 cfg   yrfmkks:  
              ,    ,:;i   :        tt   ,       ,;i   .:          jf     .       i   i,             
                            Zkl   aur                             Z,                                
     88ZS     yj             80  :mc                               7wu7       ;Z8             X2a   
  avhtmnsvp   gf             th7 Spe                             8xdqjpsW   8ehbnum         npketqb 
 jha      elj                qa,                                ,ta hb lni Spa   ilk       8dm    qk
 ig       .@8 yt   vqlwjm@   qk, rox  rotjoud                    poXdc            lj       xp2    wp
rn0           tc  ;hZ   ,vb  pu, iod ,ig   vy:                    0wkfW:        Xxh        :ud   Bjl
7a8           am    Xfxfxkx  as, ,ro  xn                            nrZio     ghl0          .dsfrhdq
 pb       Std uo  Bdm:  .rs  og, ,ih   iwvhvi2                  aS  es Smw  Wam;                  fm
 Zks;    adt; uv  ci    ;oe  en, ,do Xs0    py                  sqt jc 0vb  aW              dv.  Bic
   fcrxbimw   pi  Wfcdcuhhxs iuS Swk  caakngm2                   kpjxxqoi  ckraxuonbb Xeb   ,vsjytw 
                           .                                        wn                              
;tX      Wx                                                         @cs        .s         .pkivk@BZ2
 ch.    ute                                                       ngBcByo      hh         ,bfxvs8ouw
  shb  skX                                                       uh, j  ud   hvwd                kc 
   aoSphZ    aomxljc;  Bglkfocf    tshoub@  euX   tqa             oq7c         er               hg  
    sfe      lx    ev  2ad   Wbw  Zm:   rya  giB yc@               Wmit0       dc              xbW  
   BfWgh      ,lqfbla  Smf    lw    @stcjia   nxrdZ                  j7crW     mj             iaj   
  Wdg rbw   .uhr   yg  Ses    jw  cel   isy   Xumw               BW  n  rw;    oj             rcr   
 mqm   ijm  or     wk  Xqi    js ayq    8mh  qdg mfi             ah  c  mx.    fi            ;it    
dlc     ,sk0 hlrhstdhx Bev   ,xj  oclkeofgfkghe   clg            ,lkmoiqmS     ev     ofn    Spn    
Bj        ju.           ty: 7rf                                    ,kuyi       ,v            ,vxi   
8vd      qnr            by; ;xd                                   mvalZmj,    ,ke          7oodlsia 
 wi.    .lc             ct,                                      ys, p  qu   jjbc          be    tyr
 Shd    bgS   uokebif   kx, Skk  rkS   ixk  yxvionB,cclf8         elXc         dm          od    Xv2
  ps    bj   Sx,   rbj  is, :bm  ep:   @u@  ut;  dsj   rs,         @rgsW       pa          yqg   eyS
  Bgs  xxB     gcetvtu  ep, ,wu  pr,   WcW  hd   rxc   vj:           uijld     kh           8wjjrebS
   tf ;bd    xlr   ,eg  wx, ,va  ye    0vW  sy   Sxw   ax,       wj  r  jm7    bj                :nZ
   .fagr.   ,kj    Wjq  eb, ,vv  ula   bdW  ly   Som   dc,       ll  y  nu     qf          pcs   gh 
    tfui     Zsfnwckteb we2 2hc  ,vxvwakms  bp   pji   nj2        eqbhqqar     eo     mpo   pgnqbj  

Yea, super-small font used for ASCII art. Start throwing some tables and CSS... and we'll have stuff that won't be that easily analyzed, at least by current keyword based approaches.
(I cleaned up the HTML. They had mismatched tags... why is it that people are smart enough to write inventive things like this (or viruses) and then screw up on simple syntax (HTML AND English)?)
Misc. Technology
Monday, February 21, 2005 4:25:02 PM UTC  #    Comments [1]  |  Trackback

# Tuesday, February 01, 2005
Why not to use Bellster

So, Pulver launched a great new marketing campaign called Bellster. People are hyping this up as “Peer to Peer telephony”. I'm tired of P2P being abused as buzzword. The entire freaking Internet is a peer to peer system. But that's not what I really care about. People are joining up to Bellster without thinking what it means. There are two primary problems with Bellster.

1. *Most likely* your phone company has it outlawed, since you are reselling your service. In some countries, this might even be illegal, and in violation of local laws, in addition to your own contract. There is no such thing as “unlimited” calling (except perhaps, inside a certain network). If you go over what your telco thinks is acceptable for “unlimited” calling (somewhere between 1000-5000 minutes probably), you'll get charged, or cut off, or something. Other telco's might notice your calling pattern has significantly changed. If you use your phone normally, and then all of a sudden it jumps to 4 times volume and calls a wide range of numbers at a wide selection of times... software can flag that down, and you can get your line cut (it's called bypass). This will depend on each telco/country. Then again, maybe you hate the telco and want to stick it to 'em. If you get away with it... good for you.

2. It's all fun and games 'till someone gets hurt. (And then it's fun for one less person.) Sooner or later, someone's going to make bad phone calls via Bellster. The problem is that these phone calls come from YOUR phone line. So, when the SS investigates the latest terrorist threat, and finds it came from your line... ouch. I'd expect nothing less than a personal visit. Depending on how that goes... good luck. In the USA, I can only imagine what would happen. Sure, eventually you will probably get cleared and be OK. Meanwhile, are you willing to risk being imprisioned, questioned, perhaps having your computers confiscated, etc. etc.?

In light of those two things, who on Earth would use Bellster? My local calls are more money than what I pay to call half the world with VoIP (yes, even at my commercial, retail rates, not wholesale carrier rates). So *I'm* not going to share my line to call Canada when I can already do that for very cheap (not to mention that if I did share my line, within a month or two it'd be cut). Plus, I'm at the whim of whoever is running the service. I doubt the service level is gonna be that great.

So... potential risk... zero benefit... why would I do this? THINK people, THINK!

Misc. Technology | Security
Tuesday, February 01, 2005 1:34:00 AM UTC  #    Comments [0]  |  Trackback

# Saturday, January 29, 2005
How I want computer security to work

I hope the days of running arbitrary CPU instructions to perform every single task come to an end soon.

I hear people complaining about how MS doesn't make them secure enough. I hear from the other end (i.e., the pros) that we have to have user education. I read about parents having to filter their kids' computers, ensuring they don't run malicious code (not “bad content“, such as pro-Bush propaganda, but code to take over a PC). People run anti-virus software. People are now running Anti-unwanted-commercial-software programs. Heck, in some cases, there's even Anti-anti-spyware code out there.

We hear about having to “ensure we trust the source”, as in, “do I trust Bob to send me a web site link”? Not even a program, *just a link*! We have the “don't execute attachments” and “don't install code from websites”, on and on and on. Some people even think there should be a “Internet drivers license” or even some sort of basic PC user training/license.

This has got to stop. It's been shown that we'll never be able to get average people to make correct trust decisions. It's also stupid to want to do that. If someone writes up a cute “Flying Bunnies.exe” game, I WANT to be able to run it, without worrying that it's some kind of attempt to hack me.

.NET gives us the first level. We have code access security, which can ensure that certain code running can't do certain things. Next, we need an OS that takes this home.

It looks as if we'll be having a little girl this May. By the time she's old enough to have her own real PC, I hope these things will be an issue of the past. When I got my first computer, I was 5. I was already somewhat familiar with DOS; I knew my way around. How different would that have been, had I have to understand a full set of security and trust related data? How much slower would I have gotten into things if it had to be accompanied by a ton of overhead just so that I wouldn't get hacked?

If Microsoft embraces managed code fully (and it looks like they are), this should not be hard. Managed programs should just run. Get an email attachment? Just run it! See a cute game that needs rich UI controls from the web? Should be automatic. Only when an unmanaged EXE comes along should we run into roadblocks. Indeed, any program requiring trust should require us to login as admin (or elevate to admin) and allow it.

So, in about 5 years, I hope to be buying a nice little PC for my child. I want to flip it on, use biometrics as her password, and LET HER PLAY dammit! If she finds a bunny program, I want her to be able to run it. Now, I'm hoping my kids will follow after me and understand computers enough to make those decisions for themselves (heck, and for other people :)), but I sure don't want that to get in the way.

The same applies to pretty much everyone else (yea, I'm saying a lot of users aren't much more advanced than a 5-yr-old). We can't expect people to make security decisions. We simply MUST have a way for things to get done, without security implications. I think at this stage, this is entirely possible.

Misc. Technology | Security
Saturday, January 29, 2005 10:12:26 PM UTC  #    Comments [4]  |  Trackback

# Monday, January 24, 2005
Easy Gnome/X desktop integration with Windows

When I started working with Linux for my current projects, it was on a severly underpowered box (a Celeron 400MHz, 128MB RAM, 3GB HDD). Thus, running Gnome and so on, in addition to my development projects, wasn't a really good idea.

After a bit, I got tired of waiting forever to compile, so I got a 2.something GHz Pentium 4, 512MB of RAM, nice disks, etc. Since I was going to do a bit more than I had done before, I decided to install and use Gnome, as well as RedHat's cute little GUI tools to configure stuff.

Soon, I was using X/Gnome a good portion of my time (X-Chat seems to be the best free IRC client on any platform, and I use IRC for work on Asterisk a lot). Also, it can be nicer to use Gnome than have a bunch of SSH sessions open at once. So, at first, I tried out VNC. I didn't like it. I wanted to get a logon screen, and I was having trouble getting VNC to do that. Also, the RealVNC client I had for Windows seemed pretty crappy.

Then I discovered GDM and XDMCP. Now I have integration like this:

Here are the steps to get XDMCP/GDM working rather nicely with Windows (at least on RedHat systems):

1. Edit /etc/X11/gdm/gdm.conf. In the [xdmcp] section, set Enable=true. That'll allow you to connect remotely using xwin or other XDMCP clients. Next, in the [daemon] section, set KillInitClients=false. This allows xwin's clipboard integration to work correctly.

2. Next, install cygwin, ensuring to install XWin. This has the tools we need to make the connection.

3. Create a shell file inside cygwin to start xwin. I called mine “startsungx“ (sung is my Linux machine's name). Here's my file:
    xwin -query sung -notrayicon -clipboard -rootless -nowinkill -keyhook -xkbmodel microsoft

Do xwin -? to find out about those options. The interesting ones are -rootless, which prevents a “root“ window from appearing (which will manifest itself as an ugly background).
-nowinkill stops the Windows Alt-F4 from killing xwin.
-keyhook allows you to use Alt-Tab and the Menu key inside the session.
-xkbmodel microsoft allows you to use a nice big Microsoft keyboard with all the keys. You can also specify pc101 and similar.

With that, everything should work. But, the downside is that you now have a Cygwin window sitting on your taskbar. Hardly elegant.

4. Create a batch file to start cygwin, and run xwin, while hiding itself. I have a SungX.cmd file:
cd \Linux\cygwin\bin\
cygstart.exe --hide -- bash --login  -i -c /startsungx

That'll start up cygwin, hidden, and run your xwin script. Enjoy!

Now, what I'd REALLY be interested in having is a way to have each application that registers for the Gnome application list panel appear on the Windows taskbar. Or maybe not, as it'd add to the clutter. Either way, I'd like to try it for a bit. If anyone knows, drop me a line.

This post is because of Micah, who had the most classic expression when he saw the Gnome Fedora Core 2 splash screen load up right in the middle of Windows XP. (Yea, I've since moved to RHEL, err, TaoLinux.)

Misc. Technology
Monday, January 24, 2005 7:09:24 PM UTC  #    Comments [1]  |  Trackback

# Thursday, December 30, 2004
Fedora Core 2 Input Methods - What a joke

I use a Fedora Core 2 machine for a lot of my development work (well, mainly compiling and running, since I develop, when possible, with VS 2005). I've found the desktop to be generally usable, if perhaps a bit unstable (I'd say Gnome on FC2 hangs just as much as IE does on XP, which is pretty often).

Sometimes I use IRC. I've realised that mIRC *really sucks*. Especially when I try to get it working with Korean input. Pretty much everything makes it hang (full CPU usage). Apart from that, it's just not that nice. However, mIRC combined with AppLocale is the only IRC client I've been able to work with Hangeul input and display.

At any rate, I've been using X-Chat for a while on my FC2 machine. It seems far better. Today I wanted to go into a Korean chat room. Hmm, shouldn't be hard right? Somewhere I should be able to click something and get a Korean IME... right?

So I searched. And asked. And read lists. And downloaded and installed a lot of RPMs. And I'm still no closer to getting any CJK support at all. Apparently whoever develops this stuff didn't think that 'foreign' language input should be that easy. The closest I came to getting any decent info was some Japanese guy basically saying that the Gnome/FC2 people are dumbasses for not getting this working right and easy.

Maybe it's just me. Maybe I just really don't know how to use computers and figure things out. At any rate, it's just nice to see such solid reminders of why MS shouldn't give a damn about “Linux on the desktop” coming to steal their users away.

For what it's worth, getting pretty much ANY input method installed on Windows XP is this simple: Start -> Control Panel -> Regional and Language Options -> Details -> Add. That's it. Maybe you'll have to insert the CD and reboot. After this, you'll get the Language Bar, and can flip between IMEs till your heart's content. Considering this isn't anything so revolutionary or new, but a simple, “boring“ core functionality item, you'd think that the desktop linux people would have it down solid by now eh?

Korean | Misc. Technology
Thursday, December 30, 2004 12:09:02 PM UTC  #    Comments [0]  |  Trackback

# Monday, December 13, 2004
First look at MSN Desktop Search (MSN Toolbar Suite)

Microsoft finally has a decent desktop search: http://toolbar.msn.com/desktop/results.aspx?FORM=PCHP

First impression: Why MSN? Why oh why? I really dislike MSN. They insist on sticking their damn butterfly all over the place, and feel the need to add tons of links to useless content I don't want to see (while still no equivalent of Google Groups, as far as I can tell). I don't wanna see a damn butterfly and links to dating inside of Outlook! I hope this just a temporary fix until Windows/Office get their search fixed up. And, the place you'd really expect and hope for integration is not there: Searching IM history. Duh.

Microsoft's using the usual tactic to promote their lame offerings by forcing them along with something you actually want. I won't say it's wrong. It's probably good for business. But I sure as hell hate it. But, I guess that's the price you pay when another division cleans up for someone else.

Oh yea, they ignore guidelines, and put a bloody shortcut on your desktop without permission. I guess they thought that even with having it automatically added everywhere else, you might *still* have problems starting it. Sigh. Even MS can't listen to MS guidelines. Oh wait, this is MSN, nevermind.

The deskbar is a nice idea, but unfortunately, having another band on my desktop really sucks (since it takes the full verticle space, wasting lots of precious taskbar space). And, unfortunately, the hotkey to start search doesn't work if the band is closed. Sucky. 

A workaround is to simply disable the MSN Toolbar (lameness incorporated), Outlook integration, and deskbar. Then, go into your start menu, right click the MSN Desktop Search, and assign a shortcut. Enjoy searching without cluttering up your apps.

Apart from MSN's spam-like tendencies, it's a good solid offering. MSN shows some of it's MS-ness here:

   - Awesome UI. The deskbar is really cool. Not worth the space loss, but almost. The search results go right the program -- no browser nonsense.

  - Network indexing!!! YEA. Now I can search the source on my Linux development machine easily. 

  - Outlook-integrated search (right where I need it).

I'm really happy with it. What I really want is Office and Windows to integrate this into their products, rather than having it be a big MSN orgy.

At any rate, I've already said goodbye to Google Desktop. Yey!

Misc. Technology
Monday, December 13, 2004 6:27:43 PM UTC  #    Comments [3]  |  Trackback

# Friday, December 10, 2004
Activision loses a good customer because of copyright protection

Bill writes about his bad experience with Activision. So, Activision loses a customer. Not only that, but they turn their real (and anti-piracy) customer to “illegal” methods of cracking their games. So, basically they're telling Bill that he's not valuable enough to offer a decent experience to, and that again, the pirates and cracking groups (always portrayed as evil thieves) are the only ones who can help him.

Misc. Technology
Friday, December 10, 2004 1:24:45 PM UTC  #    Comments [0]  |  Trackback

# Thursday, December 02, 2004
Are kids these days really so helpless?

I came across this program, called “Hector Protector”, created by the NetSafe Programme of New Zealand. It's to “help keep kids safe online”. What does this program actually do? It puts an image of a dolphin on-screen. Kids who run into materials that frighten them should click the dolphin. At that point, a congratulations message and picture of a dolphin fill the screen, protecting the poor child. The idea is that kids can do this and then run and find their parents or teacher to help them with the bad things on the computer.

Are kids these days really so helpless that they need a bloody dedicated program just to hide a window? I've been using computers since before I can remember. I never needed a system to hide stuff from me. I was on BBSs since I was 8 or 9 or something. Hell, when I was 13, my friend and I ran a BBS, complete with an “elite” section of programs, images, etc. He even worked as a sysop for other places, checking out all uploads and adding descriptions. He didn't need a stupid program to keep him safe. Why is it that kids now have turned into (or people think they are) such wussies when it comes to computers and networks?

Also, what's wrong with “If you see something wrong, minimize the window and go get help.”? Are kids going into such a bloody panic they need a damn dolphin there to click on? They're so offended and frightened they can't hit the minimize button? Also seems like a missed opportunity to teach keyboard shortcuts (say, Win+D). Or, what's wrong with just standing up and going to get help?

I'm not against helping kids deal with things. But technology isn't the answer. That's what parents and teachers are there for. Providing crutches like this? Please.

And... what happens when kids stuble across bad animations of Hector doing things he shouldn't? Won't this confuse and scar kids even more? Or what happens if kids happen to stumble upon some dolphin + redhead footage? Just think how many kids' lives are been wrecked by trusting hector, only to find he scares them later!

Misc. Technology | Security
Thursday, December 02, 2004 5:01:34 PM UTC  #    Comments [1]  |  Trackback

MSN Messenger 7: Made for 13-year-old AOL kiddies

MSN just released a beta of MSN Messenger 7. I got it ASAP, installed and rebooted. I was really hopeful that there'd be some nice new features. Instead, I found that the MSN folks decided to take all the lameness of Yahoo messenger, and up it a notch.

First, the actually cool stuff, to get it out of the way:
  More ink support. Now there are tabs when you send a message, switching between “Handwrite” and “Type”. I don't use ink, so not that cool. Can't find out how to disable it. So it just adds more clutter (a recurring theme), but when I get a tablet, I'm sure I'll love it.

  Message history. Here's an awesome feature. In fact, probably the coolest thing about the new client. When you start a new conversation, it shows you the last few lines of conversation. That'll save a lot of “oh damn, I closed the window” problems.

  Nudges. Actually, I don't know what this is. I THINK it's a way to make the window beep or move or something to draw people's attention. Has the possibility to be helpful, and unlike many other features, can be easily disabled.

OK, and that does it for the useful new features. Now, lets turn to all the load of crap they crammed into the new client:

  Winks. There's winks here and there. There's even a “My Winks” option, which sounds like some kind of gay porn thing. And what is this? Stupid animations that take over the window and annoy the heck out of everyone except 13-year-old girls. Fortunately, reception of them can be disabled. BUT, you still get a whole ~50 pixels devoted to this feature in every IM window. 

  More clutter. Almost every feature is now cluttered with junk. The emoticon window, for instance, now has a “What's Hot” section, featuring random sets of ugly icons. “Packs”. Now, in EVERY IM window, you have another ~50px devoted to downloading new packs of backgrounds, display pictures and icons. This should be in the options or main window, not each conversation window. A “Click here to customize MSN Messenger” link that takes you to an MSN page, and again, something that belongs inside the main window, not each conversation. Sigh. “Get over it, you don't need to use those things!“ people might say. That's not the point. Up until now, MSN Messenger was a clean, slick, useful tool. Now the UI is busy with all sorts of junk. It's visually annoying.

  “Billing Information”. At first I got scared, thinking everything was going to be charged. But it doesn't seem that way. Instead, you have Blue Mountain (the people who sued MS over Outlook Express's Junk Mail feature and got it removed from the product), selling you... you guessed it: More useless icons and pictures for MSN Messenger. Wow! As if the free stuff wasn't craptastic enough, now you get the pleasure of paying for lame icons.

Finally, all the usefull stuff they still haven't done:

 Sign in with status. You still can't sign in as away or so on.

 Status for group or contact. AFAIK, there's no way to appear as Offline or Away to a certain group, while Online to others. 

 Search history. Self explanatory.

So, I guess in MSN (which is at least as strange as marketing divisions), features that appealed to 13-year-olds, infants, and lemmings, were rated as more important than improveing usability or usefulness of the product. The only excuse I see is “MSN Messenger is for l4m3rz and for serious people you should get Istanbul and LCS and whatever integration product MS sees fit.” I suppose you get what you pay for. I hope Microsoft aquires MSN and fixes their products.

Anyways, I'm going to uninstall this thing now. I just hope they don't try a protocol switch and forced upgrade anytime soon.

Misc. Technology
Thursday, December 02, 2004 4:34:08 PM UTC  #    Comments [3]  |  Trackback

# Saturday, November 20, 2004
Avalon's on XP


Downloading from MSDN right now...

Code | Misc. Technology
Saturday, November 20, 2004 5:22:29 AM UTC  #    Comments [0]  |  Trackback

# Tuesday, November 16, 2004
MySQL is the Visual Basic of the DB world

Today I was having a fun discussion about MySQL. A number of people were pointing how how bad MySQL is (one Anti-MS person said “It's worse than anything MS has made.”). One of the big problems with MySQL is how it handles datatypes. It doesn't. Pass it invalid data, and it silently “fixes” it (read corrupts) so that it works in whatever column you specified. This allows people to pass whatever they want as a date, for instance.

Now, those reading who've done any real work with DBs and applications are probably saying “uh oh” right now. If I declare something as int NOT NULL, I mean it. Don't take NULL and magically conver it into 0 or empty string. Don't turn my varchar into a DateTime of 0000-0-0. If I do a query that has invalid data, *something is wrong*. Throw an error. Let the developer know.

This went back and forth for a while, until someone responded angrily and said “You: I want errors. Me: F* you, I want it to work.” This is exactly like some VB developers are thinking when they do “On Error Resume Next”. What do you think? Should a DB work like VB and “On Error Resume Next”?

I say, lets take this one step further! Why should the filesystem give us errors? “rm -rf something”? Something isn't found? Well, just use the next item found, alphabetical order. That way, we can “just work” instead of giving back nasty error messages. Sigh.

Humour | Misc. Technology
Tuesday, November 16, 2004 6:43:52 PM UTC  #    Comments [2]  |  Trackback

Annoying anti-pirating software implementors: please stop!

Quick summary for those looking for problems playing games or using software:

If you get this error, it does NOT mean you have a debugger installed or running. It doesn't mean you have SoftIce installed. It is the SafeDisc (or perhaps other) copyright protection software in action. This software often messes up, and incorrectly decides to deny you access to the programs you paid for.

Two ways to solve the problem:
 1. Complain to the game publisher. It's their stupidity that causes this kind of copyright protection to be included in the first place. Tell them you're going to return the game to the store where you bought it because of this silly protection system. Perhaps they will send you a non-protected version.
 2. Install a crack. Cracks disable the SafeDisc (and other) protection mechanisms, allowing you to play without the CD or error messages. Yes, I know it's stupid to have to do this, since you paid for the game. However, with some companies, that's the only solution. I'd also recommend avoiding purchases from them in the future (and let them know why too!). I'd highly recommend GameCopyWorld.

If you're trying to create a crack for the game, go learn more. If you have to sit around using google to figure out how to crack a game, chances are you won't succeed. Go look for some cracking tutorials first.

------- Original Article -------

Quite some years ago (8 or 9?), I played a game called One Must Fall, a cool robot melee fighter game. Now they released a new version with cool effects, Internet play, and so on: One Must Fall:Battlegrounds. I just recently learned it was shipping (they did good job of press before it shipped, but I never heard about it after it shipped). My copy finally arrived in the mail today. I start it up, check it out, and after winning a level, the game quits with this message box:
Protection Error
Debugger detected  - please close it down and restart! Windows NT users: Please note that having the WinIce/SoftIce service installed means that you are running a debugger!
This is wrong. I work from home, as well as play games from home. I've got a few debuggers installed (not SoftICE though). At the time, I had Visual Studio closed, and hadn't been running the debugger since my machine started. But what's worse is that apparently they thought this perfectly acceptable! Note that this doesn't stop piracy *AT ALL*. Experienced crackers are going to crack the game, and serious “pirates” are going to apply patches. Having a CD check stops “casual piracy”. Having a debugger check stops wannabe crackers from cracking. That's it!

I've emailed support with my current plan of action: Try a pirated version and if that doesn't work, return it for a refund (something publishers don't like). Sigh.

Update: Well, I reluctlantly installed a crack from a game backup site. And guess what? It works just fine. No more debugger complaints (and I get to take the CD out too).

Last update: Got in touch with one of the developers. At first, they thought it was a problem with DirectX, or the video card or likewise, since their code doesn't do any checking. However, they were using SafeDisc (which is less safe than rolling your own, since there are a few tools that instantly remove SafeDisc). However, after I told them that a pirate crack makes the game run, he said he'd get me an unprotected version. Hey, at least their support is good!

Misc. Technology
Tuesday, November 16, 2004 3:05:31 AM UTC  #    Comments [5]  |  Trackback

Great customer service: pirates

I was feeling nostalgic for a game I bought a long time ago, but wasn't able to find the CDs. I decided to give the local pirates a whirl. Let me go over the experience with them, then compare it with the experience of buying some software legitimately.

1. Finding the store. Simple: Just get a newspaper and scan the classifieds for computer software. One had a rather large advert that must have cost a pretty penny. Also, a lot of them have websites, making return purchases easier.

2. Finding the game. I was looking for a game that's not well played down here, so it took a few tries. However, the pirates have one thing done way better than the retail vendors: Their entire inventory is online. I haven't seen this from any retail store down here so far.

3. Placing the order. Dial the cell phone listed. Ask for game. Get *immediate* response (no wait at all), with pricing with and without warranty. Select the game + warranty (The game is 5CDs, total cost with warranty: $12). Give name and address for delivery. Since my house is hard to find, suggest meeting at the local Burger King. They say they'll be there in 2.5 hours. I tell them I'm in a dirty black Jeep.

4. Bring cash to Burger King, arriving a few minutes early. Within 30 seconds, a motorcycle pulls up beside me and offers me some CDs. Cash changed for CDs *with a receipt*!

That's it. The warranty covers the CDs from physical damage, as well as provides installation support (useful for people who buy those expensive art programs that require all sorts of network licensing managers to work).

Now, lets see how this compares to buying retail software. First, there's no website with all the inventory. So that's out. Second, calling may or may not get me correct information. Then, delivery? *Maybe*, but highly doubtful for a small order. Pricing? Hmm, games go for around $70. That's a lot, especially down here where $70 is equal to about 20% of an average salary. Sorta ridiculous actually.

Warranty? Installation support? Ha. Try to trade in something you buy at a retail store -- you'll get a flat NO. Support? Maybe. You'll probably have to make a long distance call. And then, depending on the company, support sucks (this goes for every lame game publisher, such as Eidos, Activision, etc.).

Buying a larger amount of software (say, equipping a company with 500 machines with Windows and Office)? The experience is even suckier. Big “software partners“ down here are 100% clueless. They love to waste your time asking tons of questions on the phone, not getting back to you, saying they don't sell Enterprise Licenses, trying to insist non-Guatemalan-sold versions of MS software is illegal, and sometimes, charging a ton more. I see Office on retail shelves for $800. WTF are they thinking?

Does this justify piracy? Well, no. But, it certainly is embarrassing that the customer experience is WORSE for legit customers than for pirate customers. BTW, the same goes for movies and music. If I'm tempted to buy a DVD, I'll phone the same place up. They've got a special: Any 4 DVDs for $12. Not bad, considering they do the work of getting rid of region zoning and CSS for me.

What's the lesson? Do better than the pirates. It can't be that hard not to completely suck. After all, the pirates aren't doing anything amazing. They're just providing a service like I'd expect it to be provided. Even if they had charged me $30, I'd have still paid. Didn't mean to rant on, it just annoys me when companies do a worse job, then complain when people go around them.

Misc. Technology
Tuesday, November 16, 2004 3:01:27 AM UTC  #    Comments [3]  |  Trackback

# Thursday, November 11, 2004
ASP.NET 2: Compatability on the rise

When I got ASP.NET 2 Alpha, the first thing I did was drop it on my webserver and see if all my real sites worked. Some did. Some didn't. dasBlog refused to run. Lots of strange little problems. So, regretfully, I rolled back to 1.1.

Well, I just moved to a new server. I forgot to roll all the sites back to 1.1. Interestingly enough, I didn't notice. Everything worked just great. (I've since rolled them back anyways.) Way to go ASP.NET team! This makes me feel much better, as earlier (Alpha) it seemed as if caring about their existing customers wasn't a priority.

Misc. Technology
Thursday, November 11, 2004 12:01:05 AM UTC  #    Comments [0]  |  Trackback

# Thursday, November 04, 2004
Purchase thwarted by DRM

Windows decided not to load 2 of my hard disks (yes, I'm buying a RAID 1 setup tomorrow -- yikes!), so I wasn't able to access my music collection. I can't work at all without some sound. So I found a shared folder from KCeasy and lo and behold, it had a few interesting things in it, so I queue'd them up.

Well, one track was by Ayumi Hamasaki, and I quite liked it. So I thought, hey, I'll go buy the CD. $28, not that bad. Oh wait, what's this?

Shopping Note:
· This CD is copyright-protected. The tracks on the CD can be played on PC running Windows operation system, but cannot be copied onto any PC nor can they be played on Macintosh operation system.

Can be played on a PC, but can't be copied? Huh? That means they do Some Very Evil Stuff. If a CD can't be copied, then something seriously wrong is going on. Now, the only thing I've heard of is it that lame technology that puts a driver on your system to screw things up and then gives you access to WMA only. I think it comes from a company that has the word “Sun” in their name. The one that you can bypass by disabling Autoload.

Well, I don't play CDs, period. My playlists are huge, I'm using my DVD drive for other things, and I hate the idea of passing physical media around for no reason. I also despise any company that tries to covertly install drivers to destroy my computer.

So, what's the outcome here? Well, I'm not gonna buy the CD. The artist loses $3? Oh no. I'll still get the music (gonna queue it up right now), and if I like it, I'll be a fan and if I happen to be around where a concert is, perhaps I'll go. But as far as paying for locked down media? Screw 'em. In fact, if I'm going to PAY for the media, I'd like them to ship a professionaly encoded set of WMA tracks at 256Kbps along with the CD audio. Actually, heck, just send me the WMA files. I don't need CD-audio. Send me higher quality WMA files (higher sampling, higher bit depth, WMA Pro codec, lossless compression). Oh yea, and get rid of the lame attempt to use DRM. Then I'll buy.

Misc. Technology | Security
Thursday, November 04, 2004 4:25:20 AM UTC  #    Comments [0]  |  Trackback

# Monday, October 18, 2004
Why pasting HTML is so slow

One thing that constantly annoys me is pasting or using HTML content inside Word/Outlook. For instance, replying to an email that has complex HTML formatting and linked CSS files and images takes forever. I've got a 3GHz P4c and 1.5GB of RAM, so the issue isn't local. Ditto for pasting text from a web page into Word (I'm constructing a Word document from some data I have on a page somewhere). It takes up to 20 seconds for the text to appear! When I have a bunch of small snippets, that's obviously unacceptable.

My theory was that it must be hitting the webserver to get the styles. A few minutes with Ethereal and I found out that yes, that's exactly what it's doing. Sigh. I understand the reasoning, but I'd like it to be easy to disable. My connection sucks right now (plus I'm downloading Fedora Core 2), so even loading a simple style page takes a while. I'd like the HTML copying to be able to embed the style info there for other apps to use... or something. I know that by default, the alternatives might be worse (users would lose their styles after pasting and be very confused). But this scenario just isn't working for me either (I have to paste to notepad first :().

A funny thing is, Word always does this, even when editing an email in “plain text” mode. I'm guessing the style lookup is handled at a much lower level, where there's no knowledge of plain text existing. (You can also see odd behavior when pasting formatted text into Outlook Express in plain text mode: The plain text is simply not honored (well, when it's sent it is, but not while viewing the message).

Just one of those things that never fails to annoy me.

Misc. Technology
Monday, October 18, 2004 10:10:56 PM UTC  #    Comments [0]  |  Trackback

# Friday, October 15, 2004
MySQL is really secure... or bad.

I chose MySQL to use as my database, since I was writing on Linux, in C, and it just seemed like the easiest path. Can someone please say “you were so wrong”? MySQL has to the worst DB engine out there. It doesn't (ok, just added) even have support for SUBQUERIES! Barely has support for multiple charsets. And... binary(20) is NOT a binary field 20 bytes long. It's a char(20). You can't execute multiple commands in a single query. It's embarrassing to open source really. I don't know who could argue that MySQL is competition for SQL Server or Oracle and keep a straight face. Check this list out: http://sql-info.de/mysql/gotchas.html (I really love the part about date handling.)

On the other hand, it's very secure. www.kalea.com.gt <-- No checking of user input whatsoever. (BTW, my little article about Kalea made me a top search result for Kalea Guatemala -- while their site doesn't even show up.)  They take your querystring, concat it to their query, and off it goes. But guess what? Good luck trying to hack it. MySQL is so poor, doing SQL injection and achieving anything fun is nearly impossible. So much for adding prices to their site :). Oh wait, you can do a DoS by using the BENCHMARK expression and then encode/Sha1/etc.

So what am I going to do? Switch to SQL Server as soon as I get a release candidate done. I'm going to load Mono into my C app, and then transition into managed code and use some nice TDS libraries and have a good day with a database that actually works well. Had I done that to begin with, I'd be a few hours ahead of schedule instead of behind schedule...

Code | Humour | Misc. Technology | Security
Friday, October 15, 2004 4:18:53 AM UTC  #    Comments [2]  |  Trackback

Visual Web Developer is so nice

I've been working a bit on the web-side of my VoIP application, obviously in ASP.NET (hey, just because Asterisk runs on Linux doesn't mean I'm completely converting!). I'm finally getting to use VS2005 full-time. The Web.NET has done an awesome job of fixing up the editor. Pretty much everything that really bothered me and sucked about editing pages in VS has been fixed. Selecting elements is so easy. Navigating the HTML is simple (and doesn't loose formatting!). The built-in webserver (and no IIS requirement!) rocks for debugging. I'm just quite surprised at how good everything is. I saw all the cool features a year ago, so I knew it was supposed to be nice, but just using it drives the point home.

Code | Misc. Technology
Friday, October 15, 2004 3:03:58 AM UTC  #    Comments [0]  |  Trackback

Relax: Product teams know what they're doing?

I take Visual Studio very seriously. I spent more time in Visual Studio than in anything else, so potentially any problem in there can easily ripple out to the rest of my life. Thus, when things break for me (i.e., removal of database diagrams, ASP.NET compilation model mess up, etc.), I really, really worry.

What I'm slowly accepting is that as much as Visual Studio/.NET/etc. matters to me, it matters to the respective product teams even more. So I should be able to lay back, relax and enjoy my time 'till my eyes roll back and the next version ships, right?

It's sort of like the Year 2000 issue. I knew a lot of end users (say, people owning electrical devices), who were moving to the mountains, stocking up on supplies, preparing for The End, etc. , while saying stuff like “the power grid has microchips that can't handle the year 2000”. These people also wouldn't know what a power grid was if one landed on their head. Did they really think that the electric companies (or any company) wasn't at least as concerned as they were? As if having their grandma spouting nonsense was going to get the attention of the CTO of the local power company?

That said, I'm of the strong opinion that I'm not an idiot, and at least somewhat clued in as to what to expect from certain products :). A few things have gotten me hyper during the last year, but I believe the product teams have handled or are in the process of handling most of them. So I have to wonder if somehow me + n other people “overreacting” is what drove these changes, or the product teams just woke up one morning and said “hey, this sucks”. At least with Ladybug, ahem, the MSDN Product Feedback Center, we should be able to get a bit more insight on what really goes on with certain issues. What I'd really like to see is a bit of explanation with each resolution -- if something's a Won't Fix, knowing the reasoning behind it can go a long way in soothing users.

Misc. Technology
Friday, October 15, 2004 2:55:41 AM UTC  #    Comments [0]  |  Trackback

# Thursday, October 14, 2004
Dell Axim 50v -- this is a handheld!

I really want to get a Tablet PC, but I just haven't seen a model that's right yet. However, I have found a handheld that's just awesome: The Dell Axim 50v. Check out these specs:

* 3.7” Screen
* 640x480 resolution @ 16bpp // YES, that's full VGA resolution
* 624 MHz Intel Xscale PXA270 processor
* 128 MB Flash ROM and 64 MB SDRAM memory with XMB (cross media bar) on-screen navigation to access memory
* Integrated 802.11b Wi-Fi and Bluetooth 1.2
* Intel 2700G multimedia accelerator with 16 MB of video memory, providing DVD-quality video playback and supporting dual display capability for professional presentations
* VGA-Out (extra)
* Integrated CompactFlash Type II and Secure Digital / SDIO Now! / MMC card slots
* Headset / headphone jack (cell phone replacement anyone?)
* Full duplex 16-bit 44.1 Khz audio

Now THAT's a lot of handheld for $500.

Misc. Technology
Thursday, October 14, 2004 5:08:13 PM UTC  #    Comments [0]  |  Trackback

# Tuesday, October 12, 2004
Why do we lose the ASP.NET 1.x compilation model in ASP.NET 2?

Writing the Turing ASIX brought me back to a really sore spot in ASP.NET 2: Lack of a good compilation model. In ASP.NET 1.x, you could compile all your code (*.cs) into an assembly, and you were set. Here's why I hate the new “code-beside” and “dynamic compilation” models as they are implemented in VS 2005:

--Deployment/content editing nightmare
Before, I could drop the DLL on the server, *have no source code* on the server, and allow someone else (i.e., my client), to edit the ASPX/ASCX content. In a few cases where I wanted to expose code to him, I could make a virtual method in the base class, and allow him to override it via C# code in a <SCRIPT> block. With the new VS 2005 model, my scenario is blown away and destroyed.

--Access to code means huge, ugly, hackish workarounds
Before, if I made a page/class/control/whatever in any part of my app, I could reference this from any other part. For instance, my Turing image generator. I have two statics on it that any page can call. I want that code to be in Turing.asix.cs (or in the .asix). But I can't! I am required to put it in the /Code directory for no reason at all. Maybe this was done because of the “web programmers” who think HTML is a programming language. Maybe it was to act as a ward to scare of people who are afraid of code. I can't figure it out. All I know is that it pisses me off. This problem is more serious than just my annoyance about moving one file.

Suppose I'm working on a larger site, and to keep things in line, I organize the site into various folders. Now say I'm in something like /TheSite/SomeArea/HierarchialViews. I have a few ASCX controls there, but they all share some common code (some enums, and some pure code classes that help with the sorting or organization for the views (say, something that generates a generic tree to be consumed). Where do I put the code? Well, with this new model, I've got to put it in /TheSite/CODE/SomeArea/HierarchialViews. In other words, I'm required to duplicate my entire site organization inside the Code directory, just because... um, well, I haven't found a decent reason yet.

The ASP.NET/VWD/whatever team should NOT be making these kinds of decisions for developers. Visual Studio should be a tool that we can use to write apps how we want to write them. This model worked fine for 1.x. Why has it become so hideous that they needed to REMOVE it from 2.0? With all the huge advances ASP.NET 2 and VS2005 take, why must they take this big jump backwards? Couldn't they just leave it in and say “You can do this, but we really recommend using a Code folder so you don't lose track of your .cs files.”??

The only *partial* reason for this behaviour that I can tell is the move to partial classes. Since it's a partial class, it needs the rest of the code generated from the ASP.NET runtime to compile. *I* was quite happy with the inheritance model used before. While partial classes are nice, *I* don't see any personal benefit in using them if it's going to introduce problems like this. At any rate, that still doesn't explain why I can't have a Foo.cs inside any directory (not just the /Code directory) and be able to use it.

Code | Misc. Technology
Tuesday, October 12, 2004 1:38:46 PM UTC  #    Comments [2]  |  Trackback

# Sunday, October 03, 2004
The red X of suckiness

I opened Windows Media Player 10 (which STILL doesn't have a shuffle feature that works) and saw this:

Not sure which service corresponds to the red X, but all of them suck (CinemaNow being the worst piece of crap “service” I've ever seen -- and they want you to pay for it!), so it's all.

On a related note, does anyone know to remove that part of WMP and put something useful there?
Humour | Misc. Technology
Sunday, October 03, 2004 6:25:00 PM UTC  #    Comments [2]  |  Trackback

# Wednesday, September 22, 2004
Amazing Text-To-Speech

A while ago a friend showed me some great TTS software online. But I couldn't fine it again. But I did find this: http://www.research.att.com/projects/tts/demo.html From AT&T research comes text-to-speech that sounds quite realistic. Go try it out (they have US English, UK English, German and French). Now if only MS would start shipping these voices instead of Microsoft Sam...

Misc. Technology
Wednesday, September 22, 2004 2:57:58 AM UTC  #    Comments [0]  |  Trackback

# Saturday, September 18, 2004
C# spoils you too much
At the company I'm working for, we're using Asterisk, open-source telephony software for Linux. There I said it :). I actually have a little Linux machine sitting beside me. No, I'm not on drugs -- opportunity presented itself.

The only way to really extend Asterisk with full power is via the C API. Not C++. C. The last time I did anything significant (i.e. more than 100 lines) in C was quite a few years ago. I'm just surprised at how much less productive I am in C than C#. Not to mention my constant paranoia that I'll accidentally introduce a memory leak or a buffer overflow (although, since the only interface to my code will be via DTMF tones, I doubt someone could exploit it :)).

One thing that's made it easier is Visual Studio 2005. Now, I can't compile on Windows (ok, maybe with CygWin), so I thought that'd rule using VS out. But nope. I just create a makefile project with MSVC++ 8, set the includes, and presto: Intellisense and other goodness. But what's really great is the code definition window. Like most open-source projects, documentation is quite lacking. So I always rely on going and reading the source to find out how to do something, or what's going on. With the code-definition window, I can always see the header files for things I'm using, and from there I can get over to the C files quite quickly (no grep needed). My biggest gripe is that nothing gets activated in the editor if you open a C file that's not part of your project. This makes navigating large source files that you don't own rather difficult.
Misc. Technology
Saturday, September 18, 2004 4:19:39 PM UTC  #    Comments [1]  |  Trackback

Finally, REAL broadband: 30Mbps

30Mbps to your house:
A tad pricey perhaps, but at least it's a start. Meanwhile, down here, I'm paying $229/mo for 512k...well, I will be, whenever they come to install (perhaps a month).

Guatemala | Misc. Technology | Personal
Saturday, September 18, 2004 3:53:21 PM UTC  #    Comments [1]  |  Trackback

# Monday, August 30, 2004
One more reason Word rocks - IME handling

I just found a feature that probably few people use, relative to the number of total Word users. Even though I'm running English Windows XP, my default IME is Korean. By pressing right-alt, I can switch between Roman and Hangeul mode.

However, every now and then, I forget to switch, and end up typing (and usually sending, since it's IRC or IM), English, but in Hangeul mode. So, if I were to write, “Hi, how are you?”, it'd come out as “ㅗㅑ, ㅙㅈ ㅁㄱㄷ ㅛㅐㅕ?” The same is in reverse. If I was to say “언녕!” it'd write “dkssud!”.

What's cool is the Word is smart enough to recognize this common mistake, since “dkssud” or “ㅗㅑ, ㅙㅈ ㅁㄱㄷ ㅛㅐㅕ” are extremely rare sequences in those alphabets, but common in the other one. So Word automatically corrects the text, and flips your mode. End result? You don't need to worry about switching manually, even if your document uses both English and Korean. Very cool.

I've had it mess up on me one time (in fact, since it's such a transparent feature, I only *thought* it existed before -- I'd type something and think that it flashed and flipped over, but never really tested it) -- typing “cmd”, as in a “.cmd file”, triggers it and it outputs “층” (cheung) instead.

Misc. Technology | Korean
Monday, August 30, 2004 6:21:28 PM UTC  #    Comments [1]  |  Trackback

# Monday, August 09, 2004
MSN Web Messenger

Yet another cool thing from Microsoft: MSN Web Messenger. For all those who can't install software on the computer they are using, or if everything except IE is firewalled out, just navigate to http://webmessenger.msn.com/ and away you go.

MSN Web Messenger uses IE (ok, maybe it works with another browser?) and HTTP to pull off a very convincing Messenger UI. It even does the little pop-up message windows! It's not nearly as nice as the real client, but it's definately usable. Wow, I'm impressed.

Misc. Technology
Monday, August 09, 2004 5:56:20 PM UTC  #    Comments [2]  |  Trackback

Microsoft to the rescue of non-Unicode apps!

A while back (ok, for quite some time), I've been complaining about non-Unicode apps. Today's latest offender was MSN Messenger, Korean version. Apparently there's some extra things from Microsoft for the Korean version that allows you to have avatars, instead of just a picture.

However, I couldn't install it, because it's not Unicode enabled. Here's a pic of it's installer (downloading):

Beautiful, eh? Same goes for IRC. I type in Hangeul (Korean script), and it comes out as ????. Others (using a DBCS, codepage 949) type in, and it comes out as garbage (as in the title of the above window). I was hoping to have an app that would set the locale for a specific app, so I wouldn't need to change my whole session locale *just for one app*.

Well, it turns out that Microsoft has already done this, and it rocks. Presenting: AppLocale! This beauty sets the local for a single app, and well, that's it. So now I can easily use IRC to chat in Korean (well, chat perhaps is an overstatement of my abilities)! Yey! And people wonder why I think Microsoft is so cool...

Misc. Technology
Monday, August 09, 2004 7:46:42 AM UTC  #    Comments [0]  |  Trackback

# Thursday, August 05, 2004
The sweet sound of silence

Well, the nice FedEx man showed up today with a little package from NewEgg.com: Arctic-Cooling's Super Silent 4Pro L. I can actually run my machine (P4c, 3GHz, 533MHz FSB) with a 2000RPM CPU fan (although it's quiet enough to move it to 3000RPM “just in case”). The Intel one wouldn't run at less than 3700RPM, and that's after a very cold boot, with a glass of ice inside the case.

To test it out, I ran a little keygenerator program which taxes my CPU. I ran two instances to make sure that each core would get a beating. Temp went up to about 60. That's all. And the fan was still running nice and quiet at 2500 or 3000 RPM. Cooled off instantly. Why can't Intel ship a good fan/heatsink combo like this in each processor box? With the old one, running a test like that would push the fan to about 6000RPM, and the whole thing would vibrate like it was about to take off.

Actually, I'm thankful that my machine is even running right now. It's been a long time since I've done any real hardware work, and I've never worked with thermal paste or Socket 487 restrainers (in fact, I took out the entire MB just to figure it out!). Guess I can still do those kinds of things :)

Misc. Technology
Thursday, August 05, 2004 12:09:18 AM UTC  #    Comments [0]  |  Trackback

# Monday, August 02, 2004
News flash: Unicode exists - use it!

Sometimes I don't get it. Why must programmers pretend like it's 1980 and that they don't have to care about things like character sets? People around the world use programs today, it's true! And they don't all speak the same language you do. They might not even use the same characters!

Yet today, so many apps just screw up when you try to use Unicode with them. I'm used to seeing English apps act like this. For instance, every file sharing program I've ever seen. Type in characters that aren't in the default codepage, and it doesn't know what to do with them: zero results.

Today's lame award goes to Filebada, over at www.soribada.com. I downloaded and ran it and it tries to install to C:\program files\<garbage here>\. Come on! What happens is that it has it's name encoded in codepage 949, but when those same bytes are displayed in Latin-1, you get all sorts of fun stuff like the 3/4 sign, the degree sign, etc. Is it that hard to use Unicode these days?

The only way that I know how to get around this problem is to change my Regional Settings to use the codepage desired for all non-Unicode apps. But then half of my other apps stop working correctly (and the fonts get screwed up as well). Does anyone know of a way to tell Windows to use a certain codepage for a specific application?

Misc. Technology
Monday, August 02, 2004 6:20:26 PM UTC  #    Comments [0]  |  Trackback

# Friday, July 23, 2004
A few interviewing tips for both sides

I interview people as part of my job. Many times I know of someone who's looking for a good developer and I interview people every so often. I'm not by any means an expert interviewer, but I've learned a few things. Here are some notes for both sides of the table. These apply to technical interviews.

My goal as an interviewer is to determine what you know, and what you do not know.

1: Be honest
It's ok to say your an expert in a certain area, but know where you are not. Unless you wrote the entire system in question from start to finish, there's probably a few areas you are unsure in. Take .NET for instance. .NET is huge. It's impossible that you are a guru and know every IL and x86 instruction in every single class. You might have worked on many different parts, but don't try to say you aren't weak in any of them. The interviewer will find an area you're weak with, and you'll be forced to make a retraction “Oh well, actually, I've never touched remoting or Windows Forms.” It's not BAD to not know something. During an interview, the goal is to find if you're smart and will work well. If a question is asked and you have no clue, *say so*. I try to ask a question like that every time (some esoteric thing). Good candidates will answer with “Well, I believe this is related to that, but I'd have to look this up to be sure.“ or “I'm not familiar with that.“ Bad candidates will try to make up some BS answer, perhaps thinking that you have no clue what it is either. In other cases, the interviewer just wants to know your limitations.

If you are interviewing, and feel like you're getting BS'd, start drilling down. Perhaps the interviewee misunderstood the question or is unsure of what you want. I like to give people a second chance if they start something, just to show that BS isn't going to fly. However, if the second answer to “So, you have no weaknesses?“ is “No...“ -- red flag.

2: If your resume says you know something, you better know it
Don't copy and paste the .NET Framework class library reference into your resume unless you truly understand how to use each class in detail. If something's on your resume, we'll pound you on it. That's how we determine how well you know technology. The specifics aren't important. If you write “.NET Remoting”, you better be able to tell me what MarshalByRefObject does and how statics work in this context. If you have a CS degree you better sure be able to tell me what a binary tree is. And by all means, don't say you're a C# expert, and go on to describe that C# is actually just a mix between JavaScript and Visual Basic. (Yes, that really happened.)

When interviewing, many times a great candidate won't have experience with the particular technology you're using. That's ok, provided they can learn and are good in other areas. The problem is always trying to find something you can quiz them on. I look to their resume and see. Whatever they list, I ask them to rate themselves in it. If they still say they are experts in it, then I'll drill in with a few questions on that technology. “How good is their best?“ -- that's what I want to answer.

3: Know some basics
Everyone who can type can use Visual Studio. Saying you built a data-driven app with ASP.NET only tells me that you have basic mouse and keyboard skills. You better be able to handle some fundamental *thinking*. Traverse a tree, reverse a string, add items into a sorted array. Don't bother trying to defend saying “these are impractical -- when's the last time you used BinarySearch in a real app“? Umm, let me think... yesterday. You won't get hired for *real* work if you are just a IDE groupie. Sure, you can make cool things happen, perhaps even get paid. But I'm also interested in that the code you generate is decent. Sure, in many cases you might be able to go allocation crazy and box 1 million ints for fun. In other situations, you'll need to write better code, and you need to know how to do that. If you don't want these questions, say you dropped out of school and have been just programming for years. While it might not save you if you're an idiot, at least it gives the interviewer a frame of reference. At least that's better than saying you have a CS degree, but not knowing what a BinaryTree is, how to sort an array, or so on.

Interviewing people for .NET positions can be hard, because Microsoft's done the hard work for us in most cases. One red alert is “Well, perhaps I'm not that good in that, but I know my way around .NET.“ That's like a mechanic saying “Well, hmm, I'm not sure of the difference between these fluids and those hoses, but I've got 101 power tools and a lot of rags, so I can get it working.“ You don't want people who just “get stuff working“. You want people who are going to build something nice, something you don't mind working on later on.

4: Ask for clarification
If you are unsure about something, ask to clarify it. If you think there could be something else, ask. If you have to write a function, get some context. Is this part of a realtime process and needs to execute with a given amount of resources? Or is this a drag-n-drop application that runs once a year? Sometimes it won't matter, but when it does, you've saved yourself the trouble of saying “Oh, I didn't know you wanted *efficient* code. Let me go rewrite that.“.

Sometimes it's a good idea to hold details back to see what the interviewee does. Good candidates will try to gather requirements or probe you to see what's going on. Not so good candidates just start blasting away. On the job, that means they might be likely to just write some code without much forethought of how it's going to work with everything else. Or it means that they might spend 10 hours writing a super-efficient algorithm in x86 for something that's only called once a day or will never be a bottleneck, thus lowering productivity. Try to see what balances they strike out, what trade-offs they make. If a candidate seems hestitant, volunteer some information. On interviews, people react differently than they will on the job. Hesitation might just mean they want to ask, but are afraid of negative points.

5: Have a good attitude
Almost always, you'll be joining a team and have to work with other human beings. While it might be “right” to get the smartest person ('cause intelligence is all that matters, right? :)), even if they are arrogant, it probably won't happen. You'll want to show that you will get along with other members on the team.

When interviewing, I try to make sure that this person is going to cooperate. Are they going to write code while getting feedback from others? Or will they write their “own” code and defend it at all costs? Will they help out other team members, or try to fight for the “top”?

Anyways, those are just a few notes I've realised when interviewing people. Hope it helps someone!

Misc. Technology | Personal
Friday, July 23, 2004 8:20:37 PM UTC  #    Comments [4]  |  Trackback

# Friday, July 16, 2004
Must read: Microsoft Research DRM talk

Before you form another stance on DRM, read this briefing. Cory Doctorow presented this talk to Microsoft last month. Cory's exactly correct about DRM. He talks about exactly WHY *I'm not* going to buy any more DVDs or CDs until someone fixes the technology. Very excellent article; a definate must read if you're working with anyone in contact with DRM.

Misc. Technology | Security
Friday, July 16, 2004 12:45:01 AM UTC  #    Comments [3]  |  Trackback

# Thursday, July 15, 2004
Interviewing at Microsoft

Anyone who knows me knows how much I like Microsoft. That company has repeatedly improved my standard of living. Since I spend too many hours a day using their products, they've made a huge impact on me. Sure, people can make their comments about MS, but the personal computer industry would not be the same had individual hardware makers (IBM) gotten their way (just think about if no one had a common software model to work against). Being a developer just really increases my fondness of Microsoft, since Microsoft loves developers a lot. Visual Studio is an amazing product. So, you can imagine how excited I was to interview for Microsoft.

I had been “hoping” to get an interview there someday, a hope that I really never expected to come true. Thanks to someone, I got my resume submitted via the internal site. Knowing that many hires come from internal referrals, my hope was now increased. My chances were now somewhere less than 1-in-the-length-of-a-whale-in-nanometers. Quite some time passed and I had heard nothing (as expected). Then, one day, out of the blue, I get an email from a recruiter asking if “I'd be interested in an opportunity at Microsoft”. I thought it was a joke at first, but after verifying that person does indeed exist at MS and is indeed a recruiter, wow was all I could think.

Now, let me tell you a bit about myself. Internally, my emotions are held in an signed 16-bit register (ok, it's technically more complex than that, as any 8th-year-neurosurgeon knows, but I'm making a point). Usually that works just fine. Well, not in this case. My excitement levels quickly overflowed and then I calmed down. And then I got excited again, and so on and so forth. This continued to happen over the next few weeks. Perhaps the closest experience was when I installed the first Whidbey alpha, where I promptly hyper-respirated, blacked out and fell out of my chair. At least I had soft carpeting.

Well, I responded to the recuiter, saying that “Yes, I'd be interested.” This was followed by a phone interview, to see what experience I have, what I do [not] well, and so on. I was told that I looked interesting because of my C# background. I also found out that I wasn't found in the internal database, but just by searching on the web. Wow. The recruiter was from HED, the Home Entertainment Division. This includes XBox, Encarta, and so on. I still didn't know what the position was, but I tried to find it on the online site, and thought it might have something to do with an XBox server, since that was the only posting that was geared towards a C# person. I don't have any experience programming games or 3D so this seemed a bit odd. The only info I had was that it was an SDE position involving C#.

I soon got an email from the recruiter with details on the position (it's a new product), and asking when I could meet with the hiring manager. About a week later had an interview with the hiring manager, the person who would be my boss if I was accepted. This was more technical, asking about specific technologies, having me explain some design decisions I'd make, and a technical question. I thought I was doing pretty well up until the technical question. It was a trivial question about linked lists, but it seemed like it took me forever to answer it. I suppose it was only a few minutes, but I sure was sweating. We then talked a little bit about the order of complexity of the solution. At least the asymptotic analysis came quickly to me.

After the question, I figured I had blown it. I thought that surely even a half-year CS student could answer it in 5 seconds (something that I later found not to be to true of many people). I never did much formal education, dropping out after grade 10 or 11. So I haven't learned or memorized any “basic” CS stuff via any normal channels, but instead mainly through experience. The next question confirmed it: “What's your education level?”... “Umm. None. I've just been using computers since I was 3 or 4.” “Ok, I see. Well, the recruiter will follow up with you...” I wasn't going to take that for an answer. I really wanted to know “Was I a total dumbass?” The hiring manager then said that it was not a negative (not having formal education, that is), and that he would like to move forward with me, but that the recruiter needs to handle those details. Ok, so I wasn't being blown off.

Soon I get an email from the recruiter, saying that they'd like to move forward and fly me to Redmond for interviews. Wow. A dream come true. I'm actually going to Redmond. I had only been there once before, for the Global MVP Summit. It was extremely impressive, to say the least. During the next week, we got all the details arranged. Microsoft buys you the airplane ticket, hotel, rental car (although I can't legally drive in the states, ok, well, I can't legally drive anywhere, but at least in Guatemala a few bucks fixes that) or reimburses you for taxis. They also reimburse you for food and other expenses. However, they do not reimburse you for gambling expenses, haircuts, alcohol, or other “personal entertainment”, which includes the pay-per-view porn at hotels. They make this very clear on their website, leading me to wonder how many people tried to pass of a $10,000 bill for a complete makeover, champagne, and a couple of call girls. Their websites handle everything, including making your appointments. Very smooth (it'd have to be, with the number of people they interview).

I had a trip coming up, so it was actually about 3 weeks before I could get out there. I re-read “How to move Mount Fuji”, which was o.k. Some of the answers were wrong (I had read it a year earlier, just for fun) though, and it doesn't cover any technical questions. Nice flight out, easy taxi over to the Marriot Courtyard, which is just a block away from campus. The night I got there, I met up with a friend from MS, and had some Pho'. He was very reassuring, telling me about his interviews, which was quite helpful. I didn't get to sleep until quite late, and I slept quite poorly as well. Due to the time change, I also woke up quite early too. Not a good start. I went down and had a few cups of yogurt, and noticed that my hands were shaking. Quite a few other people were there on Microsoft-related business. Maybe the whole hotel was rented by MS. Who knows.

First off, I had to meet the recruiter. That building was not on campus, and was actually about 4km away. Not being able to calculate the time a taxi traveling at 50km/hr would take to go 4km, I left about an hour an a half before my appointment, promptly arriving 1.3 hours early. Well, better early than late, eh? I nervously paced around the waiting room, perhaps annoying the receptionist who was frantically trying to reschedule a meeting room she overbooked. I think I finally got a bit calmer, somehow. Or maybe I just thought I was calm. Finally, I was entered into the sacred building and sat down in the recruiters office.

He gave me a brief overview of what I was here for, telling me the routine. One piece of advice I was given “Do not bullshit these people. They are very smart, and it will not work. Don't even try. Just be yourself.“ I had 3 interviews scheduled. The second one was a lunch interview. From what I had heard, they give you a few interviews. If you suck, they don't give you any extras, or come up with an excuse like “The next person to interview's kids just got hit by a truck, so he won't be in today. So you can go.” If you don't suck, then you'll get “bonus” interviews. Without much ado, I got on the shuttle and headed over to the (or one of the) Encarta building(s).

My first interview was with a dev lead for Encarta. The entire interview was writing code on the whiteboard. Most of it was writing a string-lookup function, so we dicussed dictionaries, hashtables, and so on, as well explaining some .NET-specific code (since string interning can be used). I think I did alright there. Very friendly and nice person. Right before I left, I had to write a simple C++ function to deal with linked lists, mainly to make sure I knew what pointers are and how they are used. No problem there.

My next interview was with another dev lead for Encarta, this time on the online version. We went to an Indian restaurant, and the food was great. I had never had Indian food at an Indian restaurant before, so that was quite enjoyable. Looking back, perhaps I enjoyed the food too much and maybe shouldn't have eaten, so as to answer more questions. On the way over, I was asked to explain things about garbage collection, disposing and finalization. I was on solid ground there. In fact, that's a question I ask many people I interview. During lunch, we talked about ASP.NET, different kinds of controls, caching strategies for search engines, and so on. When we got back, I had to write some code to do some caching, making it syncronized so that data is never retrieved more than once. I also did a small “reverse a string“ sample in C.

The next interview was finally with someone who was on the new product team. A good portion was spent talking about what the product actually was (since I was still rather in the dark). Then I had to write some code to randomize a deck of cards (in other words, randomize an array order). We had some fun discussions about random output and probability. I did well there too. By that I mean I was correct, and I'm pretty sure he thought the same way too. I say this, because in another discussion with someone else, they pointed out an “optmiziation” to an algorithm when we were leaving (so I didn't get a chance to rebut it) that was based on a false assumption, and was thus wrong, especially in light of the optimizations the JIT engine does.

One troubling thing revealed was that it was not sure that C# was going to be used. Apparently, Microsoft suffers from internal politics like any other company and due to some situations out of this team's control, having the .NET Framework was not a given. I told them this was utter crap, and that the other team should fix their thinking (in fact, I told this team that they should do so during the last beta of their product), and they seemed to agree. But that didn't change the situation that we might have to use C++. I'm not that good with C++. I haven't done much work in it for a while, and the last time I did use it, it was Managed C++. Of course, I'd write in C++ if they wanted me to. I told them that for MS, I'd write in Cobol, Ada, Prolog, or even Brainf*ck. At this point, my hopes went down. There are definately more experienced people for the job if they want a C++ Windows application. Considering that a reason the recuiter called was for a “C# expert“, this was quite a letdown.

However, I did get a bonus interview, to see if I was smart enough to really do a good job C++, or to see if I was just a .NET-groupie. This time, I met with a dev lead on an educational product. She posed quite a few different design questions, asked about order of complexity, different algorithms, explaining dictionary versus hashtable (and what is the “HybridDictionary“ .NET class), and so on. I had to write a search function for a binary tree in C++, which I did alright, except for one syntax mistake at the end (hey, I told them I hadn't used C++ for a while). I think I did well overall, because I got another bonus interview: The End Boss.

The first think the hiring manager asked me when I sat down with him was “How are you doing?“ to which I responded “Well, I'm seeing you, so I guess I'm not doing that bad.“ “Oh, so you know how things work here...“ We dicussed more of the project at hand, talked about my past experience (“What was the hardest non-technical thing you've done?“). Then the technical question. Before I describe this, let me note that I had only slept about 5 hours the night before, and had been up since 6 or 7, and interviewing since 11. It was now 6:30PM. This would throw me off my game any day, but adding the pressure and excitement of being on campus, and well, I wasn't in my top-coding mood by now. I might not have realised it unless he had pointed out that it was late (I was doing o.k. in the last interview). Anyways, up to the whiteboard.

“Find the smallest element in a circular array.” I chucked internally -- damn, this was easy. I instantly knew how to approach it, so set about it. He takes one glance, and “Nope, that doesn't work.“ Red Alert. After a few off-by-one errors, I thought I had it. “Nope, still doesn't work, but you fixed another small issue.“ Panic mode. Hmm, should I open my wallet and take some Xanax? Nah, it was too late. The pressure was already on. I wish I had brought Xanax. “Hmm, that, no, I don't think, nope. Still wrong.” This guy was smart (as was everyone else, but I didn't embarrass myself as much in front of them). I felt like he could see right through my mind, laughing at each weak neuron. He gave me a simple hint, and it was a small, obvious thing, a particular case. Something I would have caught in VS in about 10 seconds. Of course the code didn't work. So I added some checks for the case. “Nope. Still doesn't work.” Fixed a few other issues with the recursion. “Yea, ok, that's more or less it.“ I had lost. Perhaps it worked, but the whiteboard was a mess. “Well, you're tired, it's been a long day, and it's late.“ Then I made the biggest mistake of the day.

“Look, give me another question, so I can prove I'm not a dumbass.“ And another, retardedly easy question he gave me. And at that precise moment, my brain decided to stop functioning. Somehow, 0xF5 got sent to the part of my brain that does coding and thinking. HLT. How simple can it be? “Write a non-recursive function to do inorder traversal of a binary tree.“ Nothing that should take much time at all. But boom. I profusely apologised and promised to email him the code. He said that was ok.

For the next 48 hours (which consisted of sleeping, riding an airplane, and sleeping), I could do nothing but berate myself. I got seriously depressed/annoyed. Not because I blew my chance, but because I felt so utterly stupid. I could handle “We are looking for a different skillset.“ I couldn't handle “You're a bloody idiot. Give us back the hotel fare.“ I finally sat down, spit out the code, make a quick pass at refining it for elegance, and sent it off. At least I had done it. Now all I could do was wait. The recuiter promised to get back to me within a few days.

Well, a few days and nothing, so I pinged him. “They haven't made a decision yet. However, if they don't want you, I'll look for another position for you.“ A week later (which was last week) “Not for that position. They have another opening soon, maybe there. I also am sending your data to two other managers for other positions.“

And that's where I stand. I know these things take time, so maybe I'll get some good news. Looking back on everything, I'm not sure how bad the last interview was. Maybe they were just looking for someone, who, say, knew how to write a Windows app in C++ already. I'm guessing if I totally flubbed it, they'd tell me “You sucked, no thanks.“ From reading The Moon Gals Blog, I know it'll take time. At any rate, I'm feeling great now. Interviewing was more than I had hoped for, so that's pretty cool in and of itself. I'd love to be hired, obviously, but at least the suspense is over.

Misc. Technology | Personal
Thursday, July 15, 2004 3:02:10 PM UTC  #    Comments [6]  |  Trackback

# Monday, July 12, 2004
News flash: Terrorists sell pirate DVDs

According to the film companies in the UK, terrorists sell pirate DVDs to raise funds. So, forget all the benefits that I mentioned the other day, now, buying a DVD off the street means supporting terrorism. That really does it explain it all, eh? Pirates are painted as evil vile villains, and terrorists also fit that bill, so why not connect 'em? I'm just surprised it took someone so long to come find the link. I wonder how long it'll be until we learn Saddam has stockpiles of counterfeit DVDs, just waiting to flood the market and make the economy collapse... The industry makes it quite clear that there are more people than just terrorists (no, really?) who are pirates.

My favourite quote from the article was “By purchasing pirated DVDs, many consumers are unwittingly helping to fund hardcore criminals with links to people trafficking, drugs, guns and money laundering” -- wow. I'd hate to think what people who sell pirated copies of SQL Server do!

They also make a lame attack at the quality of pirated wares, saying “They were rubbish, they were shaky, out of focus, camerawork was bad, they had muffled sound”. Well, sir, it looks like you bought a SCREENER, something no decent pirate would sell. Oh wait, they're evil, vile criminals. So I suppose the moral of the story is: Don't buy unprofessional pirated DVDs 'cause they suck. Find a pirate who knows what they're doing, and in the process, stop funding terrorism.

Humour | Misc. Technology
Monday, July 12, 2004 2:41:46 PM UTC  #    Comments [0]  |  Trackback

# Sunday, July 11, 2004
D&D Items do exist: I just read a "Tome of Stupidity -1"

For those of you who played D&D (here's a funny video to see what it's like), you might recall that there were magical tomes that could increase or decrease your abilities, just by reading them. Of course that's impossible in real life since we'd need powerful magic... right? Well, as I have unfortunately learned, no. A while ago, I had to maintain someone else's app. I believe in the process of reading this app's code, I have lost a few IQ points. Let's take a look, shall we?*

All the code in this app uses horrible variable names. In a 250 line block of code (a single method -- the writers must have thought there to be huge drawbacks to using methods), the first line starts off by declaring the variables. A sample looks this:

dim objconn,objrs,strDatabase,mysql,mysql1,sqlstring,rstemp,dbConn1,objrs1,query

This is a truncated line. They actually declare about double that much. Regardless on how you feel about declaring everything at the top of a file, this is bad. They don't use these variables at the same time. For instance, they'll open objrs, do something, and then close it, then open rstemp and repeat. There aren't actually two objects in use at once. They just declared extra variables for fun. Or maybe they thought they had to give the variables a rest. I don't know. And I don't think they did either. Of course, it's better than using no variable names at all.

They have a process to read values from a comma-delimited file. So, one line at a time, they use VB's split function, storing the result in a variable named “split“. So far so good. Then they proceed to use constants for the next 100 lines to refer to different fields, giving way to wonderful code as so:

if split(6) = “true“ then
  objrs1.open “SELECT * FROM Table WHERE Field1 = “ & split(2) & “ Field2 = '“ & split(9) & “'“
  split(4) = objrs1(“SomeField“)

At a few places in the app, a field is selected from the DB for absolutely no reason:

someId = Request.QueryString(“someId“)
rs.Open “SELECT SomeId FROM Orders WHERE SomeId = “ & someId, objConn1

someId = rs(“SomeId“)

That's right. They select a single field (an int), constraining it to the current value of their var, and then set the var to the same value. Maybe there's something special in SQL that I'm not aware of. To their credit, there's actually a check for rs.Eof first (omitted for clarity of stupidity).

Here's a brilliant idea for performance: Don't use SQL's COUNT. In quite a few places, they'll execute a semi-complex query that returns, on average, 10,000 rows. But why bother with SELECT COUNT, when we have SELECT *?

The entire app is built like this. The people who wrote this should have their text editors confiscated.

* Some variable names have been renamed to protect the innoce-- mentally challenged.

Code | Humour | Misc. Technology | Personal
Sunday, July 11, 2004 8:14:29 PM UTC  #    Comments [1]  |  Trackback

# Saturday, July 10, 2004
And the MPAA wonders why people pirate...

When I first heard about DVD technology, I was pretty excited. 9GB on a single CD-sized disc seemed pretty cool. Having video on it seemed just like any other application of this technology… you got space, so put something there. What I thought was cool is that we’d be able to jump to any area at a time (like CDs), and that there could be lots of extra information along with the video. Listen to it in a different language, have subtitles in 10 languages – cool.


Well, imagine my disappointment when I first got “The Matrix” on DVD. English only. What? Why on earth would they put only one language on it? Can subtitle files be that big? Then I was introduced to the utterly stupid system known as regional codes. Region codes were invented so that the movie studios could keep their current business model of releasing a film much later in other countries, by coding a DVD to work only with a certain coded DVD player. The idea is that in each region of the world, you can only obtain DVDs and players of a certain code. Why they have this business model is beyond me (it’s certainly not a logistical limitation). How they thought this had any chance in the world of actually being effective, is even further beyond me (wait, not it’s not, these people also fought VHS…). When I lived in Guatemala, I could rent DVDs at the local video rental store before they had hit cinemas in the u.s. let alone in Guatemala.


Region coding is such a horrible idea – it’s like programmers who think all text is ASCII (or who think there’s an 8-bit ASCII). When I watch movies with my wife’s family, many times we’ll have Spanish subtitles turned on. Everyone can enjoy the original voices (Mexican/Western dubbing is atrocious), as well as get clarity on parts they might not understand. Well, of course, under this system, that’s impossible. Also, my family doesn’t use Spanish at all, but they live in Guatemala. Half of the hardware/DVDs available (well, nearly everything in the retail market) won’t work on their equipment. Fortunately pirate sales are all over ($2 for a DVD!) and have region encoding removed.


I got the “Tonari no totoro” DVD, but guess what? Fox thought “who needs Japanese audio?” and left us only with a horrible English dub. So much for enjoying their product. But I could always get a foreign version with English subs and original audio… oh wait, but that’s region 2, so I won’t buy it. So much for the business model. One exception I did notice: “Dr. Strangelove (Or How I Learned To Stopped Worrying And Love The Bomb)“ (Special Edition) has 7 languages, including Spanish and Korean. *That's* how DVDs should be made.


To make things worse, the geniuses who invented the DVD virtual machine, thought it’d be cool to have “Prohibited User Operations”. This allows the designer of a DVD to decide that you can’t switch subtitles, audio tracks, or jump to a different chapter/title. I just received Lost in Translation DVD from Netflix. When you start to play it (and after the useless and annoying FBI warning), a screen comes up saying “You may fast forward to the menu”. Excuse me? Fast forward? What is this, a tape? Sure enough – they disabled all skipping, *forcing* the user to watch their previews (even at a high scan speed). On the player I was using, going to another title (there are 4 or 5 of them before the menu) takes the playback out of scan mode and sticks it back into play. So here I am, in 2004, repeatedly hitting “Fast Forward” to get to the menu of the DVD. Sigh. On the bright side, most DVD ripping software (to make copies) removes prohibited user ops, so anyone with a pirated copy might not have to sit though this.


What a strange world it is when pirates actually get things better of than those of us who pay. The MPAA blames the Internet as the reason why people pirate. Perhaps there’s another reason (hint: Regardless of what the RIAA says, pissing customers off is not good for business).

Misc. Technology
Saturday, July 10, 2004 5:12:57 AM UTC  #    Comments [1]  |  Trackback

# Thursday, July 08, 2004
InvisiSource Beta Shipping - Win an Xbox

Well, after quite some time, we've finally sent out the first beta of InvisiSource. It's an encrypted loader/obfuscator that I've been working on for quite some time. The reason it's been taking so long is that when we approach obfuscation, we try to make the obfuscation break as many rules as possible, to make the code even harder to reverse engineer. Unfortunately, it's quite easy to break too many rules and end up with something that won't run in every scenario. Over the past while, I've discovered many tricks that'd throw quite a screwball at a potential cracker. Unfortunately, the conditions on them make them unsuitable for every app. Other factors that took a while: debugging encrypted code and obfuscated code is, by design, hard :).

Anyways, we're going to be giving out Xbox systems to the top three beta testers (which is a good amount, considering the size of the tester pool). So, head on over to www.invisiSource.net and sign up!

IL | Misc. Technology | Security
Thursday, July 08, 2004 7:08:41 AM UTC  #    Comments [1]  |  Trackback

# Tuesday, July 06, 2004
SDE and SDE/T jobs available

Are you a strong ASP.NET tester or developer? If so, I might have a job for you. We're currently looking for a tester with strong development skills who can create and automate test cases for an ASP.NET application. Strong coding skills in C# as well as understanding of ASP.NET, HTML and SQL are required. We're also looking for strong developers to join an existing team and work on a medium-sized project.

If you are interested, drop me a line: mgg AT atrevido . net.

Misc. Technology
Tuesday, July 06, 2004 3:40:40 AM UTC  #    Comments [0]  |  Trackback

# Sunday, July 04, 2004
Annoying anti-pirating software implementors: please stop!

Quite some years ago (8 or 9?), I played a game called One Must Fall, a cool robot melee fighter game. Now they released a new version with cool effects, Internet play, and so on: One Must Fall:Battlegrounds. I just recently learned it was shipping (they did good job of press before it shipped, but I never heard about it after it shipped). My copy finally arrived in the mail today. I start it up, check it out, and after winning a level, the game quits with this message box:
Protection Error
Debugger detected  - please close it down and restart! Windows NT users: Please note that having the WinIce/SoftIce service installed means that you are running a debugger!
This is wrong. I work from home, as well as play games from home. I've got a few debuggers installed (not SoftICE though). At the time, I had Visual Studio closed, and hadn't been running the debugger since my machine started. But what's worse is that apparently they thought this perfectly acceptable! Note that this doesn't stop piracy *AT ALL*. Experienced crackers are going to crack the game, and serious “pirates” are going to apply patches. Having a CD check stops “casual piracy”. Having a debugger check stops wannabe crackers from cracking. That's it!

I've emailed support with my current plan of action: Try a pirated version and if that doesn't work, return it for a refund (something publishers don't like). Sigh.

Update: Well, I reluctlantly installed a crack from a game backup site. And guess what? It works just fine. No more debugger complaints (and I get to take the CD out too).

Last update: Got in touch with one of the developers. At first, they thought it was a problem with DirectX, or the video card or likewise, since their code doesn't do any checking. However, they were using SafeDisc (which is less safe than rolling your own, since there are a few tools that instantly remove SafeDisc). However, after I told them that a pirate crack makes the game run, he said he'd get me an unprotected version. Hey, at least their support is good!

Misc. Technology
Sunday, July 04, 2004 12:20:40 AM UTC  #    Comments [6]  |  Trackback

# Wednesday, June 23, 2004
Why I hate nVidia now

At the PDC '03, and the time after it, it seemed like Microsoft was really liking ATI. I remember using their cards a long time ago, and it was a very bad experience. So, I've been quite loyal to nVidia for the past while, since they hadn't disappointed majorly... until a few days ago. I just left for a trip, and was counting on using Remote Desktop to get access to VS, Outlook, etc. while on the road.

I connect to my machine from my laptop. User... pass.. applying settings -- window closes. Try again. On another machine. Try with a different user (perhaps the profile was messed up...). All the same. After login, the window closes.

Google group search for “remote desktop closes”... and tada! Are you using nVidia's drivers? Guess what? Their drivers install a service and yep, that service kills remote desktop. Stop the service, and you're set. Well, I'm 3000 miles away from my computer, so that's pretty hard (two firewalls, so I can't connect to SQL Server and run a extended procedure or likewise).

Apparently, this is nothing that new (judging from Google groups), but I don't remember nVidia mentioning this in their release notes. Why can't hardware vendors just make drivers? That's all I need. Drivers and an optional configuration app. Seems like this trend is only getting worse...

Misc. Technology | Personal
Wednesday, June 23, 2004 6:28:54 AM UTC  #    Comments [3]  |  Trackback

# Tuesday, June 15, 2004
Programs aren't people!
Attention to all devs who think they are writing “friendly” programs by using a personal voice: stop. I just got this in my inbox:

Subject: failure notice
Hi. This is the qmail-send program at somesite.com. I'm afraid I wasn't able to deliver your message to the following addresses. This is a permanent error; I've given up. Sorry it didn't work out.
<emailATdomain.com> Sorry, I couldn't find any host by that name. (#4.1.2) I'm not going to try again; this message has been in the queue too long.

Makes me think my server needs therapy. I had to suppress the desire to hit reply and say “Oh don't worry, it's ok. I'll try sending the message again later.”

This isn't a friendly Office Assistent, it's a mailer daemon. Yet the devs just couldn't resist making it have feelings. I wonder if it crossed their minds to throw in a dice-roll to determine if the program is feeling sorry, or just annoyed that it couldn't deliver the message. Perhaps sometimes it could be apathetic.

The real problem though is that you have to read and parse emotional English to get the simple error out of this message. Notice that it's not a “friendly” message where common problems and resolutions are suggested, it's just an apologetic technical message. What's wrong with <some descriptive text> followed by: “Error #4.1.2: Host not found. Fatal error, delivery failed.”?
Humour | Misc. Technology
Tuesday, June 15, 2004 4:28:48 AM UTC  #    Comments [3]  |  Trackback

# Monday, June 14, 2004
The Object Test Bench
Just another way Visual Studio 2005 “Whidbey” is going to help out: The Object Test Bench. This nifty tool (found in View -> Other Windows -> Object Test Bench) allows you to create objects and play around with them at design time. For instance, suppose I want to find out what kind of data the System.IO.FileInfo class presents, and how it presents it (say, do directories have a trailing slash?). I simply open the window, and type in my expression:
System.IO.FileInfo someFile = new System.IO.FileInfo(”C:\\x.cs”);

Presto! I can now explore this new object. Supposedly, there will be other ways to get objects into the bench, say the Class View or Designer, but it didn't seem to work in the build I'm using (which is a bit more current than the May CTP). Trying to create some of my own classes or collection classes seemed to have problems too, but I'm getting a new build in a few days, so we'll see if it's fixed then.
Now, suppose we want to learn more about the functionality of this object. Right click it, and away we go:

I created a new object, a string, to store the filename, and now I'll invoke the CopyTo(string, bool) method. I can use new literals, or existing objects:

Any (?I think?) expression is valid, so I could do: filename = Path.GetTempFileName(); and use the result in a variable. Even better, I don't even need to declare the variable. Any method called pops up a dialog stating what was returned, and prompts to add it to the bench. Here, I've called “ToUpperInvariant()“ on an existing string:

Just another gem that's definately going to help as I explore .NET 2.0.
Code | Misc. Technology
Monday, June 14, 2004 5:05:56 AM UTC  #    Comments [3]  |  Trackback

My #1 Whidbey Feature

I've been very, very busy lately, and my wrists have been hurting (spend over $100 getting a “keyboard manager”). However, among the things I've been doing, I've been involved in a usability study with the Visual Studio team. Basically, we meet over live meeting with my desktop shared, so they can watch how I use Visual Studio. This helps figure out if I'm using the new features correctly, or if the design could be clearer. I like it cause I can make very direct feedback and hopefully improve the product for others! Speaking of feedback, the new default for strings in Whidbey is maroon (at least on the build I just installed) -- I made this suggestion to someone who works in that area about two months ago -- so they ARE listening! :)

Whidbey has a host of new features. So many aspects have been fixed up so when you use it, you just have to say “Oh sweet, that's nice!”. There's been a lot of coverage of the “big” new features, like generics and in C#, refactorings, and that's well deserved. However, there's been a ton of work on the day-to-day stuff as well. The #1 top thing I miss when using Everett is auto-Intellisense, for lack of a better name. In VS2005, Intellisense activates on a single keystroke (most of the time), and the list is complete: even keywords are listed. I think preprocessor directives are the only things not available (I've put in a wish :)). It might not seem like a big deal, but it is definately the top thing I notice line-by-line when working in VS2003. CodeRush (www.devexpress.com) helps a bit, but still doesn't come close to how great Intellisense is in VS2005.

Code | Misc. Technology
Monday, June 14, 2004 1:04:28 AM UTC  #    Comments [0]  |  Trackback

Find ALL References
In Visual Studio 7.x, finding all references to a symbol was really annoying. You could click “go to reference”, and then you had to use Ctrl+1 and Ctrl+2 to move around. Not nice. Visual Studio 2005 changes this. Now, you can find references and have all the results show up, along with the code where they are used, and the file and line information.
Code | Misc. Technology
Monday, June 14, 2004 12:51:30 AM UTC  #    Comments [0]  |  Trackback

# Monday, May 10, 2004
Visual Studio never ceases to impress me

On Friday, I had some issues with Visual Studio setup. I was trying to add some features, however VS wasn't liking my MSDN source (I guess I used a different MSI to install before, and the MSDN MSI was different). PSS couldn't resolve it with their cool little MSI tools, so a re-install was in order.

I was hesistant, since I have some add-ons, lots of customizations, and things like VSIP installed. Well, even after the full uninstall-reinstall, all my settings and addons were retained. I'm exceedingly impressed.

I also spent this weekend coding on my wife's laptop. She only has the framework, no SDK, so it was quite an interesting experience. I couldn't use ILDASM (*gasp*), and had no docs. I was also using CSC and Notepad. Getting back into VS2005 feels *really* good now :).

Misc. Technology | Personal
Monday, May 10, 2004 4:31:48 PM UTC  #    Comments [0]  |  Trackback

# Sunday, April 11, 2004
VS2005 - Just a small cool feature

I was just opening up some of the BCL code in VS2005. Wow, do I love this product. I just noticed some new things on the document tabs:
  “Close all but this”
  “Show File In Explorer”

When I've got a lot of files open that aren't part of a solution (like the framework sources), that last item is really nice. As is the former item, as you can imagine. Now if I could just get the tabs to open in the right order -- the tabs are organized by some kinda MRU system, which I find rather annoying.

Just 3 out of 10 million new things in the new IDE. Got a cool tip/trick (or a change you dislike) for the Community Technical Preview? Leave a comment.

Misc. Technology
Sunday, April 11, 2004 4:05:23 AM UTC  #    Comments [1]  |  Trackback

# Wednesday, March 17, 2004
Easy on your eyes

I just got to Atlanta, and the next morning, UPS showed up with my new Sony SDM-S73/B, a wonderful 17” LCD panel (analog). Wow. I've been using CRTs for 18 years, and my eyes hurt.  This panel is such a welcome relief!

Big benefit: no refresh.  I'm really sensitive to refresh rate, and pretty much any CRT running at less than 85Hz gives me a headache within a few minutes. Even though this panel runs at only 75Hz, the way that LCD works means that you don't notice it. It's a solid display that's just... there. Feels like it's just painted on.

Another big benefit: low output. Every CRT I've used, I feel like there's a lot of energy coming towards my eyes. It's a lot to handle, and it's hard on them, thus my articles on using gray. This Sony display has a great “Eco” button that flips between energy levels (both in consumption and output). Thus I can keep my display as low as possible throughout the day and night, and save energy too.

Another nice thing is that the stand makes it very simple to move up and down, so as I change my sitting (slouching?) position, I can make sure I'm straight-on, which is best for ClearType reading. ClearType really makes text look better. Windows Media Video HD looks spectacular on this display. It has a 160-degree viewing angle, so a few people can sit around and watch too.

TigerDirect has them for $450, which is about $50 cheaper than anywhere else I found them.

Misc. Technology | Personal
Wednesday, March 17, 2004 7:10:13 PM UTC  #    Comments [3]  |  Trackback

Lame: Cyberlink PowerDVD 5.0 Multilingual

I tried out Cyberlink PowerDVD 5.0.  The install program displayed all its text as question marks and garbage text.  This normally happens if a font doesn't support extended characters (you get ?? instead), or if codepages don't match up (they don't use Unicode, and instead use a DBCS, which gives all the wierd looking garbage on my codepage).  Why, oh why, would a program that's supposed to be “multilingual” mess this up?

Turns out, my formatting settings are set to Korean.  Everything else is currently in English (debugging cryptic Javascript errors in Korean was too hard).  So the PowerDVD software decides that if my formatting settings are for a certain region, I must be using that language.  See the jump in logic?  Changing my regional settings to English (United States) makes it all good again.  Who codes this stuff?

Misc. Technology
Wednesday, March 17, 2004 6:41:52 PM UTC  #    Comments [0]  |  Trackback

# Monday, March 08, 2004
Vault - great source control

I just found a great product, Vault.  Vault is a source control system written entirely in .NET.  The main advantage of it is that it's easy-to-use, and also important, easy-to-setup.  I tried using VSS, really, I did!  But wow, it's really poor.  Getting things working correctly even on my local machine was a pain, not to mention on the LAN or over the Internet.  Vault took all of 5 minutes to install on an Internet-based development server, and works quite well -- as well as anything that has to interface with VS.NET can.  As well, if you're just looking for a system for your local machine, it's free for one user.  Very cool!

Code | Misc. Technology
Monday, March 08, 2004 5:36:33 PM UTC  #    Comments [0]  |  Trackback

# Sunday, March 07, 2004
Fixing dasBlog with intraVnews

I use intraVnews (www.intraVnews.com) to read RSS feeds.  It's free, and most importantly, it's integrated into Outlook.  However, I was having trouble getting intraVnews to read my blog's RSS feed.  I emailed intraVnews support (which is VERY good) and found out that intraVnews DOES have a problem with some dasBlog feeds.

The issue is that intraVnews sends an HTTP HEAD request to the RSS feed first, to see if it has changed.  A HEAD request is just like a GET, except that only the HTTP headers are returned.  Well, dasBlog uses a web service (.ASMX) to render the XML.  ASP.NET doesn't allow HEAD requests to ASMX files and will error.  If you have customErrors on (I think this is the default for dasBlog?), instead of a 500 internal service error, you get a 302 Found -- a redirection to an error page.  intraVnews then decides to throw this out.

Just by turning customErrors off in the web.config, the normal HTTP error will be returned, and intraVnews treats this just fine.  Thanks to intraVnews for pointing this out, and Rex Swain, for his cool HTTPView page, which lets you see exactly what's coming back in an HTTP response.

Misc. Technology
Sunday, March 07, 2004 5:01:25 PM UTC  #    Comments [0]  |  Trackback

# Sunday, February 29, 2004
IMEs and MUIs

Every day I get a few hits from people using Google to find information on IMEs.  Judging from their search queries, I'm guessing they want to install an IME.  If you are one of these people, try this to start off:

MUIs (Multilingual User Interace) Packs are extremely awesome.  They REALLY enhance Office.  However for some <adjective> reason, you can't easily get them.  I have them since they're included in my MSDN subscription.  Otherwise, see these links for requirements:

Hopefully someday Microsoft will make ONLY English language versions, depending on enhanced MUI packs for localization.

Misc. Technology
Sunday, February 29, 2004 4:01:55 PM UTC  #    Comments [0]  |  Trackback

Using gray

Well, for the last two weeks I've been using some shade of gray (205,205,205) as my Window colour (all backgrounds).  And for the most part, applications have worked just fine, not like my last experience.  Perhaps I need a darker shade, but I'm worried that the reduced contrast will start straining my eyes and negate the benefit of non-white background to begin with.

Of course, I could change the text colours to white, but I really doubt anything would look good then...  Anyways, give it a spin!  Turn down the amount of energy that your display is emitting and see how it feels.

Misc. Technology | Personal
Sunday, February 29, 2004 4:28:38 AM UTC  #    Comments [2]  |  Trackback

Visual Studio visual tip

In the comments for my post, “Some colour tips for Visual Studio .NET“, Michael Carter writes:

“I'm also using Lucida Sans Typewriter as my default font. I think it's much easier to read than Courier. “

Easier than Courier [New]?  I had to try.  Well, after playing with Lucida Sans Typewriter for about 5 minutes, I found that going back to Courier New was impossible.  Thanks for the tip Michael!

Misc. Technology
Sunday, February 29, 2004 4:25:05 AM UTC  #    Comments [0]  |  Trackback

# Thursday, February 12, 2004
Abstract thinking and colours

My earlier post about thinking abstractly in relation to language to text works because when a user is put through something, and must deal with it for a bit, hopefully they will be more sensitive to others who might deal with a circumstance all the time.

Case-in-point:  Colours.  Why is it that so many developers just ASSUME I'm going to use the standard Windows colour scheme, and then decide that using system colours or transparent colour is too much work, and that they'll just set it to White, since it works?

While talking about background colours in VS.NET, I remembered that this of course applies to many applications.  In fact, a while back, I tried to switch the background text color to a nice gray.  I found out that my system looked like crap, since over half of the apps I use don't play nice.  Some are unreadable, others hurt a LOT to read.  I think it was a version of some CD burning software that decided to use Red (FF0000) for some text.  Red next to the gray I used turned out to be an optical illusion of pain.

Websites have the same problem too, although most of them have the inverse problem.  The designers want the background to be white, and rely on the default.  This is NOT necessarily a bad thing.  If I set my colour scheme for a dark background, I'd enjoy reading/writing text on a site with a dark background (all the white on my own site is starting to annoy me...).

Eventually, I ended up going back to a white background, painful as it is.  But, it's been a while, and perhaps devs are smarter now?  I'm going to go switch now and see how things work out.

Code | Misc. Technology
Thursday, February 12, 2004 3:21:20 PM UTC  #    Comments [0]  |  Trackback