tech


Everywhere you read how awesome the game is, from the game review sites to the New York Times.  And they are right, it’s a very good game.

However, it’s not the best game evar.  In fact, while I admit I’m not fully complete yet I think it’s already safe to say that GTA:Vice City and GTA: San Andreas are actually more fun to play.

The biggest mistake Rockstar made was to make the driving more realistic.  Driving just about any car is a pain, with horrible acceleration and loose handling, it’s far too difficult to make controlled turns quickly.  And driving a bike (what was one of the best parts of the GTA experience) is now virtually impossible, because once you get up to speed you’re highly likely to hit a car or other obstacle that sends Niko hurtling through the air to his death.  Realistic sure, but lame!

My other complaint is that with this series they came “back to earth”, so to speak.  I’m probably in the minority but I played GTA:SA to completion and really enjoyed its far-out storyline, with planes and alien technology and multiple-city landscape.  The simpler one-city environment of Liberty City (while still quite large) feels constrained to me.

Don’t get me wrong… the city is incredible and breathtakingly beautiful.  And they’ve added lots of depth and richness to the environment and the story.  I love their in-game internet and television station and radio talk shows.  The plotline and missions are still pretty darn great — one cutscene in particular made me laugh until it hurt.

I am having a great time with the game, but I want more.  Bring on GTA4:Vice City! (or London, or whatever it will be) and make driving fun again!

DON’T BUY MICROSOFT PRODUCTS
DON’T BUY MICROSOFT PRODUCTS

DON’T BUY MICROSOFT PRODUCTS

(and yes, this includes xbox… it may be “ok” for now but just imagine they control that market too)

I’m sick and tired of hard drives failing on me.  Losing data hurts way too much for a guy like me, so I finally decided to stop half-assing it and spend some money to do things properly.

On Monday I ordered a two-bay drive enclosure, and two 1T drives.  I’m going to operate those in RAID mirror mode, so if either of them die I will still retain all of my precious data.

I forgot to mention this here I think, but about a month ago I switched position at work from being a Database Developer to a DBA.  It’s a lot more responsibility, but also quite rewarding.  So far I’m enjoying it.

Yay me!

Not just for states anymore!  I am posting this from the new OpenSolaris liveCD available from the Indiana project.  It’s nowhere near as slick as Ubuntu is, but light years ahead of where OpenSolaris was on the Desktop (laptop) just a short while ago

I was quite excited when I woke up this morning to find that Amazon had launched their MP3 store.  You can buy decent-quality songs or albums in delightfully non-DRM’d format for very reasonable prices.

I even found an album that I was interested in getting which was part of the labels they are currently offering on the store.  When I clicked through to the details, they had an “also available on CD” link so I checked that out… and sure enough the CD price is actually cheaper.  ($7.99 for the CD vs $8.99 for the MP3s)

I even have “free” 2-day shipping with Amazon Prime, so it would be kind of stupid for me to actually pay more money for less quality on this.  But it seems like such a waste to order a CD with all that packaging for something I’m just going to file away on a shelf somewhere.

Right now, Google is suing Microsoft for antitrust violations in order to add support for their Google Desktop application.

How long will it be before Microsoft sues Google for antitrust violations to make Google add MSN Word to the Google application list?

I forgot to mention this when it was still news.  However, I should publicly admit that I was wrong about Apple’s intentions towards music DRM.  I thought that their DRM was designed an intentional anticompetitive move in order to foster lock-in for iPods, and that their anti-DRM grumblings were just posturing to make themselves look better to their flock of true believers.

However, this is apparently not the case since they have followed through with their words and enabled DRM-free music from the music label which approved of the move.  This means that a song bought from the iTMS can be played on any music player, making the iPod just one amongst several competitors in the digital music players market instead of a required piece of a proprietary iTMS solution.

Apple must realize that they make a quality product with the iPod and that people are willing to pay a premium for that product even without anticompetitive lock-in. Time will tell, but they may even sell more as they market a more worthwhile product on iTMS.  Regardless, kudos to Apple and I was wrong.

So the reason I really like the GPLv2 is exactly that it allows everybody to be selfish and not having to really believe in any other politics. We can all be selfish and do things that make sense for ourselves, and it really boils down to a very simple equation: “I will get more effort out of other people working on it too, than I have to give back.”

And yes, you can be a free-loader, and not do anything at all, but on the other hand, if you do that you don’t really “cost” anything to any of the people who truly help in development, and you also won’t actually get your specific needs looked at. So to get the most out of the whole process, you really do end up having to help with the process yourself.

That’s a kind of beauty, to me. People are encouraged to chip in and help, not because of some political agenda, or because they try to be “good people,” but simply because it helps themselves more than not chipping in and helping would. That’s what I would call “positive feedback!” — Linus Torvalds

I think “positive feedback” is a really lame term for the awesome effect he described. Instead I would describe this effect as “systemic self-enforcing behavioral incentives providing a socially net positive outcome”. It’s a rare effect, but totally awesome when harnessed — you don’t need a complicated bureaucracy or reliance on assuming people or organizations will play nice.

I’d like to see politicians and other organizational leaders to target this effect broadly across society as an alternative to traditional approaches. If by design the self-interested actions of various members can lead to co-operation and mutual benefit without need for heavy-handed central management or irrational hope for goodwill… that would be a huge win.

I have to admit… this effect is a large reason why I love free software.

You think you’ve got problems?   Bah!  I’ve got a huge problem, at least an order of magnitude bigger than any other problem which has ever existed since the beginning of time.  Move over, African AIDS orphans, I’ll show you something to worry about!
I have a laptop at home, and it’s dying.  The LCD hinge is totally shot, so I have to prop it up with velcro in order to be able to see anything.  The sound doesn’t play at all because of motherboard damage, and the wireless PCMCIA card I use for networking is cracked (but still works most of the time).

Time for a new laptop then eh?  Except, I have a spiffy nice laptop from work.  It’s got piles of RAM, nice shiny wide screen and it generally works great (except for right now when it’s in repair).  I generally use this one at home as my primary laptop because, well, it functions better.

So I don’t really need a new laptop because I can use my work one.  The only case I’d need one would be if I get laid off — which I totally don’t expect but still that’s the only circumstance I’d really need a new laptop.  And if I would get laid off, that means that I can’t be spending money on a laptop because I don’t have a job and will need to conserve money for essentials while job hunting.
So realistically, there are no scenarios in which I should buy a new laptop, even though I need one.  Grumble.

Those “tag clouds” used by every “Web 2.0″ website are frigging annoying. Is a ranked list too logical and straightforward for people to use for 2.0 usage?

tag cloud annoying hatred stupid lame urge to kill

You know you’ve been looking at databases too much when you look at the word “valid” and wonder: what the heck is a Val ID?

They asked for it, so I gave them a piece of my mind.

Part of my job is to answer questions that the executives have which are difficult to determine, so I set up a little website which has a dashboard of various different queries and graphs I created. Of course, this leads to more requests and sometimes this falls outside the bounds of what I can easily do. For example, I couldn’t determine how many people were using a particular tool on our website because I didn’t have access to the the logs.

After pestering our IT department for several months, I finally got them to create a new database account for me so I could parse the statistics from our websites for reporting purposes. It’s a proprietary windows app which uses a MS-SQL database for storage, so I hooked it all up and started looking around at the tables.

It all looked pretty straightforward… for each website there was a set of tables named logical things like sumVisits and sumPaths, etc. And I could even find the results from custom reports I had already designed, making it very easy for me to gather the data I required. The table looks like this:

----------------------------
| DateVal | Visits | Views |
----------------------------
| 2454020 |   1304 |  1632 |
| 2454021 |   1124 |  2553 |
| 2454022 |    502 |   964 |
| 2454023 |    707 |  1388 |
| 2454024 |   1164 |  1332 |
----------------------------

Pretty simple, right? Now all I have left is to figure out what the hell this DateVal references. Normally these things reference another table so I check to see what it is a foreign key of. If you don’t speak database, that’s jargon for “lookup value referenced in another table”. Except in this case, it didn’t exist. And after poking around in every single table I determined that no, it simply wasn’t referencing anything else.

So what the hell is this DateVal anyhow? Just scanning the table visually shows that they are incrementing by one per day, so it’s a date counter of some sort. So what was 2454020 days ago, and why do I care about it? I read the documentation but it was not helpful in the slightest.

Since I work in MySQL quite a bit, I check there first to figure out what the original reference date is: “SELECT date_sub(current_date, interval 2454020 day)”. Except MySQL refuses to return a result for that, its date_sub routine isn’t built to handle such large numbers. Fine, I’ll try it in python. “print datetime.datetime.now() - datetime.timedelta(2454020)” Damnit, that overflows too.

This is getting ridiculous… this stupid application is issuing dates which I can’t seem to process, and can’t even figure out what the hell it’s doing. As a last ditch effort to try to figure out what the hell is going on, I consult the oracle of our times, google. Searching for one of the DateVal values with the word “date” finally told me what I was looking at: a Julian Date Count.

“The Julian Day Count is a uniform count of days from a remote epoch in the past (-4712 January 1, 12 hours Greenwich Mean Time (Julian proleptic Calendar) = 4713 BCE January 1, 12 hours GMT (Julian proleptic Calendar) = 4714 BCE November 24, 12 hours GMT (Gregorian proleptic Calendar)). ” — ref

That just happens to be about 2.5 million days ago, which this stupid application helpfully uses to tell you what day the results happened on. It’s extremely useful for a website analytics program, in case an archaeologist happens to find a 6000 year old webserver which uses Apache Common Log Format logs, they won’t have a problem at all.

As a footnote, I should also point out that when I finally implemented that feature it was in the language PHP. PHP is well known for having way too many function names, and it just so happens that they have a built in feature to serve the extremely common purpose of converting Julian Date Counts into standard timestamps.

print jdtounix(2454020);
?>

You’ve got to be kidding me.

I’ve been using a Linux desktop at work for 8 months, and few people have commented on it at all.  Two days ago I installed Beryl, and since then I’ve had a half dozen people mention how they are impressed with the whiz-bang effects.  I turned most of them off though, only enabling the cube rotation, expose-wannabe, and alt-tab previews.

Best comment so far… “is that Vista?”

Woot is well known for their cleverly sarcastic product descriptions and rock bottom gadget prices.  But the description of today’s woot still managed to shock me:

We know we don’t want them. But you people are weird, so maybe you might.

But really, if we had any good ideas for what to do with these things, we wouldn’t be selling them ten at a time.

With that sales pitch, they managed to sell out in a few hours.  Incredible!

I just spent the last hour debugging a script error, the cause turned out to be this little snippet written by yours truly:
if ($foobar = 1) {
skip();
}

Hey, why does everything skip?  ARGHHHHHH!

This is a very good summary of the practical reasons I enjoy using Linux as my primary desktop environment.

Why I cannot for the life of me get this blog’s rss feed, a stock version of the Wordpress RSS feed, to work with Google Reader.

If anyone out there has a clue, please cluebyfour me plsthx.

A couple of months ago I was looking at the various online rss readers and didn’t find any that were acceptable.  But lately I heard good things about the new google reader and so I checked it out again.  And hot diggity is it ever nice… it’s a good replacement for the offline readers I’ve been trying to use at home and at work.

Google really is going to eat the entire desktop, aren’t they?

Brother 2070n

Oh that was easy, you just punch in the email address right there instead of a phone number. Um, that was easy.  Nevermind.

My new printer arrived, a Brother 2070n that I described earlier. I plugged it into the wall, and plugged it into my modem. Then I set up my computer to print to that IP address, and presto I was done. The time from when I opened the amazon.com box to when it was fully working to the point where I could print out a test page from my laptop wirelessly was about 5 minutes. I don’t even think that the crappy Canon inkjet I replaced would have even finished printing the first page in 5 minutes, plus there’s all the fiddling with USB cables and crap too.

The time from when I hit print to when I get a page printed at 600 dpi resolution is less than 10 seconds. Brother even ships packages for Debian Linux *that work* — you download, double click, and it’s installed all in under 30 seconds. No crappy proprietary software, just the driver and it integrates perfectly with the built in printing systems for Ubuntu. The future is now!
This printer cost me $109. Why the heck doesn’t everyone have one of these?

I got myself up and running on Linux again, so I don’t have to suffer through the tyranny of trying to use Windows at home or to try to convince my wife to spend more money than we have on a laptop. To be honest, the installation was a piece of cake, everything was taken care of default — even the traditionally difficult pieces like internal wireless networking and the little special buttons like volume controls and even the special calculator button worked without any intervention at all.

Then I rebooted, and instead of the happy hp logo post screen I get a rapidly blinking cursor for like 10 seconds. Then it finally gets to the post screen but sits there for about 20 seconds or so. Um, okay… never seen that before. Then I get to the dual boot prompt (grub) that lets me select between Linux and Windows. Since I’m most interested to make sure that my work stuff is still alright I hit the down arrow a couple of times to select that option.

Except.

Er.

Oops?

What?

Okay, that’s totally frigging uncool. It doesn’t accept any keyboard input at all and boots right back into Linux. This does not make me happy, though the keyboard and everything else is working just fine once it all boots up in the lovely Ubuntu Linux Gnome environment. I try to reboot again, trying to select the F9 or F10 options at boot this time to get into the BIOS options, and throw in some of the other traditional BIOS keys like ESC and F8 and F2, but nothing works.

So now I’m a bit worried. Before I installed this I cleared it with my TOTALLY AWESOME BOSS WHO RULES AND I’M NOT JUST SAYING THAT BECAUSE HE READS THIS BLOG SOMETIMES by casually mentioning “hey, do you think IT would care if I installed Linux on this computer?” over lunch. I didn’t however ask “hey do you think IT would care if I rendered this machine useless for my primary work task because I am a zealot freak idiot who cannot use windows at home?” which seems at this point to be the relevant question.
Thankfully, after a bit of googling I managed to get it All Worked Out. Turns out that for a couple of hp/compaq models when you shutdown Linux you have to explicitly tell it “modprobe -r psmouse” before shutting down. I tested this completely unlikely solution but sure enough it solved the problem, when I executed that and rebooted I could use the keyboard at the OS selection menu fine and I could get back into my work stuff just fine. Whew.

I then added a simple init script to run that modprobe -r command on reboot and shutdown, so now everything is happy and works just fine. And I’m happier than a pig in, er, mud, now that I can use my favourite apps and have stuff work and be less annoying than everything in stupid Windows. And once my internet starts working again, which it seems to most be doing lately (knock on wood) then I’ll be able to do stuff from home again that I miss doing.

#!/usr/bin/python
print “\a”

After a frustrating and unsatisfactorary experience with VMWare, I have concluded that my plan to use that to run linux on top of windows will not work. Given that I really can’t justify a >$1K laptop purchase right now, my options are few.

With all the hype about OSX users using Parallels Virtualization lately, I thought I’d see if something similar exists for the Windows world. Much to my surprise it turns out that yes indeed something does exist, and it’s actually Parallels itself. So I gave it a spin and I must say I do know what all the hype is about. This thing flies — compared to the slowpokey and annoying VMWare my experience has been quite pleasant.

But still not great. Two minor yet glaring flaws would prevent me from using this to replace a proper installation. For one, it doesn’t support xv video which means that watching movies looks ugly and is very slow and goes out of sync. But worse than that, the Windows version doesn’t have the ability to support widescreen laptops like mine so the screen is all stretched and ugly. Oh well. Better, but not good enough.

When you hit “select all” in a label view, you now have the option of deleting every single message that exists under that label.  For someone like myself with >20K messages in various mailing lists that I want to delete, it’s sure a lot nicer than deleting 100 at a time.

Now only if they’d let you open new links in a tab instead of opening a new window every time.  grumble.

omgwtflol.jpg

I realize I’m probably the last one to point this out but apparently this is what Microsoft’s “iPod killer” will be.

They really have absolutely no idea why the iPod was and is popular, do they? Microsoft has jumped the shark.

Then this means that you have reached my new blog at the new location at http://worsethanhitler.org. It also means that you are browsing on my spiffy new server, which is also awesome. And now it’s time to sleep.

Please let me know if you find anything amiss with your browsing experience, as I’ve had only limited time to get this all working thanks to busy work and crappy home internet service.

As an update to the previous entry, my internets seem stable again.  And I only had to leave work 30 mins early thanks to Qwest’s awesome policy of having the tech call you as he’s leaving for your place so you don’t have to wait home all day for the dude to show up.  To test to see whether or not it was still broken I opened up ten tabs of the local transit system bus schedule and reloaded them rapid-fire.  I must have loaded over a hundred times in a minute, which means a thousand pageviews a second from my IP hitting the same bus schedule page over and over again.  I’ve probably got some poor technician there scared of a DDoS or something, but — I’m back, bay-be!

Haven’t been around much today, the DSL has been up and down like a yo-yo all day.  Good thing I pay twice what I did in Canada for this extremely crappy quality of service.  Oh yes, if I pay double what I’m paying now to switch to Speakeasy, maybe then I’d be able to stay on the net for a whole day in a row?  If this crap keeps up I may have to forgo the (often theoretical) fast upload speeds and go back to cable.

Frigging Qwest.

You may have noticed a disturbing lack of posts yesterday.  The cause is that my new server is finally set up so I’m configuring and moving sites over to it one at a time, which means that I have slightly less time these days to tell you about the joys of Kansas City and the wonders of the Time Cube.  But don’t worry, I’ll still try to cover the basics and then be back in true form in a while.

In case you are completely crazy, I have provided a convenient service for you!  You, Joe Blogreader, can aways be just a few short keystrokes away from figuring out the local date in the Time Cube calendar.

All you need to do is fire up your favourite xmlrpc client and direct it to https://threeducks.net/cgi-bin/time.cgi and use the method get_time().  It has an optional method “mode” in case you don’t like the default mode “cube”.

Example python client:

import xmlrpclib
server = xmlrpclib.ServerProxy(”https://threeducks.net/cgi-bin/time.cgi”)
server.get_time()

That’s it, and unlike all those educated stupid people around you, you’ll know the correct date.

Now that I can afford it again, I’ve signed up with with a dedicated webhosting service instead of the more limited Virtual Private Server I’m on now.  So I’m going from being underpowered to massively overpowered, woo!  Very exciting, hopefully I have enough foo that there will be little or no downtime during the transition.

After a very very long period of hype, last week Novell finally launched a public beta of their poorly named SuSE Linux Enterprise Desktop 10 (SLED10 for short still isn’t much better) to the world.  I must say that I bought into the hype and downloaded it straight away.  Just a few days old, SLED10 is already pretty famous for being the slickest and best integrated desktops around, getting some great news all around the internets.  SLED10 is being positioned as the Vista killer for the corporate desktop, and I’m going to have to think that once they sort some of the kinks out they may just have a chance to pick up some marketshare with this.

But how does it compare with the current premiere Linux desktop out there, Ubuntu?  Depending on the user in question, each of them has strengths and weaknesses.  SLED’s biggest strength is that it’s very very slick and well put together.  They reimagined application launching in Gnome Linux and did a good job of it, better than the Windows start menu and OSX’s dockbar in my view.   Another good feature is that it has some really neato 3d effects that unlike OSX and Vista don’t break the bank — to get the same thing in Ubuntu you’d need to be a configration whiz.

However, for my own personal experience I was somewhat less than thrilled with it.  As a long time apt user I was pretty saddened to see how little there was for application installability in the SuSE linux world — I pretty much had to go and download specific packages from the internets and install them manually.  It felt barbaric, something suited for those Windows and OSX folks who have to put their trust in the whims of the package publishers.  And there were all too many packages that I’m used to having just an apt-get away that I had to hunt for in SLED10.
One thing Novell did right was bundling the free and legal mp3 codec, java, Real, flash — but as far as the “other” codecs are concerned you really have few good options.   Whereas on Ubuntu there are a plethora of solutions like EasyUbuntu that takes care of all these messy details for you with just a few point and clicks.  Another thing that bears mention is that Ubuntu’s performance seems to be significantly better than SLED10, at least in this beta phase.
I also found it annoying that to install SLED10 I needed to download 5 entire CDs, which seems like a real waste to me.  This forced me to download a LOT of software that I would never use, and indeed it installed a lot of software that I would never use either.  For a corporate environment this would probably not be that big of a deal but for me it a pain in the butt.

One area that SLED really shines in is with their configuration tool YaST2.   Indeed, Ubuntu is much simpler to install with their new liveCD installer, but if anything doesn’t go as planned in Ubuntu you’re pretty much hosed unless (again) you are a configuration wiz.  By comparison, YaST2 is more cumbersome but extremely powerful and probably provides a better balance for people who want to use their computer in ways that Ubuntu hasn’t been prepared to handle.

Little things: I like that SLED10 makes heavy use of the awesome Tomboy app, I like that they have the right-click terminal on by default, I like that they copied Ubuntu’s default Nautilus setup, I like that the start button opens the computer menu, I like the default theme, I like the way that they copied and improved expose, I hate that Epiphany is not to be found anywhere, and I like that beagle is everywhere and installed by default.

In conclusion, most of the things that I dislike about it don’t really matter to the corporate users this product is aimed at — but regardless as it becomes more widely used I bet they’ll be resolved anyhow.  SLED10 is going to be a big player in the Linux scene and I wish them the best, but for now I’m sticking with what I’ve got.

I had thought about getting a new some server, a little mac mini or something — just something that would quietly sit there and run a little home webserver and act as the print/fileserver for the house with the various music files etc all stored there.  Except that fluffy is now hesitating on getting rid of his mac mini which gave me some time to rethink the situation.

What I’m thinking now is to use my broken laptop as the home server.  It’s certainly more than powerful enough — moreso than a mac mini would be that’s for sure.  And because I’ve got my work laptop now there really is little need for having two laptops around all the time.   Right now I’ve been using my work laptop for work stuff and trying to use my home laptop for home stuff — which is very difficult because of how difficult it is to prop the screen up correctly because the LCD hinge is badly broken.

The only drawback to this idea is that my work laptop runs windows, and as you probably know by now I really hate windows with a certain passion.  I’m not stupid enough to try to install a linux distribution overtop of my work drive, but something else may work ok.  What I’m thinking is that I can run Linux under VMWare at fullscreen when I’m home, pretty much ignoring that there is another OS sitting underneath.

This is what I’m doing now, just to see how irritating this would actually be.  So far it’s not too bad really.  It’s a little bit slower than I’d like, but everything works like it should so really I shouldn’t complain.

I usually talk about MySQL in hateful terms, so I’ll make an exception for that today.

Let’s say you want do find a distinct field in a group of data, except most of the other fields are non distinct. For example, say you are looking at a product shipping table and just want to know the information for the last product that shipped in a month.

Product | Address | Price | Shipment_ID | Customer_ID
1 | 123 Main St | $2 | 1020201 | 1001
2 | 312 Main St | $2 | 1020202 | 1002
2 | 666 Main St | $1 | 1020203 | 1003
1 | 881 Main St | $2 | 1020204 | 1004
1 | 42 Main St | $3 | 1020205 | 1005

In this data set, what you want is just two records, one for product 1 and the other for product 2. Except you don’t want just those two records, you want the full row for each of those items.

To do this in SQL requires a bit of a annoying workaround. If you tried to do something simple like:

SELECT * FROM Product_Table GROUP BY Product

That would obviously not work becase you need to aggregate each of the fields you are going to include, which is annoying for non-numberic fields, not to mention that it makes the rows non-unique. So you have to do funky things with HAVING.  Except, I just found out by accident that the command given above Just Works in MySQL, and gives the behaviour I actually wanted.  You just need to order it the way you want, and you can get distinct rows in complete violation of proper SQL syntax.  Nifty!

Of course, my supervisor suggested that I not use this anyhow, as undocumented hack “features” might go away in the future… and he’s right.  But still, cool.

I know fluffy in particular will chide me for this, but when I got my RAZR via Cingular I failed to check to see if they crippled the bluetooth on it first.  And of course, those horrible [censored] at Cingular indeed blocked obex.  In case you’re not a mobile nutter, OBEX is the way you transfer files back and forth between your phone and computer so that you can download/upload pictures, applications, etc.  The nice people at Motorola who made my RAZR were nice enough to include this feature, the [censored] people at Cingular however stripped my phone of this feature.

Bah.  I’m sure it was buried in the fine print somewhere, but I should have known better.  But now I’m just bitter.

I have been known to bash Microsoft products from time to time.

*cough*

But I have to admit that one product in particular they have executed amazingly well:  Remote Desktop.  I connected my network via wireless in the plaza conference room using vpn, and opened a RDP connection with the server I work on.  Later, I closed my laptop and carried it up to our internal meeting room and connected my to our internal network (and disconnected from the vpn), and to my surprise my rdp connection was still live and Just Worked.

Later still I hibernated my laptop, went home, and reconnected to the VPN.  To my utter surprise, when I clicked on the still-open remote desktop window it was still working just as if I had never moved from the place I opened it earlier in the day — now two complete networks ago.

THAT is how technology ought to work.  I was just sort of surprised to see that in a Microsoft product.

MySQL 5.0 seems completely unable to perform subselects with any hint of performance.  It really sucks because that is the way that I think of solving many data problems.  MySQL 5.1 apparently does better with this, but I don’t really care.  grumble grumble.

If you don’t know what that means, don’t fret: it’s about sandwiches.  With tasty, tasty cheese on top.

Next Page »