I own an iPad and a Kindle 2, and I love both devices because they are extremely good at what they are doing.
Today, Amazon announced three new Kindles, including an Android Tablet, the Kindle Fire.
Let me first say something about another new Kindle, the Kindle Touch: I don’t like it. At all. It seems like the worst of all worlds. It has a multi-touch screen, but no apps or anything, it’s the standard Kindle OS. On the other hand, it does not seem to have physical back/forward buttons. These are a killer feature for me on the eInk because I like to hold the Kindle, rest my thumb on/near the Next Button and just press it. That works so well on the Kindle 2 and 3 and I don’t see the point for not having it. The only real point I see is that selecting a bunch of text is easier (maybe for snippets?), but I think I’d rather go with the Keyboard Kindle 3. Both are equally priced anyway, at $189 for the 3G and $139 for the WiFi Model. I think this is like the iPod Nano: A gimmick
The other new Model is the low-end Kindle priced at $109, a full $30 less than the previous entry-level WiFi Kindle. I think it’s a fantastic product: It’s small and lightweight. It does not have a keyboard, but I don’t take notes anyway on my Kindle, it’s purely a reader that requires three buttons: Select book, Next Page, Prev Page. I think this one will be a massive success, if you can live without 3G.
The existing Kindle Keyboard and Kindle DX are just like they were before: The DX is still overpriced after the last Kindle 3 price cut ages ago, but great if your eyes aren’t that good anymore. The Kindle Keyboard is still a solid device to take notes or make annotations.
Now, the big new announcement is the Kindle Fire, a $200 Android Tablet featuring a Dual Core CPU, multi-touch 7” screen, full color display. It’s essentially a BlackBerry Playbook which doesn’t mean a bad thing – the hardware on that was solid, only the OS sucked. But really, the hardware is for us geeks, the end user is more interested in what this device offers, and this can be summarized with “Books, Netflix, Angry Birds, a Web Browser”.
As I said before, I love my iPad. I use it in the morning to browse the web or when lying on the couch to draw some stuff. However, the iPad is big and heavy, so I don’t usually carry it with me. The Kindle Fire addresses both problems: It’s smaller (7” vs. 10”) and lighter (413 vs. 680 grams).
Amazon is quick to say it’s not an iPad Killer, and they might be right. It’s far more likely that it will kill everything else, because why buy a $400+ Android Tablet that’s not as good as the iPad anyway? The $200 price tag is a killer for pretty much every other 7” Android Tablet, and possibly for a lot of 10” ones as well. I don’t think it will affect the iPad too much, because it not only has a strong established customer base, but also stand out features like 3G, more capacity and a 10” display.
I think it’s a safe bet to assume the price is heavily subsidized – $200 simply sounds to good to be true. Part of the money comes from Kindle books – no 30% commission fee to Apple like they would have on the iPad (if they wouldn’t have created Cloud Reader), and Amazon was once a book seller anyway. Another source of potential income is more interesting: Their Silk Web Browser.
The description reads interesting: Instead of making a ton of HTTP Requests (for JS, CSS, Images), your request will be handled through Amazon (acting as a proxy server), and they send one big chunk of data. Also, they can improve the reading experience by parsing the page and adding page indexes. It’s a bit like Opera Mini on steroids.
Now, this is a great thing to have on a 3G connection. However, the Fire does not have 3G (not surprising, I doubt carriers would be willing to make that commitment at that price). It has WiFi. So why do that? Just to add Page Indexes? This could be done on the device itself, it has a Dual Core Processor after all.
It doesn’t take much imagination and only a little bit of Paranoia to realize what this Feature does: By proxying all traffic through Amazon, they can analyze it and use it for advertising purposes. Essentially what Google is doing with GMail and AdWords.
I could whine about possible privacy concerns, but I think it’s an acceptable tradeoff if you are aware of it. You get a really nice, dirt cheap tablet and in exchange let Amazon monitor your Internet traffic. For people with Google and Facebook accounts, it’s not much difference anyway. I just hope that the amount of compatibility problems will be small, but since it’s an Android Tablet I am 100% sure you can just download a Firefox build for it at some point.
As usual, the Kindles come in a price reduced versions with Advertising on the Screensaver. That makes the new entry level Kindle a $79 device, which is a killer price for it. In fact, I ordered that just today with overnight shipping because it seems like a decent travel device, lighter and smaller than my Kindle 2 at the expense of 3G. I also preordered the Kindle Fire Tablet – if it turns out to be a dud, it’s still a dirt cheap, $200 Linux Computer with multi-touch screen, for which someone will make alternative distributions.
But really, I think we’re going to see a massive price war and the death of a lot of “Me Too” $400+ Android Tablets. And it fires the rumors of Amazon buying Netflix. And it should scare the hell out of Google. In any case, good times lay ahead.
It's hard to imagine a world without OR/Ms anymore. The old days of making a query, getting a reader, looping through it, getting every column into an object...
I'm a Linq2Sql user. I like it's relatively easy setup and good flexibility, and it has a really good query generator. However, I'm running into some issues with Unit Testing it, because you can't really emulate all the features that it has (EntityRefs with a composite Key or fields that are DbGenerated are a nightmare). Since it is a one-off technology for SQL Server, it doesn't work with any other database (not even SQL Compact 4, which sucks as it would be the perfect Unit Test drop in).
Some people are saying that OR/Ms are an anti-pattern, to which Ayende had an interesting reply. I don't fully agree with any of them. I think that OR/M is solving two different problems, one that it shouldn't solve.
The first problem is getting data from and to the database - the second problem is the mapping of the result to objects. The second problem is a good one, the first one is not a problem and thus doesn't require a solution.
Somehow, people seem to frown SQL, as if it were some evil or outdated concept. You know what? SQL is the language of your database, so you better learn it. Oh sure, it's nice to chain a gazillion Where/Select/ToDictionary/GroupBy calls together and don't have to worry about coming up with the SQL yourself. It's not so nice that the chance to produce a SELECT N+1 is pretty high. When was the last time you looked at the SQL that your OR/M generates and optimized it?
Speaking of optimizations: When was the last time your DBA improved your OR/M Code? Most DBAs I know speak one language very well, and that's the SQL Dialect of their database. They know these hidden tricks and tweaks, they can tweak the query plan and come up with ways to speed up your queries, thus lowering the load and therefore the cost of the system. I don't know many DBAs who would look at a piece of C# code and suggest moving the select outside of the foreach loop in order to turn a SELECT N+1 into a single select. They know the difference between the different JOIN Types (I use LEFT JOIN 99.99% of the time - who knows if there are better ways?) and are able to suggest putting in a READ UNCOMMITTED into a query that is okay to retreive slightly stale data. When was the last time you tweaked the TABLE LOCK setting on your OR/M query?
Granted, most developers don't seem to have access to DBA people and thus have to wear a DBA hat quite often. But you know what? If you have to know about DB stuff anyway, you can as well learn SQL. Even though you may not get everything highly optimized, in the moment a DBA looks at it and optimizes stuff you just have to change your query and call it a day. Maybe you two decide to create a Stored Procedure instead, in which case your SELECT becomes an EXEC - big deal, not.
Yes, I am aware that some queries can get pretty harsh. I have a query with 14 subselects (mainly because it has to do paging on the database) and I am glad that I can write it in Linq2Sql, creating an IQueryable and passing it through a dozen methods that apply more Where clauses based on some ridiculously huge filter class a user passes in. Not having to generate that through StringBuilders or other stuff is a great thing.
But you know what? That query is the one anomaly in a sea of standard CRUD queries. I can write those CRUD queries in my sleep, blindfolded. And I can look at them and immediately understand what this thing is doing. I can read up the T-SQL manual, run it in SQL Management Studio while the SQL profiler is running, look at the Execution plan, tweak the query, put it on Stack Overflow to get some input - I am talking to the DB in a language it understands and have no limitations in how I tweak it.
Really, all I want is the Mapping. I want to write a (parameterized) SQL query, but I don't want to do the ExecuteReader/foreach loop crap, because that's stupid work. I want to be able to insert a Parent Row and it's child rows in one go, without having to use client-side generated GUIDs for the primary key so that I can add it to the child rows. I love the EntitySet/EntityRef stuff in Linq2Sql, and that's what I want. Create an Object and it's children, put it in the database and not worry about capturing the @@IDENTITY and populating it on the children. I don't want an OR/M, I want an Object Mapper.
Luckily, there seems to be a small (but truly existing) movement into it, Dapper and Massive being two of the better known ones. Massive uses the new dynamic functionality in .net 4, a technology that could revolutionize OR/Ms once they start embracing it (rather than trying to stick to their Java roots or stay compatible with .net 2.0). I don't fully like how I have to create "empty" classes and it seems that it doesn't do "real" SQL but rather a DSL that looks like SQL. That would kinda suck.
Dapper is currently used as the OR/M for Stack Overflow, It's very bare bones (doesn't manage your connection, no UPDATE helpers), has some not-so-nice syntax quirks (Having to pass IsAnsi = true when querying a non-unicode - but that's an edge case I'd argue) and although I have not yet had a chance to use it, if Jeff Atwood is willing to use it on the thing that puts food on his table and rock band songs onto his Xbox, I'd assume it's stable.
Granted, one can argue that you're not paying your developers to write code that can be written faster in an OR/M, a claim I'd like to dispute when looking at the total lifetime of an application including maintenance, but if you want a catchy, quotable sentence: Traditional OR/M is like WebForms. It's rapid at first, does stuff just well, may even have a fancy GUI to drag/drop your tables. But just like WebForms limits you tweaking the genrated markup or core functionality ("I need my Data Grid to render the headers in a <thead> so that the jQuery TableSorter plugin works") and sometimes requires some hacks ("I know, I just put some javascript that wraps the generated table header rows into a <thead>"), an OR/M will put up some walls that you can't climb as well.
I think it's time for an OR/M that is to other OR/Ms what ASP.net MVC is to ASP.net WebForms: A Framework that allows and requires us to get deep into the guts, but does not limit the tweaking we can do, while still handling a lot of the stupid work, and I think it's great to see projects move into that direction. Just as MVC and WebForms both sit on top of an ASP.net core stack, ADO.net serves as a rock solid foundation for multiple philosophies of OR/M systems that can happily co-exist and serve both the people able and willing to write SQL and the people who'd rather spend money on an OR/M, profiling tools, and maintenance costs.
September 28th, 2011 in
Development |
6 Comments
I just received my copy of Using the HTML5 Filesystem API by Eric Bidelman and wanted to use it as an example of how I would like Tech Books to be:

This book is specialized and concise. As you might see from the image, it comes it an well under 100 Pages and covers exactly one topic.
I have only very limited time compared to the amount of technology that’s out there. The Web is evolving so fast, it’s hard to keep up with new developments. Information is scattered in blog posts, and it’s often hard to just find a cohesive front-to-back tutorial. Also, even though I own both a Kindle and an iPad, I prefer my books to be on dead trees.
Tech Books are often massive, 500 to 1000 page compendiums, and there are cases when it’s necessary. If you read the .net Specification, the C# Language Specification or David Flanagan’s excellent JavaScript: The Definitive Guide, it’s hard to get these under 500 pages, and that’s okay because they are compendiums about an entire language.
However, way too often I see books that have a lot of text but very little information. One of my Pet Peeves is the Introduction and Installation section. Many Web Books start with a 50 page history of the Internet, from CERN to HTML5, how the internet has revolutionized the world and what great things lie in front of us. Sorry, if I really want to know about the history of the Internet, I hit up Wikipedia, just like the book author likely did when researching. The only interesting piece of History is the motivation behind a technology, answered by asking two questions: What Problem did the creator of a technology run into, and how is this technology attempting to solve it?
Same for the installation Section. I don’t need a 20 Page installation that’s outdated anyway when the book comes out, Give us the official Project Website and maybe a few gotchas, but we can take it from there.
Being able to read a book in an evening is a huge win because it already plants knowledge into our brain about what’s available. I might not have immediate need for a technology, but knowing what and how it does stuff means that the next time I run into a technical problem, I might think “Hey, I can use X to solve that!”.
The HTML5 Filesystem API book does just that. It has a small Intro and dives right into code examples. The API is simple, yet does introduce new objects into JavaScript. There is no example application per se (One could think that building an Address Book with uploadable Photos would be cool), presumably because it would take the focus away from the core. The code builds on top of each other though, from the creation of a file system to adding, deleting, uploading and remote getting files.
In fact, this book is good for another point: Tech Books are usually behind the applications they release. When a technology comes out, the early books are usually garbage, based on Beta/Prerelease versions with code examples that are slightly broken because RTM changed stuff. They don’t have many real world usage scenarios, often cover too much too shallow. This is even worse when the technology is an update (e.g., ASP.net MVC 3) and the early books are just previously released books (e.g., for ASP.net MVC 2) updated with some new features rather than redoing the entire book front to end with the new technology in mind.
The later books are usually too late – by the time they come out, the successor technology has already been announced, and people gained knowledge through blog posting, cursing at how bad the technology is documented.
Tech Books remind me a lot of Waterfall development, in that they simply take way too long to come to the market and don’t meet the needs of the customers. Writing a 500+ page tome simply takes time.
The agile version of that is what the above book demonstrates: The technology it’s discussing isn’t even out yet and may change, a fact that’s clearly stated in the book. However, because it’s only 80 or so pages, it’s quick to write and gives the reader enough knowledge about all aspects of the API, so that eventual changes should be fairly trivial to do (Eric also includes the link to the W3C Spec, so you can stay up to date). But even if they completely throw away and redo the API, it only wasted a small amount of my time – and my money. The book is $20 (cheaper on Amazon right now), so it’s not a massive investment at all, especially if I would calculate the time it would take me to scour through scattered blog postings as billable time.
Another great example is The Node Beginner Book. It’s cheap ($5), comes in at about 60 pages, is cohesive and available right now (compared to some books that are scheduled to come out in 4 months or more). CoffeeScript: Accelerated JavaScript Development is another excellent one. I heard that the Nuget folks are considering a book as well, and I would love to just get a book that covers how Nuget works internally, how the Server was written and how to interact with the Visual Studio plugin. Sure, I can look at the source code, but again, a concise and cohesive overview with samples and a reference part is all that’s really needed.
Some other books I would totally buy: Model Binding and Validation in ASP.net MVC 3/4, RESTFul WCF Applications, Ways to send data from the Server to a browser (From COMET and setInterval/JSONP crutches to Web Sockets and Server Side Events), Writing an ORM from Scratch.
I’ve been backing a Kickstarter project promising a unique stylus for the iPad: The Adonit Jot. Since I wanted to brush up my camera skills anyway, I decided to make a small video review.
Doing this I realized that a) iMovie is a really basic program (might look into iMovie Pro aka. FCP X) and b) I need to work on my accent.
To give away the conclusion: I really like it. Wish it had a pen clip though.
You can find their website at http://adonit.net/
August 25th, 2011 in
Entertainment,
Misc. | tags:
ipad |
No Comments
Okay, now that I had a chance to play around with Mac OS X Lion for a few days I also ran into some issues and thought I'd write up how to fix some of them.
Safari remembering the last open tab
I'm a web developer, and as such it's normal to have 10-15 tabs open in each of the 3 major browsers of each platform (Safari/Internet Explorer, Chrome and Firefox). I don't close these tabs, I just exit the application (Cmd+Q on a Mac) and expect to be greeted with a fresh and empty window when I restart the browser.
However, Safari remembers the last tabs depite me setting up as to open new windows with an empty page. Turns out that there is a system-wide settings that makes applications remember their last state. It's in System Preferences > General: "Restore windows when quitting and re-opening apps".

For me, this option is nonsense. If I want to retain the state of an App, I don't close it. I can easily put my Mac into Hibernate mode if I want to turn it off without shutting it down.
Edit: Thanks to Matt Isenhower for showing a way to disable it per app:
defaults write com.apple.Preview NSQuitAlwaysKeepsWindows -int 0
Disable Auto-correct
One feature I love in iOS is the autocorrect feature, since typing on a touchscreen keyboard is tedious and error prone. However, on a Desktop machine with a real keyboard it's infuriating as auto-correct tries to correct some words that simply aren't wrong. On a Desktop, I expect spell checking to draw squiggly lines, not to auto-correct.
In Safari (and possibly other apps), go to Edit > Spelling and Grammar and untick "Correct Spelling Automatically".

For some strange reason, that option was greyed out (and ticked) on my MacBook Pro. As a Plan B, disable it system wide in System Preferences > Language & Text > Text.

No article about auto-correct without a link to Damn you, Auto Correct!
Proper Color Scheme for the Terminal
Let's face it, the Mac OS X Terminal colors are ugly. As a developer, I spend a lot of time in the Terminal and use many apps/scripts that make use of ANSI Colors. Also, I use vim a lot. The default scheme:

Up until Lion, we needed a hack to change the font colors (SIMBL + TerminalColours). In Lion, Apple finally allows us to customize them. So grab the IR_Black theme for Lion for a really nice color scheme.

Bonus Tip: The theme is also available for TextMate.
Make Home, End and Del work in the terminal
I use a normal Keyboard on my Mac, specifically the Microsoft 4000. However, pressing HOME or END in the Terminal doesn't do anything, but I expect those keys to go to the beginning/end of a line.
In the Terminal preferences, open the Keyboard tab, select HOME and for the string to send, press CTRL+A. It should show up as \005. For END, press CTRL+E which shows up as \005.
For Del to work, press CTRL+ALT+D which shows up as \004.

July 24th, 2011 in
Apple |
4 Comments
So the long awaited and long debated Mac OS X 10.7 Lion came out today. Naturally, I immediately installed in on both machines. I own a Mid 2010 MacBook Pro (13", Core 2 Duo 2.4 GHz, 8 GB RAM) and a Mid 2010 Mac Pro (1 CPU, 2.8 GHz, 12 GB RAM). For the MacBook, I updated from Snow Leopard version, while I did do a fresh installation from DVD on my Mac Pro.
Installation took about 40 Minutes on my Mac Pro (from DVD) and about 70 Minutes on my MBP (from Hard Drive), not including the 3.5 GB Download from the App Store.
Scrolling in Lion
One of the hot topics was the fact that Apple reversed how scrolling works - moving the wheel down now moves the screen up. This is consistent with how iOS works and works well on a (Magic) Touchpad or a Magic Mouse, but is downright weird on a Wheel Mouse.
You can disable it in the system settings by unchecking the "Scroll direction: natural" box.

In the Mouse settings you will also find a huge improvement: The tracking speed was increased. With 2 monitors and 4096 pixels vertical resolution, I want fast tracking. Snow Leopard was still way too slow even on the maximum setting, while Lion finally remedies this.
Usability Improvements
I have the somewhat controversial opinion that Mac OS X has major usability issues. On one side, it's UNIX underneath so I get a terminal that gives me everything I really need. On the other side, it has a GUI that looks gorgeous and well designed, but has some horrible Usability issues.
Lion solves a few of them: For example, most windows can now be resized on any edge, not just the bottom right corner. Also, dialog boxes finally react to pressing ENTER (to press the highlighted/default button) and ESCAPE. I don't know if Snow Leopard already added that, but I definitely remember a time where you needed to enable accessibility to use keyboard commands on dialogs.
There are some not so great things as well: Finder hides your System hard drive by default and tries to coax you into only browsing the predefined folders like "Desktop". Luckily, this is only a (stupid) default and can be changed in the Finder Preferences to something sane again:

Sadly, maximizing windows is still broken. There is now a new Full Screen mode for most apps, but the green button on the title bar still resizes the window to some arbitrary size. Also, still no simple "MS Paint"-type program.
File Vault
Apple finally made the leap into the 21st century with File Vault offering full disk encryption. Previously, you could only encrypt your home directory and it was creating a container file on the disk (actually a whole bunch of them). I haven't had a look at how the new File Vault works under the hood though, but it's good to see that they are moving forward on this. HFS+ is still the default file system, any hopes to get a modern file system seem to be just dreams, especially since Apple backed out of adopting ZFS.

By the way, Time Machine still cannot backup onto network shares.
About this Mac
The About this Mac window got a nice little overhaul, now displaying the "colloquial" name ("Mid 2010") of the Mac and a nice graphical overview of Displays, Storage and RAM (in some hawkish looking tabs?). You can of course still click on "System Report" for the full, dry overview.




Terminal
Opening the Terminal on my MBP, I was greeted with an incompatibility notice. I'm using SIMBL and TerminalColours to get sane colors.

Well, turns out that the Lion terminal finally allows to change ANSI colors!

AirDrop
As I have two machines, I regularly want to exchange files between them. Simple home networking is something that no OS has gotten right yet, which means I usually use SpiderOak or a USB Drive to transfer data. In Lion, Apple got sharing between machines right!
If you have two machines on WiFi near each other, you can open AirDrop in Finder and just drag files to other machines. The machines do NOT need to be on the same network. In fact, you don't need any network configuration. As long as you have WiFi enabled, it just works through automatic configuration!
Some caveats: It only works on WiFi - my Mac Pro uses wired connection normally, so I have to enable WiFi. That also means no Gigabit speed. Also, the machines need to be near each other - even if they are on the same (wireless) network.
According to Golem.de, this works because Apple turns the machines into (secured) Access Points. This is ingenious, and it just works. Lion is the first operating system I've ever used where sharing files between PCs just works out of the box, with zero configuration.


HDAPM
I have changed the hard drive in my MBP to a 750 GB Western Digital Scorpio Blue. As owners of non-Apple drives may know, the default power savings settings are shortening the life time of the drive and causing annoying noises. The good news is that hdapm works flawlessly with Lion. Just make sure you get the 10.6.8+ compatible version posted on June 30, 2011 (or later).

Rosetta
Apple dropped Rosetta from Lion, which means: No more PowerPC Apps, period.

Signatures
Haven't tried it out, but open Preview, and go into Settings > Signatures. If this works, it's awesome.

Conclusion
Full Disk Encryption, changeable ANSI Colors, resize Windows on every edge, fast mouse tracking speed, AirDrop - For me, Lion is absolutely worth the upgrade. It's really polishing away some of the rough edges that Snow Leopard had. Not all of them of course, but they hit just the right pain points for me.
Some of the more controversial defaults can be changed back, and the fear that Lion would be upgrade-only (thus always requiring to install Snow Leopard first) turned out to be untrue. I cannot say anything about stability yet, and I've seen some app vendors warn about compatibility issues. I'm sure 10.7.1 will be out within a week or two, but the advice stands: Upgrade to Lion.
I couldn't measure any noticeable speed difference, even on the somewhat slow MBP. Everything is just as fast (or slow) as it was under Snow Leopard.
Mac OS X Server
Server is no longer a standalone product, it's an extension download from the App Store. Pricing is $50, which continues the trend Apple started with iMovie ProFinal Cut Pro X - I just hope the quality didn't suffer. I will install it onto my Mac Pro and blog about it.
July 21st, 2011 in
Apple |
8 Comments
I used to love Dropbox. I own multiple machines and dual boot them, so a convenient way to share files was a big win, and Dropbox delivered on it. They have a seamless Windows and Mac OS X client.
Recently, they had a few security issues – that sucks, but it seems to have been a genuine mistake rather than gross incompetence (like storing cleartext passwords like other did), so I gave them another chance.
But then they crossed the line that no company may ever cross: Taking ownership of your data. TwitPic tried to do that. Adobe tried to do that. And now Dropbox does as well, by adding this to their terms of use:
By submitting your stuff to the Services, you grant us (and those we work with to provide the Services) worldwide, non-exclusive, royalty-free, sublicenseable rights to use, copy, distribute, prepare derivative works (such as translations or format conversions) of, perform, or publicly display that stuff to the extent we think it necessary for the Service.
In all three cases, the TOU have been revised, or “clarified” as the vendors put it. But even though I do know about Hanlon's razor, I’m unwilling to believe that it’s always just a mistake or unclear language, but rather an attempt of free services that are in financial struggle because no one buys their premium services and they simply have to make money.
As I’m a free user, I contribute to these struggles because I cost them money without bringing any in, so I’ve just decided to do Dropbox a favor by logging in and clicking the “Delete my account” link at the bottom of the account settings.
As a User, always remember that in the moment you give your data to any website – be it a hosted blog, a social network, a sharing site, “the cloud” – you have lost a great deal of control over it and have to be vigilant about TOU changes and companies taking advantage of your data for monetary or other reasons.
Choose wisely, and remember that there is always an alternative company that didn’t try to pull a trick like that (yet).
July 3rd, 2011 in
Misc. | tags:
rant |
1 Comment
A couple of weeks ago, Duke Nukem Forever was finally released after perhaps the longest development period ever. But the reviews were brutal, ripping the game apart. In my opinion though, the reviews are too harsh. The game isn’t great, but not that horrible as some reviewers like to call it.
Now, there are a couple of assumptions. First, a lot of people expect that a game that is in development for 14 years at least should cure cancer, bring world peace and send men to the mars just so that it is okay and meets the expectations. Then, they like to compare it to the predecessor and to other games in the genre, which is fair.
On the development time: I don’t know how long DNF was really in development and how much material was really scrapped. I looked at the fantastic 2001 trailer and and the various leaked material after the 3D Realms shutdown, and there is clearly a lot of content that was created at some point and then scrapped. I really don’t know how long the current iteration was in development for. However, when you play the game you can see that there are a lot of great ideas that made it into the game. You can play Pinball, Air Hockey, Pool, Whack a Mole, you can interact with the vending machines, toilets, vibrators and water faucets. You can write on some whiteboards, autograph pictures, control an RC Car or race around in one after you have been miniaturized.
The amount of versatility and interaction was one of the cool features of Duke 3D and still somewhat sets it apart from many shooters that have a very static world.
The enemies are great, with the Octabrain really looking freaky, the Pig Cops actually looking fearsome, the Assault Captain reminding me of a flying mancubus and of course the Alien Queen with her large… assets. To defeat them, you have access to an arsenal of weapons that pack a good punch: The Shotgun has a very satisfying sound effect, the rail gun bring in a sniper rifle, the RPG is as cool as in Duke 3D and pretty much every other good shooter, and of course the Ripper and Devastator which are just the perfect tools to rip through hordes of enemies.
So Duke Nukem Forever has everything to be a fantastic shooter? Unfortunately, not quite. First off, it’s based on the Unreal 2.5 Engine, aka. “Look, we can make anything look like it’s chrome plated, even the rocks!”. It looks rather dated, when a pig cop latches on to you it drags you right down into the uncanny valley. Also, the animations are somewhat simplistic. The minigames are a nice touch, but not very well implemented – trying to pocket all the pool balls is a true test of patience because the ball physics are way unrealistic. Air Hockey is better, but suffers from a weird perspective. The world is very linear, to the point where invisible walls block you from making a perfectly sane and possible jump – this is a sharp contrast to Duke 3D’s many secret areas and clever tricks. There are some Jump and Run passages that shouldn’t be in any shooter (but then again, Half-Life did it as well) and some sequences are too long (like the RC car drive through the Lady Killer). The Video Poker machine was quite good though.
However, the single biggest and devastating blunder is the weapons system, because you can only carry two weapons at a time. Two. While all the good old school shooters allow you to carry about 10 weapons (regardless of weight), DNF decided to be console friendly and only support two weapons (plus a melee attack). Because the weapons have only a small maximum ammo, this can lead to frustrating situations. For example, I was in the hive with a shotgun (28 shots maximum) and a rocket launcher (5 rockets maximum), and I ran out of shotgun shells when I was facing 3 Octabrains. As they can fly, I couldn’t melee them. As they can throw back rockets, I couldn’t hit them with the RPG. So I had to die/restart from checkpoint to pick up the Ripper. I felt that this was really bad design, and with a full arsenal the game would have been a lot better.
A lot has been said about the seemingly offensive content of DNF. There’s nudity, crude one-liners, toilet humors and in-your-face obscenities all over the place. Criticizing Duke Nukem for being offensive is like criticizing Apple for making Designer Products or criticizing Louis Vuitton Handbags for being expensive. The Duke IS offensive, and if DNF weren’t then it wouldn’t be a Duke game. If that is not your cup of tea – fair enough, just ignore the game and play a different one, there’s plenty of fish in the sea. The valid criticism is that DNF doesn’t do too much to add to the formula. It’s mostly the same one liners, and some elements are drawn out too long or were removed (no option to tip strippers anymore).
As weird as it sound, but I think the one thing that DNF is missing is polish. Maybe another year would have radically improved the game. On the other hand, a year from now the graphics would look even more dated, so it’s the decision between cholera and the plague for the devs.
The game has a lot of rough edges, weird level design limitations, poorly implemented mini games, graphics that were cool in 2006 and worst of all a broken weapons system. Many great ideas, sometimes poorly executed. But for me, it was still a fun experience and overall a satisfying game. I’d give it a 5 out of 10 for being a straight forward, old school shooter with plenty of Duke, lots of explosions, great enemies and enough devastation to keep the action going.
On the other hand, if you are more into these awful almost-on-rails shooters that traded fun for broken scripted sequences then DNF is certainly not for you. If you believed that 14 years of development would create a shooter that is better than Half Life 2, Halo 2 and Gears of War combined, then this isn’t for you either.
The game is underwhelming and broken in parts, but I hope that there will be a fifth entry in the main Duke Nukem series.
June 26th, 2011 in
Entertainment |
1 Comment
There is a lot of discussion going on at the moment about Firefox' rapid release cycles, releasing Firefox 5 just a few weeks after Firefox 4. A lot of business customers are complaining about this, saying that the testing cycle of FF4 is still ongoing, and now it's EOL already. Others think that it should be Firefox 4.0.2 or 4.1 to appease both.
I say that Business IT finally needs to move into the 21st century and embrace this thing called "Internet". Why do you need a long testing cycle for a web browser? This is most likely a sign that your internal web applications are written for a specific browser, usually Internet Explorer 6. It means that your web applications contain countless hacks for that browser and because you didn't upgrade to Internet Explorer 7 and 8 when they came out in 2006 and 2009 respectively. It means that you have amassed considerable technical debt, and now you have to pay the piper.
I say: Sucks to be you. The Web is improving fast. When you wrote that ASP.net 1.1 Application that displays an Oracle Database in a data grid, you made a commitment to the web. You committed to abandon a stable platform like Windows (even with all the negative reactions to Vista, Microsoft is doing a lot to ensure backwards compatibility) and chose a platform that has been chaotic, anarchistic and unstable since the dawn of time, or at least since Netscape 2.
The year is 2011. You don't have to embrace HTML5, but you should make sure all your applications work in IE8, Firefox, Chrome and Safari/Mac without hacks, because then browser updates will be no problem. If you are still on Internet Explorer 6 or 7, upgrade to 8 (XP) or 9 (Modern Windows). If you are vendor-locked in to IE6 - I'm sorry, but you sucked. Your Purchasing Department really dropped the ball when they bet on IE6, because no sane company ties itself to a single product version of anything.
If you wrote an in-house web app or browser extension, then just upgrade it. And don't tell me anything about cost here - your business made the decision to go to the web, so if changes to the web environment come as a surprise, you didn't do your homework properly. Please, go back and write Windows Client apps again or do your job properly. If you want to be a web developer, then you need to do more than just drag/drop a DataGridView and connect it to a SqlDataSource. If you want to be an IT Person, learn how to work with the developers to make them change their apps.
Or, more likely: Continue to whine about how fast stuff changes, how vendors dare to improve their products, how they change the version number. Continue to embrace the waterfall model, get obsessed with version numbers, create test plans that take a year to execute, and stay out of touch with the real world. After all, business needs are more important than quality.
Just do me one favor then: Make sure that your crappy web apps can't be easily hacked. I'm getting tired with incompetent companies constantly losing my customer data to hackers. But then again, there are no penalties for losing customer data, so my plea will go unheard.
June 24th, 2011 in
Development | tags:
rant |
No Comments
I thought that Airlines, Airports and Travel companies have worked out how online searching and booking should work by now. After all, Services like Expedia or Travelocity or one of the many other services make it easy to search all the possible Prices quickly (although you may want to clear your cookies before searching). Travelocity even gives me the option to say that I’m flexible with dates and search for +/- 1 to 3 days.
However, my situation is a bit different. I live near Los Angeles. I come from a German city near Düsseldorf. That alone is not so special, however I refuse to fly with intermediate stops – I want a non-Stop flight. Since the train network is pretty good in the area, I can fly to a city in the area and just take the train. This should be easy, right? Show me all flights from LAX to the area near DUS, which can include cities as far away as Frankfurt/Main, Paris or Amsterdam.
No such luck though. I can pick flexible times, but not flexible destinations. Oh, no problem, a big and well connected airport like LAX surely has a website? Sure they do, and they also have an outbound schedule. So I just look up all the destinations served by the airlines and (because I do know geography) I just pick a city in the area. Sadly, their flight schedule is a form that expects me to pick a target city in order to view the schedules. That’s stupid!
Why can’t there be a big-a$@ list of ALL outbound flights from LAX? Why can’t I get a simple lists of all Airports that LAX serves? Even Wolfram Alpha couldn’t answer this seemingly simple question.
I ended up getting a lists of all big Airports and looked at train connections. To spoil the ending, Amsterdam and Frankfurt am Main seem to be good choices, with Frankfurt being more attractive because it has a better train connection.
But really, this stuff should be easier.