Archive for May, 2008

May 30 2008

Middle-Class Piracy in the Software Industry, take 2

Published by Nerdmaster under Opinions, Piracy, Random Shit

To recap, I’ve written lately about middle-class piracy and how it affects the software industry. My friend, the pirate, a really nice guy who’s kind of lazy, is a prime example. He could buy stuff but often doesn’t because DRM and badly-done copy protections make it more convenient for him to just be a thief.

Last time I was in the middle of the software industry’s situation. As promised, here’s the present situation as I (and my friend, the pirate) see it:

Present-day customer fuckery

Today’s copy protections are just as shitty as those I described last time. I personally won’t buy anything that has copy protection, because of the way they do things - just look at the problems surrounding Starforce. Other issues with copy protections are playability on newer systems. I own Lord of the Realms 2, but I cannot play it without a crack. Same with Need For Speed: High Stakes. Same with countless others. The hardware they were written for is nothing like today’s hardware, so they just freak out on me. Makes it easier to just pirate the software that I legally own at this point.

Worse still are the idiot developers like Iron Lore Entertainment who abuse the hell out of copy protection and then bitch when it bites them in the ass:

One guy went so far as to say he’d bought the retail game and it was having the exact same crashes, so it must be the game itself. This was one of the most vocal detractors, and we got into it a little bit. He swore up and down that he’d done everything above-board, installed it on a clean machine, updated everything, still getting the same crashes. It was our fault, we were stupid, our programmers didn’t know how to make games - some other guy asked “do they code with their feet?”. About a week later, he realized that he’d forgotten to re-install his BIOS update after he wiped the machine. He fixed that, all his crashes went away. At least he was man enough to admit it.

Wow, it’s a customer’s fault that your shitty protection caused crashing without explanation because of a lack of BIOS updating? (Also, how does wiping a machine cause a need to reinstall a BIOS update?)

Iron Lore made their copy protection break in many ways to try and stop piracy. End result:

  • Legitimate users with a system that isn’t happy with copy protection crashed for no obvious reason, and Iron Lore apparently treated them like shit when they (very appropriately) complained.
  • Pirates ignored this game. Sorry, but it wasn’t big enough to get hit with a ton of piracy - most piracy was due to curiosity, not people saying to themselves, “MAN I GOTS TA HAVE THIS SHIZ-NIT!” I know a lot of pirates, at least in an online capacity (yes, as I said, I have no real friends), and none of them were interested in yet another D2 clone.

And now for something completely the same

The sad truth is that Iron Lore isn’t unusual. Their methods for copy protection have been done in many ways since software was first being protected. They used well-known methodologies based on the belief that security can only be obtained by assuming any little anomaly is the customer trying to steal from you. Bury your copy protections deep in the code. Make calls to check validity in every place you can. Don’t let the user know it’s a copy-protection-related crash.

So Iron Lore and other software developers actually suffer. They are stupid enough to pay for software protection systems that aren’t 100% stable. They are gullible enough to think it’ll stop piracy. They are arrogant enough to believe the customer is to blame for their problems in a game that was never interesting to begin with. That’s right! If your game doesn’t suck, you won’t go under, regardless of piracy… read on.

The good news?

Yes, there is good news in the software industry. It is Stardock. Steam is a very close second, only losing points due to the default requirement of an internet connection. But both companies avoid copy protection in a traditional sense. Stardock in particular has always been strongly against copy protection, a trait that my friend, the pirate, has valued greatly — not because he can easily steal, but because he sees a lot of value in buying their games. He never has to worry about a bad copy protection. He gets software very fast after purchase. They update the hell out of their games with new features, not just bug fixes. They update regularly, making piracy annoying - new update comes out, wait for it to be posted on some warez site, download it, find out it’s actually the German version, rinse and repeat. Or just buy the games online for and instant download, and get all that stuff with no hassles. Just perfect for those middle-class pirates.

And Stardock’s sales? Damned good. Galactic Civilizations 2 has been better than budget by a pretty good amount (I believe Brad said sales for GC2 and the Dark Avatar expansion fully funded the Twilight expansion so they didn’t have to worry about Twilight’s budget at all). Sins of a Solar Empire, published by Stardock, sold over 200,000 units in its first month. With no copy protection. Piracy has some impact, but clearly it is not the sole force in success of a game. Stardock knows this and says, “meh” to copy protection.

End result:

  • Legitimate users get a great experience, “instant” downloads (depending on connection speed, mind you), optional CD shipped (at least, Stardock does this with a lot of their stuff - not sure about Steam), and NO worries about yet another badly implemented copy protection system.
  • Pirates have it good, too, no doubt about it. But for some reason, they haven’t totally destroyed Stardock. Makes me wonder if maybe the anti-piracy vocalists are exaggerating just a little tiny bit…?

For people who don’t get it about copy protection being the debbil

It is. Copy protection was invented by Satan in an effort to get people to pirate shit:

  • Copy protection is not cheap. To get copy protection on a game is to increase the cost to the consumer by a not-insignificant amount!
  • No software is bug-free without an unlimited budget (such as building real-time military software, where money doesn’t matter when it comes to precision and reliability). Copy protection is no different.

Put those two together - you increase costs to your consumer and decrease stability. DO THE MATH, SIRS. Stardock gets it - it’s just not worth the hassle. Piracy will happen with all but the best copy protections, and the “best” are often the least stable. Let the pirates be assholes, you can’t stop that. So long as your legitimate customers see a lot of value in the purchase, they will make the purchase. GC2 and Sins are both excellent examples of this. Both have very good sales figures, and no copy protection. None.

My friend, the pirate, has bought maybe 15-20 games over the last 5 years. 4 of them are from Stardock. Another 7 or so were bought off of Steam. One was store-bought (impulse-buy) and still has not been opened. (”I will play it soon. I just don’t want to deal with the DVDs….”)

Stay tuned!

Next time I’ll discuss the movie and TV aspects of piracy, including the very exciting topics of Netflix and hulu.com.

4 responses so far

May 29 2008

Nerdbucket takes a dive…

Published by Nerdmaster under Random Shit, Site News

I apologize for the downtime today. Apparently this new plugin I got for wordpress, bookmarkify, did a lot more than I expected. I read some idiotic rant about how some dude went from no traffic to 2,000 hits in one day after installing a similar plugin. What an absurd little man, I thought to myself (ironic, really, as I’m only 5′6″ (that’s about 1.68 meters)).

For those who don’t know (and don’t want to follow the link), bookmarkify is what causes those little buttons to show up below my posts, allowing anybody to easily submit an article to any of the various social bookmarking sites: digg, reddit, dzone, etc.

In a 14-hour span today (skipping, of course, the four-hour downtime), I got over 1,600 unique visitors. Over 8,500 page views. (For the record, a typical day is around 50 uniques and 100-200 page views.)

I of course used bookmarkify to submit a couple links to a couple sites, but it was other people submitting other pages (and then further people voting) that really made this work. So, anonymous submitters of my crappy content, I thank you!

I’ve made some changes that will hopefully mitigate this problem, but I suspect I’ll need to find myself a caching system of some sort in the near future.

The next middle-class piracy article is still scheduled for Friday — I just wanted to explain what happened today.

No responses yet

May 26 2008

Middle-Class Piracy in the Software Industry

Published by Nerdmaster under Opinions, Piracy, Random Shit

Recently I discussed my own take on middle-class piracy. To recap, I’m talking about pirates who can easily turn into legitimate customers if the goods they steal are made more convenient to buy than to download illegally. They aren’t poor, so they can afford it - they just prefer whatever’s easiest. And everything I discuss here is from my friend’s perspective. My friend is a pirate. He’s really a good guy, but a pirate.

The software industry generally has some of the best and some of the worst anti-piracy measures available. It stands to reason, because software has been plagued by piracy pretty much since it began - anything that’s representing digitally can be copied with no loss, unlike things like cassette tapes or VHS movies. So the industry has been scrambling since I was a kid (waaaaaay back in the 80s) to stop piracy.

I only know what my friend (the pirate) can remember, so I will not cover every piracy-prevention method here. Mainly the ones that tended to be common on games.

Disk errors

Initially there were things like intentionally putting errors on floppy disks so a direct copy wouldn’t work, but of course the pirates got smart and came up with ways to copy the errors as well as the data. End result:

  • Legitimate users with flaky drives could lose out on a product they paid for.
  • Pirates didn’t have this problem.

Decoder-ring

Then there were the manual-based protections, or decoder-ring/wheel protections. These were designed to make the user look something up in a manual or move a decoder-ring or decoder-wheel to find a word. Presumably the pirates didn’t want to copy an entire manual. Of course pirates can reverse-engineer source code to force the game to skip the protection, or hack the random number generator so that the same word is always chosen. In extreme cases, they just hit the protection dozens of times and write down a matrix of the most common cases. End result:

  • Legitimate users who lose their manual are screwed. Even when they don’t, they have to dig it out every time they want to play the game.
  • Pirates every once in a while can’t answer the question, and sometimes have a cracked game that’s broken because the crack was applied incorrectly. Overall, they usually had a better experience than the legit users.

Dongles

Dongles were a travesty, and are still used today…. The thing about these items is the user must have this hardware “key” plugged into their computer in order to use the product. This adds a point of failure for legitimate users - lose software CD, you’re screwed. Lose dongle, you’re screwed. The greatest thing about these is they’re almost always easy to crack. My friend, the pirate, says he went through a brief tutorial on some Sentinel thing and found that even though he was never better than an intermediate cracker, that particular hardware key was a breeze to get past. End result:

  • Legitimate users suffer greatly. Dongles are usually used only for high-end items, making the double failure points that much more concerning. Couple that with the annoyance of having to find a port (often on the back of one’s computer back when these things were really popular (parallel port)), and you have a big ass-raping of your customers.
  • Pirates love this shit. Usually easy to crack, often high-end software. Sometimes so easy to crack big pirate rings can manufacture and sell illegal dongles, possibly taking revenue away from the idiots who sought the dongle protection in the first place. Think about it - if the company didn’t waste money on the dongle protection, maybe their prices could be more reasonable.

Size of media

CDs were initially only protected by being big. When CD burners were totally infeasible ($1000 and more) and hard drives were small (say 500 MB), it was impossible to pirate CDs. This was the golden age of anti-piracy measures. Users knew they needed the CD in the drive because there really weren’t any other options given the size of data - we put up with it because we understood why we had to. Pirates just got pissy and bitched a lot. Which wasn’t really out of the ordinary anyway.

Even when CD burners became semi-feasible, the media was still unreliable and expensive. My friend, the pirate, recalls such a time:

I bought a burner for about $250, 2x write [that's about an hour to burn a CD if you did a simulation, and back then he did that every time because media sucked so much], figured it would pay for itself after what, 5 games right [at $50 a game]? No such luck actually. It was $10 a cd to burn on, and at least 3 in ten was bad, so I think it was an overall loss even after ten games, heheh. And nobody wanted to go in on the game and the media and wait around for it all just to get a copy so like you just had to rely on borrowing shit.

End Result:

  • Annoying for legit users, but totally understandable necessity. When your game is 600MB and the average user has less than that much hard drive space, you don’t have the option of being consumer-friendly.
  • Annoying for pirates, but they knew they’d have the last laugh. Technology always gets better, so it was only a matter of time before they could get their stuff free again.

Serial codes / instant activation

Then we have instant activation products. Technically this stuff is older than CD media. Games for BBSes were my friend, the pirate’s first experience. He wrote key generators for many door games. He’s very proud of stealing from small companies apparently.

So you download it for evaluation, and if you pay for it (to remove the annoying nag screen for instance), you just enter a serial number, unlocking it instantly. Nice idea, and actually makes it more likely to keep all your customers happy. Some companies do this wrong, making it too easy to crack or too many “anti-crack” checks that cost them some users, but overall it’s a pretty decent system. End result:

  • Legitimate users have to worry a bit about losing their activation codes, but a good company will store purchase info or have account data so you can reactivate at any time in the future (Alcohol-soft and Stardock both do a great job of that).
  • Pirates are also happy, because the download contains the full product, so they just have to crack a serial and get a free piece of software without any obviously illegal network activity.

The beginnings of evil

Serial numbers and product activation codes could be copied, and CDs were eventually burnable. Internet connections could be used to check validity but nobody would put up with an internet check on every use of a product until recently (and if you look at steam’s forums you’ll see a good number of people still aren’t).

So the next logical step (for the paranoid idiots who (a) thought they could stop piracy, and (b) were so paranoid they thought it was costly enough to invest in trying to stop) was hard-core CD protection. This stuff was nasty early on. I personally remember the problems I had with Diablo 2 on an old CDROM drive. My friend, the pirate, says many games had similar issues. He often grabbed the crack for games he bought because of these problems.

Some companies that don’t suck, such as Firaxis, had so many problems with copy protections that they actually released their own fully legal cracks.

End result:

  • Consumers are screwed time and again by poorly-implement copy protections. Just like it’s a guarantee that all software will have bugs, all copy protections (being software) will also have bugs. This means some number of users will be FUCKED. When companies deliberately make the situation worse, they screw the consumer and themselves with a very splintery wooden sex toy of some kind.
  • Pirates get the shit cracked. Sometimes it isn’t perfect, but it’s usually no worse than risking a legitimate copy of a badly-protected game.

Stay tuned… again…

Sorry, looks like this is way longer than intended. Next time, I’ll go into more details about the software industry’s piracy practices today.

11 responses so far

May 21 2008

Middle-Class Piracy: an Overview

Published by Nerdmaster under Opinions, Piracy, Random Shit

I’m always interested in the various industries and how they handle piracy concerns (as well as how they BS the U.S. to prove that domestic piracy is more than a minor problem). And seeing as… uh… a friend of mine is a filthy, disgusting pirate, I figure I’ll tell their side of the story.

This will be the first article series for Filler, and hopefully not the last as I consider my writing skills and incredible grasp of human stupidity both to be very important to share with the world.

What is middle-class piracy?

Simply put, it’s a concept I didn’t really make up, but I haven’t seen a good name for it. Piracy takes many forms:

  • Kids who pirate things they can’t buy for themselves. Think of napster and the young teenagers there whose piracy (though not right) didn’t affect the industry, because they weren’t able to buy the music anyway.
  • People in poverty who feel they deserve entertainment regardless of their financial situation. Their plight is one I can sympathize with, having struggled financially most of my life. This doesn’t make it right, but their thefts would never have converted into sales.
  • People pirating things they would never buy anyway. Again, this doesn’t make it right to pirate, but it is a different situation than piracy that actually results in lost revenue. This is usually people who are curious about something (say a really bad movie) but if they couldn’t get it free, they wouldn’t bother to pay for the product.
  • People who are pissed off at some industry or another - they often like what they pirate, and would be legitimate customers if they were unable to get their stuff freely. This would include people who stopped supporting Metallica after the napster ordeal - they would have paid if they had to, but they did what they could to avoid it because they were angry.
  • In software, people who want to try before they buy. These users often pirate a lot of stuff because they feel the industry has burned them too many times, but if they find something the actually like, they buy it. Their piracy sometimes results in lost sales (say a game that’s a lot of fun but short-lived), but sometimes results in gains that may not have happened (”Yeah, like being unexpectedly surprised at how fun Postal 2 really was,” so says my friend, the pirate).
  • People who are just plain lazy. These people would buy the stuff they like, but prefer piracy because it’s instant - no stores, no lines, no CDs, etc. When a legal alternative is a better option, they choose it because they just want whatever is the least hassle. These are the people who like Netflix movies on demand, hulu.com, Steam, and Stardock Central (soon to be Impulse).
  • People who are just plain assholes. These people would also buy the stuff they liked if they had no other choice, but will go out of their way to pirate because they feel they’re owed something for nothing. These guys suck. Even my friend, the pirate, says they’re assholes.

Middle-class pirates can be in any group above except the first two, but are more common found in the “lazy” group. They don’t necessarily feel like piracy is the right thing to do, and they may not even rationalize the piracy - they may flat out tell you what they’re doing is wrong or that they do feel “kinda” bad about it. They just pirate because they hate dealing with the shit that goes along with buying legitimately (DRM on movies and music, broken copy protections on their software, CDs and DVDs, etc). When a legal alternative presents similar conveniences as piracy, they’ll often choose the legal avenue, because they like to support quality products (even if they are sick of the fact that most of their money is never seen by “the little guy”).

Why middle-class piracy?

I address these pirates for two reasons:

  • First, I know many of them, at least on the internet (yeah, I know, I don’t have real friends).
  • Second, they’re the easiest group in the world to stop, because they’re lazy first, pirates second.

By definition, middle-class pirates aren’t poor, so buying isn’t a non-option for these people. They just have to see value in making a purchase. Which, sadly, is more and more rare in the digital age.

Piracy costs companies millions and billions and trillions of … nothing?

How piracy is reported as a loss I will never fully understand.

Different reports place losses in the billions for various industries, yet box office takes are still record-breaking when the movie isn’t trite Hollywood crap. Bands may not be making a killing, but the labels are clearly doing very well. Software sales for the big games (those the most easily pirated, by the way) are insane.

The claim that piracy is destroying any of these industries just has no real evidence to back it. I’ve seen quoted figures, legitimate-to-pirate ratios, graphs showing the decline over time as piracy has “destroyed” one industry or another. None of this data is real.

The data cannot be real!

My friend, the pirate, has pirated many things in his life, but rarely does he pirate something he likes without ending up buying it. He says that software in particular is this way. He downloads games and plays them a few days. If he likes them, he pays (easier to keep the game up to date that way, or get support, or mods, or whatever - again, laziness on his part if you ask me). If not, they’re deleted from his computer. He admits that he sometimes keeps something around that he “sorta” likes, but if he lost it and found that he couldn’t pirate it again, he wouldn’t pay for it, either.

He’s also downloaded movies or music in situations where he once bought it and broke the CD/DVD, or rented the movie and never had the time to watch it. Is that morally right? Tough issue I won’t get into (it’s absolutely illegal, but “right” vs. “wrong” is not so black and white), but it’s not a loss of revenue given that he already paid for the product. In the case of a CD, it’s legal at the moment to make a backup, and DVDs are iffy territory, but in many countries even those are legal for personal backups. So had he made a backup or not broken the product, he’d never have needed to replace it - i.e., he still seemingly should own the right to view or listen to said product. The rented movie issue is trickier, but I tend to agree that he paid for the right to view the movie and if he’s really and truly viewing it once and deleting it, he’s not costing anybody anything.

The point? Measuring piracy is impossible. There is no way to know what the pirate is doing with the product. If he downloads it to replace something he already paid for, I just can’t call that a loss. If he downloads it and ends up buying it later, that’s definitely not a loss. If he downloads something on a whim that he doesn’t care about and never would have bought in the first place, that’s not a loss. Yes, he should pay for it if he likes it, but it’s technically not lost revenue.

Stay tuned!

Next time, I’ll talk about the current situation in the software industry, which I believe has some of the best (and worst) practices with regards to stopping piracy without alienating legitimate users. Pay special attention to Stardock’s approach, as they have about the only real proof of what piracy costs a smaller game company.

5 responses so far

May 16 2008

XML is still evil

Published by Nerdmaster under Opinions, Programming

I love people. Everybody who knows me is aware of how much I respect and admire the average person. Software folks are no different. Most of them are very intelligent and never say stupid things regarding topics about which they have almost no experience.

So while I wasn’t terribly surprised to see that XML is still crap, I was utterly shocked to see that people still defend it.

PEOPLE, LISTEN THE HELL UP. It’s very simple. XML was built to mark up documents, not to store data. Here are some choice comments from really smart people:

XML became the default because of its flexibility in data formatting. And, because it has become so ubiquitous, almost all programming languages have built in ways of easily parsing XML. In fact, I do almost all of my web output using XML and then use XSL style sheets to transform it into HTML. I remember some blogger, can’t remember his name, blathering on about MVC and how you should make your output “skinable”. Well, if you produce XML output, your webpages are extremely skinable.

The problem here is that you’ve apparently killed most of your brain cells by listening to idiots tell you what to do all your life. XML is flexible for sure, but the problem is how it’s abused. XML is used for everything. SOAP is the worst example. XML is not for data storage. It is not okay to store data that isn’t meant to be human-readable in a TEXT-ONLY FORMAT. Have you ever seen how much smaller binary files are than text files?

Skinnable websites = marked-up documents. That’s what XML was built for. I don’t even like it for that very much, but it does work fairly well in that capacity. Marked-up data is a completely different situation.

I’m afraid I couldn’t disagree more. No, XML isn’t the easiest to read (by humans) of all the infinite number of alternatives out there. No, XML isn’t the most efficient in terms of space. And yes, perhaps it has been forced into places it was never intended to go. But you miss what I think is the most important point: it is rapidly becoming a standard way of representing information. I would argue the value of having a standard far outweighs the inefficiencies in most cases.

I would argue that you’ve been brainwashed by people who are only slightly stupider than yourself. XML as a standard isn’t a good thing, but even here your “logic” is nothing but a straw man argument. The author of the post didn’t say standards were bad, and didn’t even say XML didn’t make sense anywhere. He said XML wasn’t the best choice for every place it’s being used, which you have already admitted!

You’re an embarrassment! It’s not good to have bad standards! Look at SOAP! It is good to always look for a better choice. Where the fuck would you be without people ten times are intelligent as yourself always looking for better options? You’d be a fucking caveman. We evolve, we look for better options, we find better ways to get a job done! Standards are fine, but without constant analysis and reconsideration of those standards, our industry would never go anywhere. How can you claim to be an IT person and yet not understand this?


Following a link from that site to an old JSON vs. XML debate, I found even more idiocies. But one in particular just shouts out about the morons who’ve managed to become part of my industry:

As Dr Phil asks — What were they thinking?

No doubt I can write a routine to parse this, but look at how deep they went to re-invent, XML itself wasn’t good enough for them, for some reason (I’d love to hear the reason). Who did this travesty? Let’s find a tree and string them up. Now.

This is bad. This guy is a total moron. I mean, he didn’t even bother to investigate JSON before he said this most absurd of arguments. Not only is he saying, “Let’s not reinvent the wheel for any reason, ever” (which should be a blasphemy to all computer science disciples), but he’s saying JSON makes no sense for anything, ever. JSON may not be your cup of tea, but it’s faster than XML when used in Javascript (eval vs. parsing XML - sorry, but if you can’t figure that out, you’re just a dildo - only you probably get less sex) and for the most part, more human readable and writable.

Oh, but Dave Winer (Whiner?) gets even worse:

Dan, where are the benchmarks that say that on a processor capable of running Flash apps or playing Youtube videos that it can’t parse XML “cruft.” If you’re going to use an engineering argument, be prepared to back up t your assumptions with data. I’m pretty sure you can’t because I ran my own benchmarks on the end-user CPU of the late 90s and the overhead of parsing XML was negligable then, and now..? Geez Louise. How many gigahertz to people have these days??

XML parsing is a monumental task. This is clearly the ramblings of some dumbshit who’s never actually used SOAP, XML-RPC, or even plain old XML with XSLT on large data sets. Parsing tens of thousands of records (serialized from the Oracle DB because XML is so great) at my current job is a nightmare. XSLT transforms in some cases take 5 minutes or more, on blazing-fast hardware, using a C++ library (libxml and libxslt). In the late 90s, you’re going to try and tell me XML parsing had “negligable” (IT’S FUCKING SPELLED “negligible!”) overhead? What did you parse, “<hello />world” or something?

Fucking idiots. There’s a reason enterprises that were stupid enough to follow the XML trail are now buying XML-parsing hardware.


My comment is this - if you’re in the computer industry, don’t shoot your mouth off about things you’ve only thought about for 2 minutes while you jerked off to pictures of your dad. You sound like a moron when you do. Me, I’ve used XML in the real world. And a tiny bit of JSON, and a good deal of YAML (I even jerk off to YAML now and again). For marking up documents, XML is fine. For data that needs to be human-accessible, YAML and JSON are so incredibly superior, it’s a joke. Try them out in real situations before you make a total ass of yourself. Yes, I’m talking to you, Dave.

(Yes, I read his “ooh I dun learnt alot in that there diskusshins” follow-up. Ignorant bashing is ignorant bashing, regardless of your “oops” responses later, people)

No responses yet

May 14 2008

Why Ruby is so sexy-awesome, part XXXIV

I use Ruby whenever I can. Not specifically with Rails - Rails extends the language and adds some nifty things, but the beauty is all Ruby’s.

Today I was using Ruby (in a Rails app, as it happens), and I had this “API” that returns generic hash data. I want to be able to take data from any source (Oracle, flat text, web service) and return data that’s in a very simple and easy-to-use format, so I chose to just convert data to a hash on a per-source basis.

But how do I handle typos in hash keys? What if somebody asks for “person[:name]” when they’re supposed to ask for “person[:full_name]“? They just get blank data and wonder WTF happened…. I can’t live with this situation, because it’s just too easy to forget a key’s name, or make a simple typo. I could return default data from the hash, such as “YOU FUCKED UP WITH YOUR KEY, SIRS”, but that could find its way into production and then I’m out a job.

So after a tiny bit of digging, I discovered that a Hash can not only have a default value, but also call a default block when a nonexistent key is requested:

irb(main):001:0> a = Hash.new {|hash, key| raise "#{key} not found!"}
=> {}
irb(main):005:0> a[1] = :foo
=> :foo
irb(main):006:0> a[1]
=> :foo
irb(main):007:0> a[2]
RuntimeError: 2 not found!
irb(main):008:0> a.default = nil
=> nil
irb(main):009:0> a[2]
=> nil

Normally I’m good with non-strict default data, but in this case it’s great to know I can actually validate data in a way that makes it hard to miss typos.

It’s not as safe as C++ (edge cases are only caught at runtime), but it’s far better than Perl (and nicer to read or write than both, IMO).

No responses yet

May 13 2008

Laid off? The one thing you absolutely need to do if you’re rich or stupid

Published by Nerdmaster under Opinions, Random Shit

I like people who have no understanding of the average Joe, but preach to him anyway. They’re cute and their naivety is endearing in a certain way. I’m talking about you, Jason Kester.

Get laid off from your job, go take a six- to nine-month vacation. It’s the best time in the world to do so!

You have a pile of saving [sic] and a severance package.

Savings, maybe, though that’s not a given. Severance package, though? How many jobs even offer those anymore? Mine sure doesn’t (at least not below the Director level, which is where the majority of IT folks are), and I don’t work in a small place. Don’t preach to a group if you don’t even know anything about them.

I’m not going to bash the rationale behind this thought - I can really understand the suggestion for people who have the means to take this advice. What I just don’t get is Jason’s blanket advice that says basically nobody has an excuse of any kind not to do this:

But I don’t have any money saved…

You can’t possibly be serious. Are you saying that you’ve been working in IT for all these years and haven’t put away a lousy ten grand??? Shame on you. Get a book on life skills and open a bank account fer cryin’ out loud.

Wha…? Since when have all IT people been paid so well that $10k is (a) pocket change, and (b) something to throw away when times are hard? Hell, the most I’ve ever saved is $8k and that was to buy a house. And my salary isn’t even on the low end of the spectrum! Some people just live paycheck-to-paycheck by necessity, and condemning them for it is not only extremely snobby, but just proof you live in a bubble far from the real world. In San Fransisco, for instance, the average pay for a software engineer means barely scraping by or living an hour’s drive away. Sometimes both.

At both of my professional jobs, there have been software engineers paid low enough that two salaries are required if the people want to even own a shitty home, much less living nicely. Jason, you’re an ass.

But I’m married with a family and a house…

Ok, you win. You’re screwed, but that’s the life you chose for yourself so you’re going to have to live it. It’s worth noting, however, that most Europeans wouldn’t consider that a reason not to travel. Right this second, there is a German couple pushing a stroller down a remote beach in Thailand, and they’re not going home for another month. What’s your excuse again?

Wait, so we’re screwed if we chose to have a family? A house? What if we’re happy with this choice? Are we just too ignorant to see the error of our ways or something? I honestly don’t get what you are saying here. But again this speaks to ignorance on Jason’s part - he has no concept of giving up something you want to have something else you want (the house - I’m assuming if I say I’m happy to be married and have kids he’ll just say I’m lying to myself, but having a house is a tangible asset - even idiot snobs can understand that). He also has no concept of how expensive it is to take the whole family to Thailand for us IT people paid a “normal” salary. He also doesn’t understand that sometimes kids are in school or that the spouse of the laid-off IT person has their own job.

But the most amazing piece: he doesn’t understand that some of us who actually do have the severance, the extra $10k, and everything else may not want to take the time off. Maybe it took me years to save $10k, and I don’t want to blow it on a trip when I could increase that savings instead. Maybe I am hoping to get a million in the bank before I retire, and every year I work hard gets me 5% closer to that goal, whereas just disappearing drops me by 5% instead. Maybe I want to really enjoy my 40s or 50s instead of waste my disposable income on a one-time trip that will screw up other goals in my life.

Then again, maybe Jason is just a stuck-up, ignorant white guy who simply hasn’t got a clue.

9 responses so far

May 11 2008

Intuit’s Evil Empire: Quicken Deluxe 2005 Strikes Back

I have always used Quicken for the most minimalistic of checkbook balancing. For some reason, even though the newer versions have continued to get bigger and more bloated, I’ve continued to stick with them, and even paid for the pile of rat dung they call Quicken Deluxe 2005.

Hating Intuit was a dangerous choice, as it turns out. Starting in 2005 editions, Intuit apparently added in the ability to disable select features after a three year period. For those of us who rely on, say, importing transactions from our bank, we’re just screwed through and through. Raped, more like. Violently. With broomsticks, chains, whips, and random jolts of high-voltage electricity.

How can a company as big as Intuit actually get away with something like this? It’s pretty much blackmail - won’t their users get as disgusted as I did and look for other options?

Maybe it doesn’t even matter. Because I did that. I looked at the other options. I looked at Moneydance. I looked at Gnucash. I looked at a few others whose names I forgot about as fast as it took me to run their uninstall programs. I avoided MS Money because I’ve heard it’s just as bad as Quicken in terms of the BS they’ve added in over the years.

In the end, I wasted a couple hours just to buy Quicken 2008.

I’m amazed at how utterly shitty the competition is. I’m a software designer for a living, and I’ve even worked on accounting software at my last job, so I know how challenging it can be to design something as big as a knock-off of a really successful accounting package. And for the freeware options, I can hardly fault them for sucking - they’re free. Gnucash looks promising if you’re an accountant. Plus, it couldn’t deal with downloaded transactions even a tenth as nicely as Quicken. Moneydance, a commercial app, was written wholly in Java, making its UI anything but consistent with other Windows apps. Plus, it couldn’t deal with downloaded transactions even as well as Gnucash. Another app, another set of problems, plus they couldn’t fucking deal with downloaded transactions nicely.

I can’t figure it out. For all of Intuit’s crap, for all Quicken’s painful UI decisions, it’s still the best app for somebody who just wants to download transactions and keep a single checking account balanced. Weird.

One response so far

May 08 2008

Dotproject strikes again…

I’m sure I’ve bitched about open source plenty of times, but I have to rant once again. Dotproject is my project management application of choice. It does everything I want, and in particular allows for very awesome time estimation which was extremely useful for Bloodsport Colosseum. I was able to break down every task into subtasks and really get a feel for how much effort was left by looking at the accuracy of past estimates.

But it’s programmed by idiots. I mean, these guys are actually pretty stupid compared to the average rock. I’m sorry, it’s a great tool designed by somebody who had a head for project management, but programmed by idiots.

After not using dotproject for a while (after the death of bloodsport colosseum, I had little to track), I got a contract job that really needs careful design. So I jumped back into a semi-recent version of this awesome/disgusting app, and found that it uses overlib for popup help! (No, that isn’t the problem. Overlib is actually really nice for web-based hover-help) But the dotproject devs by default chose to make the popups STICKY. That is, when you hover over a link you think is just a link, a popup shows up that will not go away until you explicitly mouse over the “close” button.

This is revolting.

So I know overlib. I’m not phased a bit. I used it for Bloodsport Colosseum and it’s really a pretty straightforward JS library (a rarity these days). It’s open source, so it probably sucks monkey balls, but as a user of the tool, I liked it.

Overlib has a central area to put all your app’s default preferences for things like font, colors, opacity, and, of course, sticky. To override the defaults, you can actually specify “commands” in your call to the overlib methods, which is handy for special cases.

The dotproject dimwits actually ignored the defaults altogether, and put the exact same preferences into their HTML in seven different places. I’m not sure what can happen to a programmer where they learn the number one failing of software. The first thing you learn in your first CS class is about code reuse. Functions, code centralization, that sort of shit. HOW can somebody be so stupid as to ignore these amazingly simple principles when the library already provides a really easy and central place for this stuff?

Then I remembered my first dotproject disaster - an old version had some broken SQL for calculating the % left on a task, and to fix it I had to change this SQL in 3 or 4 places, and rewrite a couple rather large sections of code.

No, that memory didn’t comfort me, but at least I was able to say, “Oh yeah, they’re just dotproject developers. They didn’t know better.”

No responses yet

May 03 2008

Twilight of the Arnor officially released!

Published by Nerdmaster under Games, Opinions

All right, I’m a couple days late, but one of my all-time favorite games, Galactic Civilizations 2, has just released what I believe to be the most impressive expansion pack ever, Twilight of the Arnor.

I’ve played with the beta a bit, but now that it’s officially released (and the weekend is here), I am hoping to dig in a whole lot more, play some metaverse games, and maybe even tinker with the editors.

Why would you care about this release? Read on:


GalCiv2 is a 4X game (think of Civilizations, Age of Wonders, Heroes of Might and Magic, etc). These kinds of games have traditionally been somewhat complex, turn-based strategy games. Think of a game like the board game Risk, but with a whole lot more details, rules, military options, diplomacy, randomly-generated maps (or at least a large collection of hand-crafted maps), etc.

The biggest issue with games like these is there are so many options at every point of the games that a computer cannot effectively plan out a smart strategy. Most games give the computer cheats - free resources, “good luck” bonuses when attacking or defending territory, free military units, the ability to see the player’s private data, and so on. This is frustrating to a player, because instead of playing against a human-like opponent, she’s playing against what amounts to a really stupid cheater. The cheater isn’t playing by the rules, yet still really sucks at planning a long-term strategy.

Stardock, at least starting with GalCiv 2, doesn’t believe the AI should need to cheat. (In GalCiv1, the AI got a free peek at the galaxy, giving it a tremendous advantage when choosing where to colonize and such) Additionally, the AI is built with the philosophy that it should play like a human, so at various difficulty levels, the strategies actually vary. When you play against a “cakewalk” set of AI opponents, they will have fewer strategic options available than when playing against “normal”, which itself has fewer options than playing against “tough”. This amounts to a much more immersive single-player game.

The other thing that tends to plague most 4X games is repetition. Even GalCiv1, and to a lesser degree, GalCiv2, suffered from this problem. The thing is, all playable situations eventually amount to the same general approaches. In Civilization III, you have a couple civ-specific military units, and some bonus depending on your empire’s specialties, but overall very little is different from any one game to the next: you research the same technology, most military units are the same, cities build the same improvements, etc. The heroes series is a tiny bit better, as each faction has a semi-unique city and units, but even so, the game is so simple that the differentiation doesn’t change the repetitive play.

I love both of those games, but I cannot deny their inherent problem. And as I stated above, even GalCiv2 (even with the Dark Avatar expansion) suffered from this issue. Dark Avatar made each race a bit more unique with the Super Abilities, but overall strategies, technologies, and planetary improvements were all shared.

Twilight of the Arnor throws this all away. What GalCiv2 did for the belief that all 4X AI has to suck, Twilight of the Arnor does for the belief that repetitive play is just a part of the 4X genre. Every single race (there are twelve, mind you) has its own technology tree, planetary improvements, and to a lesser degree, ship modules. The tech trees have many common elements, of course, and some races are very similar to each other. The Korath, for instance, are an offshoot of the Drengin, so their tech trees are naturally very similar - but there are still a few differences, and the already-present racial attributes and super abilities make even those two situations a bit different. When looking at the Humans and the Thalan, on the other hand, the trees and overall strategies are so different that it’s like playing a totally separate game.

Here are some of my favorite examples:

  • The Korx are mercenaries, and as such have a Mercenary Academy, available from the Mercenaries tech, and “unique” to them and the Drath (both races have some slant on war manipulation). When the academy is built, they get a bonus to their income equal to 2% of the tax revenues of all warring civilizations.
    • In Dark Avatar, the Korx are described as mercenaries and war profiteers, but you only feel that when role-playing. In Twilight, you see a direct, in-game benefit to manipulating people into war.
  • The Arceans have a lot of trouble with space travel. Their ships default to moving at a rate of 2 parsec per turn (normal is 3 - this is a HUGE deal early game!), and they cannot develop the technology to use advanced ship drives, severely limiting their speed late game. They can trade for the technology (which I dislike, but that’s a separate topic), but if it’s entirely up to them, they’ll never learn it. To compensate, they have a few technologies that give them a “free” bonus to ship speed (research tech, instant bonus to all ships), and the ability to build navigation centers on their planets which give all ships built on that planet another “free” bonus.
    • This alone is a huge strategy change - you either trade for the techs and play a “normal” game, or you just live with slower ships. One interesting aspect of this is that you will have a lot more space for weapons, which is great given the existing Arcean Super Warrior ability.

Assuming this wasn’t enough, Twilight sports a ton of other features I can’t even try to explain. Amazing modder tools are finally included, “static” tournament scenarios, the new Ascension victory condition, terror stars, …

If you’ve never heard of GalCiv2, but you like 4X games, there is no better time to try it out.

No responses yet

Next »