Thoughts on .net in 2012

One of the hot topics in 2011 was the rise of server-side JavaScript thanks to node.js, the future of Windows with WinRT, and a perceived exodus of high profile .net developers to Ruby on Rails or node.js, proclaiming that it's so much easier to get stuff up and running once you leave .net. Also, in the wake of BUILD conference, .net was already declared dead, which turned out to be a false alarm, it's only Silverlight that's dead (unless you are building a video player, because HTML5 Audio/Video sucks and will continue to suck).

Personally, I'm 100% convinced that .net is doing fine and will do fine for years to come. We just have to realize though where .net (and Java, for that matter) are used: Inside Enterprises. There is not a single day where I don't see someone pulling off some amazing stuff on Twitter, usually built in JavaScript, CoffeeScript or Ruby. Looking at people pulling off amazing stuff in .net is always a big undertaking though, because there are pretty much no big non-Microsoft .net projects that are "hip". I think FubuMVC, Caliburn.Micro and Bouncy Castle are the only three that I could mention off-hand. But then again, I see amazing stuff done in .net almost every day, except that no one else outside of my work environment will ever see it. Talking to other .net developers in other companies usually yields similar experiences - people are pulling off some seriously fantastic stuff, but it will never ever leave the company it was created in. The open source environment in .net has improved since I blogged about it 4 years ago, but it is still only a fraction of what node.js or ruby has. Just look at the list of most watched C# projects on GitHub or CodePlex and think how long ago some .net project really made headlines.

That doesn't mean it's a bad environment to work in, quite the opposite actually. If you look at popular libraries for node.js or ruby, you will often find that the BCL or Microsoft's .net Libraries already have something built-in, and it's usually rock solid and fast. You will find Microsoft supplying the big features that everyone uses or will use - LINQ, LINQ 2 Sql, Dynamics, TPL, Async/Await, ASP.net MVC are just a few I can think of. Combine the "No one ever got fired for choosing Microsoft" mentality in big enterprises with the fact that the vast majority of software development is done in enterprises, and you see why this attitude exists and why Microsoft has to deliver.

There is no denying that Microsoft had quite a few blunders, of course. WPF, EF and Workflow were downright garbage in .net 3.x, WCF is overly complex for simple scenarios and Velocity... let's just say that I've never heard anyone say anything good about it, and looking at it's API I doubt I'll have good things to say about it. Then, there are signs of the more than 10 year legacy that .net already has, together with the desire for backwards compatibility. System.Configuration is horrible because you cannot just create a Configuration object from a string or any other mechanism, that thing is hard wired to look at a file on your hard drive, which makes it really inflexible for modern, multi-tenant deployments. Have you tried parsing JSON in .net? How many different JSON Libraries/Deserializers do we have as part of the Framework? And how many did Silverlight add? And yet, people mostly prefer the Newtonsoft JSON.net. Have you worked with the ASP.net Provider Model, specifically Membership Providers? Only a mother could love the API of that thing. And speaking of ASP.net, have you ever tried catching an "Attachment too large" error? The error that gets thrown twice, once in IIS before it reaches your app and then in ASP.net itself without a clear way to associate it with the request?

I could go on and on and on about things that are seriously broken in .net, and I haven't even started about testability yet (there is a very good reason for products like TypeMock to exist). It is still overall a great experience, but it is frustrating that we can't do much about the shortcomings of it. To work around the stupid file handling and Configuration madness in ASP.net, we would need a whole different web server since we can't just patch IIS or the ASP.net core components thanks to their closed source nature. Of course, running Mono on nginx is a way to work around this, but enterprises won't approve of such a setup and if it breaks, your behind may be on the line.

I've often experimented with different setups, only to realize that I really like C#. I like its static nature which usually gives good, understandable compiler errors rather than cryptic runtime errors (face it, rails can be a pain to debug). I like that I can mix in dynamics for non-critical things like view models. I like that the Microsoft-provided libraries are mostly good. I like that we can buy support and that there are tons of resources about most topics, since everyone uses pretty much the same stack. I like that they keep backwards compatibility so sacred, even if it means that there is a lot of obsolete stuff in the API (like System.Collections.ArrayList - there is no reason whatsoever to use it. If you need a container for multiple types, fall back to List<object>.

On the other hand, it can be a really frustrating experience when you run against a wall that you can't climb because of its closed source nature and Microsofts reluctance to fix things (Take WPF in .net 3.5 as an example: Things were reported but not fixed. Then 4.0 comes out with Visual Studio, they run into the same problem (e.g., the scrolling popup menus) and HotFix it. That was the moment I've given up on WPF forever) until a major release, if ever. Sometimes it is a really tough sell to use other non-microsoft components like RabbitMQ instead of MSMQ (Search for MSMQ on MSDN and look on the big highlighted article - to me, that's proof that Microsoft doesn't care about their own message queue anymore), or NServiceBus, or a sane ORM instead of Entity Framework.

Most applications start out as simple CRUD applications, and it is usually a lot quicker to start them in node or rails. However, simple CRUD applications usually evolve into more sophisticated pieces, requiring more business logic and safeguards in different places, and here I must say that .net shines - in the long run, its strengths play out well.

However, I really think that we can do better in the web world, much better. Chad Myers had an interesting posting, and even though it was ripped to pieces by Rob Connery, it still holds a lot of truth. Web Applications are unnecessarily complex. I will write a follow up posting with some thoughts about this.

My conclusion would be that .net is overall doing perfectly well. It is used by tons of companies for very important apps, but it was never aimed to be a "hip" language. Microsoft is deeply rooted in the Enterprise, they are pretty much the exact opposite of Apple. That doesn't mean that they do a worse job at it, it just means you won't see as much about it since enterprises like to keep their "secrets" internal and err on the side of safety/secrecy. I have no doubt that there will be .net jobs for the next decade and beyond, while some other language will come and go.

CircularBuffer added to my .net Utils Library

I've just updated my .net Utilities Library with a Circular Buffer. Such a buffer (also called Ring buffer) has a given capacity, and when this capacity is reached new entries overwrite old ones. In other words, it is a buffer that holds the last {capacity} items.

The implementation is currently not optimized for speed, this is something I'll tackle soon. (Update: Done, CopyTo and Contains should be much faster) Implementing a circular buffer is relatively simple, but it makes my head spin with off-by-one errors that you encounter when you have to deal with an array that's split at an arbitrary point. It is definitely a nice exercise for a Code Kata though and may teach you a thing or two about Enumerators.

It is not possible to remove items (I don't need that functionality yet for my purposes), I might look into it in the future. The Enumerator works as expected, it starts with the oldest element and returns all elements until the most recently inserted one. Modifying the collection while enumerating throws an Exception, and thread safety is the same as with a List<T>, which means "none at all".

Example usage:

var buffer = new CircularBuffer<int>(3);
buffer.Add(1);
buffer.Add(2);
buffer.Add(3);
buffer.Add(4);
// buffer now holds [2,3,4]

Kindle Fire Impressions

I received my Kindle Fire two days ago and played around a bit with it. Let me make a few general comments about reviews first: A lot of people are making a big deal out of the price and saying that a $200 device naturally needs to cut some corners. That is fully true, but looks at it from the wrong angle. We shouldn't look at what the device doesn't do. Instead, we need to look at what it does, and decide if it's worth $200, because garbage is garbage regardless of the price.

The question is, what is the Fire? The general consensus is that it's an Android Tablet and thus in competition with the iPad. Well, if you are in the market for a tablet and you actually have the money to spend, then get the iPad as it easily beats the Kindle Fire as a tablet in every possible comparison. I also have an iPad 1 and thought that speed would be comparable since the iPad 1 has a 1x1 GHz CPU compared to the 2x1 GHz CPU in the Fire, but even with that the iPad runs circles around it.

So it's certainly not a Tablet. What is it? A Kindle? A big iPod Touch device? Something completely different? Let's ignore any comparison at the moment and instead just look at what features it offers and most importantly, how well are these features implemented.

Browsing stuff

The Fire has a carousel as it's home screen, with favorite apps underneath it if held in portrait mode. If I had one word to describe it: train wreck. Okay, that's two. Anyway, the carousel displays recently used content - apps, videos, books - in a cover flow-type view that allows you to flip through it. How often have you used Cover Flow on an iOS or Mac OS X? Exactly, me neither. Carousels look nice on still images for the press, but in real world use they are about as useful as tag clouds - not at all. Are you someone who flips through all your stuff just to find something random to do? I do that for music, but I wouldn't shuffle between my music, video, books and games and then decide if I'd rather read a book or watch a movie. Especially since it doesn't shuffle through your entire collection but only recent stuff. It's not very useful as a list of favorite stuff because things change positions and the latest app is always in front even if you never use it again. Also, the carousel is extremely sensitive. Touch something, move your finger only slightly and the carousel will scroll in that direction. Opening stuff through it is a game of luck and patience if you just want to casually flip through stuff.

The Carousel is broken and I do not see any way to fix it. The usual grid view of applications is infinitely better and I can only hope for Amazon to kill the Carousel and replace it with a normal bookshelf of manually placed items. This also solves the problems of many applications not playing well with it (e.g., when viewing videos through the Gallery app, the Carousel does not list the video but the Gallery app. Videos watched through Amazon's streaming services do show up perfectly fine though).

Speaking of a bookshelf: This is the view used when you tab the "Books" or "Apps" or one of the other tabs, and it's much better. Problem: The search bar is not displayed on these tabs,

Books

Since this is a Kindle, books are the natural fit for it. They appear in a Bookshelf (like iBooks on iOS) and 12 are displayed on the screen at once as a grid. Alternatively, there is a list view which shows 9 at a time. They can be sorted by Author, Title and Recent usage. They can not be categorized, which I find braindead. The eInk Kindles support putting books into categories, and I admit it doesn't work too well (The eInk Kindles are not responsive enough to make management of more than 2 pages of books really good). But a device like the Fire would have fantastic opportunities to categorize books into collections, sync those categorizations into the cloud and back to the eInk Kindles. A lost opportunity right there.

When reading, you can select the font size, margins, color (Black-on-White, White-on-Black (I like that one) and Sepia (which is a gimmick, just like on iBooks)) and font. As a book reader, the Fire is really nice. The display is not eInk though, so there is considerably more eye strain and because the device is heavier than a normal Kindle it isn't as convenient to hold for hours.

Still, as a book reader it is a competent device, but Amazon missed opportunities here to make it an epic experience. I have a Kindle 4 as well, and that one will stay my primary eReader.

Music

The Fire plays Music locally or from your Cloud Drive. Let me briefly talk about the latter: Amazon's MP3 Uploader either never received a UX pass or Amazon's UX people are idiots. Also, there is a limit of 100 MB for tracks, which means that some of my live songs cannot be uploaded (Sorry, but Transatlantic's The Whirlwind is a single 79 minute track on both Live Albums). Once music is in the cloud however, it plays well.

When browsing all Songs, you get a long list. if the list is really long, then a slider appears that can be dragged. This is common in the UI and works very well. There is no bookmark for individual letters though like the iPod has, however starting letters are displayed when using the slider. There is no search though (apart from the global search).

One thing that Amazon does right and Apple does wrong since forever: Songs a sorted properly. The song "A View from the End of the World" is listed near the top, because it starts with an A. "The Whirlwind" is sorted between S and U because it starts with a T. Apple for some braindead reason sorts these two songs under "V" and "W" respectively, because apparently articles aren't part of the song name. I'll sort "Apple" under P from now on for the same reason.

Another thing the iPod supports that I would have loved to see on the Fire: Chapter support. I have several AAC Audio files that have chapters, for example live concerts, DJ mixes and Audio Books. No chapter support on the Fire, it's one 80 Minute song while the iPod also treats it like an 80 Minute song, but tapping the Playlist view shows me individual chapters.

Video

Here's one of the two reasons to buy a device like the Fire over an eInk Reader. Video is available through Amazon's streaming library (which includes a lot of really good content, a lot of it free to stream if you are a prime customer) which has gems like Super Troopers or Star Trek DS9. The screen is fantastic, and the overall picture quality of the things I watched was great, a lot better than the stuff on iTunes.

There are no subtitles though, a feature I only saw on Netflix on a PC yet though. Speaking of Netflix: There is an official, free Netflix app in the Marketplace and it works well. It is not Kindle Fire optimized though, which means that watched movies do not show on the Carousel. Also, the status bar is always visible, something I talk about in the "Apps" section below. I hope they come up with an optimized app.

So streaming is awesome, how about on-device playback? Well... Not so awesome. I copied some video to the device and first looked around where to play them. Naturally I checked the "Videos" tab, but this is solely dedicated to Amazon-bought/streamed videos. There is an App on the device called "Gallery" that works as a photo and video player, and it sucks. It's clearly a third party app because it behaves nothing like the Books or Music part. It supports only non-HD MP4, at least none of my other videos played. Of course, videos don't show up in the Carousel either.

Apps

Okay, so this thing runs Android which means that a ton of apps are available, right? Well, yes and no. Yes, there are many apps but if you expect a consistent experience or good functionality you might be surprised.

I'm looking at my App Screen right now and I see 5 different icon styles. Some icons are smaller than the rest. Some have round edges, others are square. Some have a border as part of the image, some have gloss, some are neither. Many struggle with one unique thing the Fire does: There is ALWAYS a status bar (because there is no physical home button) which is either 40 pixels high when expanded or 20 when collapsed. The 20 pixels are always there and can obstruct the view. For example, imagine watching a movie on Netflix and the bar is always there, which sucks when watching dark movies. Some games have the UI partially hidden. Sure, it's only 20px but it's not a great experience.

One thing that really surprised my is the absence of an official Twitter client. There is one for the Android, but it's not compatible with the Fire. There is an icon "Facebook" in the Apps section which is a glorious, fantastic... browser bookmark. Yes, you read that right, it's a friggin bookmark that launches the browser on the mobile Facebook site. Okay, fair enough, let's just delete it... Oh, you can't.

Crapware is something every Smart Phone owner knows. Apps installed by the device manufacturer or carrier that cannot be deleted and are generally useless. The iPhone has them, Android phones have them, and the Kindle Fire has them as well. An undeletable Facebook bookmark and an Office App that has WAY too many permissions on the system, and possibly some others. This sucks.

Amazon doesn't use the Google AppStore since they have their own. This is nice, but it means you miss out on some Apps like Firefox Mobile, They do a reasonably good job to filter out Apps that don't work on the device, so every App you buy or download at least starts. However, not all are really great yet.

The Fire comes with a Comixology app which is clearly rushed but overall works really well. The guided read feature works perfectly and I'm really happy with it. The reason I say it is clearly rushed is because a) it has a few crash bugs. Using the slider when scrolling a large list always crashes it. The other reason is b) Navigation is buggy I select Category > Fantasy and a Comic, then hit back. I would expect to get back to the Fantasy Category, ideally at the same scrolling level I was. Nope, I'm brought back to wherever I was before. I'm pretty sure they'll update the App though, it seems they had to hit the date and got all the core functionality working.

Also, usability is inconsistent. The Fire Status bar offers a "Back" and a "Menu" buttons, and Apps haven't consistently found out what to use them for yet. Some apps have their own menu as part of the app, other use the status bar.

Nice however is that the Amazon AppStore offers a free app each day. Yesterday it was Bejeweled 2, before it was a nice 16-bit RPG. Today it's a crap email app. I also give Amazon a lot of credit for clearly showing what permissions an App wants, so if you see a seemingly harmless app requiring access to contacts and messages you know it's a scam and can avoid it. It's a bit sad that this is needed (never had fear for downloading iOS apps), but that's the downside of a mostly open AppStore. And of course just like on Apples AppStore, there are thousands of garbage and scam apps out there (e.g. Apps that are named very similar to popular games but that are just hints and tips for $1, and of course the amount of stupid apps we used to have on J2ME mobile phones like an X-Ray scanner.)

Browsing the Web

One of the big features if the Fire is Silk, their cloud based web browser that sends all pages through Amazon's servers where they reprocess it to make the tablet experience snappier. Essentially Opera Mini. I see this being awesome on 3G connections, but I don't see the point in using it over WiFi.

Well, turns out that browsing WITH Silk is actually slower than without it, so I've disabled it. It is a full browser, and pages display properly. Scrolling is slow though, there is a noticable lag between swiping your finger and the page moving. The browser supports Flash and it works just as well as on every single other mobile device in existence, or in other words: It's sluggish and drains your battery extremely fast. Luckily, Plugins can be disabled in the browser.

You can browse the web, but I find that even my old iPod Touch 2G had a better experience because it was snappier.

Responsiveness, Polish and Stability

I only briefly mentioned performance and stability before. Stability issues is something that affects all devices (I have stopped counting the times my iPod touch crashed or behaved strangely when it's off, you double tap the home button and press "Next Track" on the iPod controls or unlocked it quickly.) and so far the only app that crashed on my was the Comixology app.

However, performance is a big, big issue. The UI is very sluggish, everything takes a moment to react. Not long, but long enough to notice it. Sometimes it's downright unresponsive though and I have to hit a button or swipe my finger multiple times before it reacts. This thing has better hardware than my iPad 1 (twice the RAM, a second CPU core and a much better graphics chip) and doesn't even come close to it.

There is a lot of polish missing as well. For example, you open the Amazon Store app and get a login screen that looks extremely ugly. It's not centered, it's a dark screen with an input box and submit button in the top left corner. Also, there is a Notification that says that "One Click Purchase for Mobile has been activated". Apart from the fact that it is there since 2 days and doesn't go away, I don't actually have 1 click purchasing enabled.

Conclusion

Hard to make one. If this were a $500 tablet then it would already be on it's way back. It doesn't stand a chance against the iPad and I think it even loses to my old iPod Touch 2G. But it's not a $500 tablet, it is a $200 Kindle. It has really decent hardware and a gorgeous display. As outlined above, the hardware is much better than what the iPad 1 had. So with a few updates, the Kindle has potential to be great.

But that's the problem: Potential isn't enough. WebOS had potential. The Motorola Xoom had potential. The Nokia N9 had potential. None of them made anything with that potential. I absolutely HATE reviewers that give good grades for something that "could be cool in the future" because people have to pay their cash NOW. If I could get a device and only pay for it once it unleashes its full potential I would be a happy customer.

Let's talk about what it does right now:

  • It is a good book and PDF reader, although the normal Kindles are still lightyears ahead thanks to eInk and less weight
  • It is a good video player for Amazon's Streaming Library with a gorgeous display
  • It is an average but usable video player for Netflix if you don't mind the status bar
  • It is a below-average video player for your own videos on the device
  • It is a good music player for local and cloud drive content, if you manage to get your music onto the cloud drive
  • It is usable as an all-around device for scribbles, note taking, and games. However, most applications feel strange and foreign on the device, so the experience with Apps is rarely ever fantastic
  • It is lighter than the iPad 2, but feels heavier (possibly because it is smaller).
  • It runs many but not all third party Android Apps if you get the APK and the App is compatible

I'm certainly keeping mine because I am happy enough with the stuff that it does do, and because I can develop my own apps for it in Java, vs. Objective-C. I'm a .net developer and since Java is just a crappier version of C# it's a lot easier to learn than Objective-C with the weird Interface Builder, 1970's header files and manual synthesizing of properties.

However, I would NOT recommend it to non-technical people. It's just not polished enough, not friendly enough for people that just want to get up and running quick. And I would NOT recommend it to ANYONE looking for a full blown tablet. Hate Apple all you want, but the iPad is still the only tablet on the entire market that actually works and thus the only tablet I can recomment, but it is also a lot more expensive than the Fire.

Potential and Outlook

Okay, that was my conclusion about the device as it is right now. Let's speak about potential. As I said above, the hardware is pretty decent, better than the iPad 1. So if stuff is slow and sluggish, it means that the software sucks, and software can be updated and fixed. I do not want to speculate if Amazon rushed the Fire for the holiday season, because I think it would have been a problem even with 6 months more development time.

One thing Amazon could not avoid is the horrible Android App situation. Thanks to the fracturing of the platform across a million different devices and the lack of a central authority, Apps are not consistent at all. They could have gone with their own OS, but that would mean no apps and a long battle to get developers. Using Android was the right choice.

I think they need to get away from the Android branding though and away from Android apps. They need Developers develop Kindle Fire Apps. Yeah, sure, under the covers it's all Android, but I don't want generic apps that suck on every device (Steve Jobs described a similar situation fittingly with "Hence developers only have access to the lowest common denominator set of features."). Instead, I want Apps that are fully optimized for the Kindle Fire. I don't care if they run on other devices. Amazon made great efforts to hide the Android core and they customized it heavily. It shouldn't matter that it's "only" Android 2.3.3, because it shouldn't matter that it's Android. Amazon should try to clearly separate themselves and get Developers behind their platform while leveraging the other Android apps.

Jeff Bezos has proven that he is in for the long run in projects, and that they are good about iterating. The Kindle 1 to Kindle 2 upgrade was massive and made a good product into the best one on the market. The Fire is an average product, but it is one that could be equally great. There is no competition in sight, since all other Android devices have the same problem and no one behind them with the patience and money to make things better. In theory, Windows 8 could become interesting if Microsoft resists the temptation to offer Desktop apps on it ("But the people want MS Office on their tablets!" - "No, they don't. They say they want it, but then never use it because desktop apps aren't usable on a tablet.").

Still, as an early adopter I think that owners of a first generation Fire will get a product that is at best remembered like the Kindle 1: A market opener, but a slightly crappy device in hindsight.

Using Scrivener and GitHub

I'm participating in this years NaNoWriMo, something I missed last year. For those unfamiliar, the idea is to write a 50,000 word novel during November. With stuff like that, backup and syncing between computers becomes an issue.

Now, I made a smart choice: Instead of using Microsoft Word or other, similar inadequate applications to write the manuscript, I use Scrivener. It saves its data in what seems like a static file at first glance:

However, upon closer inspection it's really a folder with a lot of TXT, RTF and XML files, which is perfect:

Why is it perfect? Because it plays well with git, that's why. I have a nice little private repository on GitHub, and because I'm essentially tracking individual textual files I get nice diffs:

Sure, RTF can get a little problematic to read in a diff, but it's better than the binary formats. And yes, Word's file format maybe zipped XML, but you can't just version individual XML files within the docx archive.

With GitHub, my novel is backed up and accessible from almost any computer I want, and if I don't have a computer with Scrivener nearby I can just log in to GitHub and read/copy parts of the Novel. I haven't tried Inline Editing and I don't think it's gonna work since Scrivener stores a checksum of each file, but there is definitely some idea for growth.

Amazon, fix your search already!

The earbuds of my iPod start to disintegrate. I still use the standard Apple ones, the ones with all the rubber that starts to break after 6 months or so. I'm actually waiting for a pair of hopefully really decent ones, but those won't come until some weeks, possibly months. So in the meantime, let's get some cheap ones from Amazon, after all that Amazon Prime membership needs to work out!

Let's start with a simple filter: I want Prime Eligible, sold by Amazon.com, $15 or less, 4+* rated earphones:

Easy, is it? Well, not for Amazon:

Look, I know the economy is bad and the US Dollar sucks, but if we just look at the numbers, then 22.50 is bigger than 15, is it?

Oh, wait, actually it is listed as less than $15 because one of your third party sellers of Amazon's Marketplace has it:

Amazon, why do you have a filter for "Seller: Amazon.com" only to ignore it then? But let's look at the $13.69 offer:

Wow, so you got some shitty seller with 50% positive ratings that charges $15 for shipping a product that weighs a mere ounces from Texas to California and you think that this offer is so good it should be in my search results for "Prime Eligible" (=NO shipping Costs) and "Seller: Amazon.com" (=NO third party vendors)?

Inflating shipping costs to undercut the competition on the product price while still making a decent profit is the oldest trick in the book, even eBay reacted to it and is now sorting their auctions by "Price + Shipping Cost", and yet your crappy search isn't smart enough to do that?

If you need an Engineer to fix your shitty search in his spare time, drop me an email and I'm sure we can arrange a little side-contract for less than a $100k. And don't tell me that's not worth it, after all you're the company that came up with the "Milliseconds equals money" equation - and if each millisecond is costing you a truckload of money, how much money is your shitty broken search costing you?

I don’t like Single-Player DLC

DLC is all the hype nowadays, with every game getting a few pieces for money after release. Fallout 3 and New Vegas had DLC, Deus Ex Human Revolution had its first DLC released, Assassins Creed 2 had DLC and so did Mass Effect and Dragon Age.

I don't think I played any Single-Player DLC, possibly with the exception of Gears of War 2: Road to Ruin and the Dragon Age DLC when I bought the Platinum Edition.

The reason is quite simple: DLC is too small. When I play a game, I want to really dive in and be immersed, live through the story, see my characters succeed and fail. After I'm done with the campaign, I'll detach myself from the game again and move on. Picking up the game later means I have to get my mind back into it, remember all the events, characters and little nuances that immersed me the first time around.

Most DLC is over before I'm really back in the mood. A lot of DLC is poorly integrated into the story line and feels tacked on.

Please, don't charge me $8 for an hour of game play.

I want $30 expansions that have a full, fleshed out story line, like Dragon Age: Awakening. Or a $50 sequel. But please, no more Bring down the Sky or Operation: Anchorage.

(Of course, this only applies to Single-Player/Story content. Feel free to sell as many mods, skins and weapon textures for $8 as you want, people buy them)

The price for the most braindead feature goes to: Mac OS X

For all that's good about Mac OS X and Apples legendary usability, it has the single most dangerous, stupid and braindead function of all operating systems, ever:

This happens when you drag a folder into another folder, which already contains a folder with that name.

If you are a Windows user, you know what happens next: The folder contents will be merged, which is usually what you expect.

What happens when you click "Replace" here? Well, Apple is at least honest, because it will do exactly what it says: It Replaces the folder. Your old folder is gone.

The braindead thing? The old folder doesn't go into the Trash Can. If you delete a file in either Windows or Mac OS X, it goes into the trash can, so you can restore it. If you Replace a folder in Mac OS X Finder, the old folder is permanently gone.

With all due respect for the fine work the software engineers did in the past decade and a half: Whoever is responsible for thins function needs to be punched in the face, preferably once for every single folder that users - who are expecting a OS that values user friendliness to perform better - permanently lost.

What's even worse: There isn't even an option to merge. Really guys? "The world's most advanced desktop operating system" does not even have a function to merge two folders through its primary file management tool?

(PS: For a similarly dangerous function, try moving a folder over the network and briefly interrupt the connection. Chances are good that the folder gets deleted from the source since it was moved, but doesn't fully arrive at the destination because the connection got interrupted. Yes, the worlds most popular desktop UNIX fails miserably at basic network functionality.)

Update: Turns out that OS X Lion finally learned to merge, but only when copying stuff. If you are moving folders within the same Volume, move is the default. Holding down the option key allows you to merge:

This is arguably a lot better than any previous OS X Version. Still, it's way inferior to Windows 95 which happily merges on move (saves me the cleanup afterwards) and can also merge a subfolder with it's parent folder, something else OS X can't do:

This isn't needed that often, but useful when extracting a zip file yields a folder/folder/files structure.

Thoughts on Growl 1.3 being a paid app now

I just browsed the Mac AppStore and saw Growl on sale for $2. At first I wanted to give a 1-Star Review and call it a scam, selling free software for money. Then I went to the Growl Homepage and saw that this is true.

Now, I don't have a problem with them charging now, it's their right. And $2 really isn't much, I bought it immediately since I use growlnotify a lot.

What is prompting me to write this blog posting: I wonder what this means for third party app developers?

When Growl was free (1.2.2 still is), it was a no-brainer to implement it in your App. You could tell your user to download it, or you just snuck it in with your apps (much to the dismay of the developers, who had to put up a notice on their web site). Now, your users have to make an additional $2 purchase regardless if your app is free or paid. And due to the way the Mac AppStore works, you can't just decide to pay the $2 for your users and bundle Growl with your app - even if you include a $2 git certificate, your users now need an iTunes account.

Now, in an ideal world where every user has an iTunes/App Store account this isn't an issue, but I still wonder if this decision will lead to everyone reinventing the wheel and adding their own notification system again? (Or forking/distributing Growl 1.2.2 for all of eternity or until a Mac OS X version that doesn't support it comes up).

Again, I don't want to speak ill of developers who created an amazing piece of software and now charge a minimal amount for it. I just wonder if this may cause issues for us Third Party app developers?

In an ideal world, Tim Cook will announce that Mac OS X 10.8 comes bundled with Growl, that all Apple Apps support it, that GNTP becomes an integral part for distributed notifications, that it integrates into iOS' notifications system etc. pp. Your move, Apple.

You can remove Ads from your Ad-Supported Kindle now

Previously, I blogged about my new Kindle 4 and that I was bothered more by the ads than I thought. With the Ad-Supported Kindle 3 that meant tough luck - send it back under the 30 day money back guarantee and get a new one.

Now, Amazon finally has an option to remove the ads. Log in to your Amazon Account and select "Manage your Kindle", then "Manage your Devices".

There should be a column for "Special Offers" in which you can remove the ads (the column will only be there when you have a Kindle with ads).

Obviously, Amazon will charge the difference ($30 for the basic Kindle 4) and within a minute or two your Kindle will happily proclaim that Special Offers have been removed (provided it's connected to WiFi).

I have no idea if it works for the Kindle 3 as well.

Review of the Kindle 4

I've just received my Kindle 4, the low-end ad-supported $79 model. I have a Kindle 2 as well, and because I'm traveling soon the smaller form factor and weight was attractive.

I also heard that the display was improved a lot from Kindle 2 to Kindle 3 and from what I've heard the Kindle 4 uses the same screen as the 3. I don't have a Kindle 3 to compare against, but it's definitely an improvement over the 2.

Hardware wise, it feels that it's the same in terms of CPU: Downloading stuff from the archive still results in annoying screen refreshes and micro-hanging. Opening the on-screen keyboard results in a noticeable delay. Flipping pages or just rapidly moving through the Keyboard shows the high latency of the screen. No change, but if the Kindle Touch has the same hardware, it just fuels my belief that a touchscreen e-Ink isn't a great experience.

It is still possible to take notes and highlight text passages. The On Screen Keyboard is not stellar, but it's okay. I used the Keyboard on my Kindle 2 exactly 1 time so far, to buy a book from the Amazon store. I usually buy books from my Mac, and I never feel the urge to take notes. Realized how much I like 3G actually. Open Amazon on any web browser and use the "Send to my Kindle" option on checkout. Would definitely pay the extra price, if 3G were offered.

There is no Headphone jack anymore, and no Text-To-Speech anymore. It wasn't great anyway, so I don't care. But if you're vision impaired and actually used that feature, you might want to know. Capacity reduction (2 instead of 4 GB) doesn't matter, bought books are tiny, PDFs suck just as much as they did on the old Kindle, and no audio features means no music. Novels are usually around 1-2 MB, some tech books can reach 5-10 MB, and the (free) Oxford english Dictionary is 25 MB. My 31 books take up 155 MB, with about 80 MB for the mentioned Oxford Dictionary and two other, similar Dictionaries. Battery runtime was apparently reduced, but we're still talking about a month according to Amazon (down from 2 months), a claim that is not only verified true, but also just means that it went from "So long you don't have to worry" to "Still long enough that you won't have to worry".

Does not come with a USB Power Brick, only with a USB Cable. Judging from the coating and looks, I assume it's the same horrible Cable Amazon ships with all Kindles. Expect the cable to literally fall into pieces and disintegrate in a year or so. Threrefore, don't buy these crap Kindle-branded cables as replacement when yours disintegrates (that's a "when", not an "if") but get a plain standard Micro-B USB Cable, ironically sold by Amazon under their own brand as well.

Physical Prev/Next buttons on both sides like on the Kindle 3. They work well and have a nice touch, but I prefer the bigger ones on the Kindle 2. No more holes for book cover hinges - I liked those, but now the official Kindle covers seem to have a hard plastic shell, which is nice. $60 for a lighted cover to cover a $80 device does not look so nice, so I've passed on that. I love how the light is mounted though, much better than the Kindle 3 lighted cover which looked a bit makeshift.

Ads are annoying. I thought it wouldn't bother me much, but I spend a lot of time on the Home Screen and I have 4 pages of books already. I'm only losing one row (9 vs. 10 Books per page) but it just somehow feels I'm losing a lot of space. If Amazon would offer an option to pay the $30 difference to remove ads, I'd seriously consider it. Ads themselves are not annoying and only show up on the home screen and screen saver, not during reading. So if you are cost concious, buying the ad-supported Kindle isn't a bad thing. (Edit: You can upgrade the firmware to an ad-free one directly through Amazon)

If you don't own a Kindle but like to read books and don't mind that you can't resell individual books, the Kindle 4 is a more than decent reader and a better reading experience than any Tablet will offer, including the upcoming Kindle Fire.

For size comparison, Kindle 4 lying on Kindle 2. Screen size is about the same.

←Older