Posterous theme by Cory Watilo

One day, two Microsoft fails

It's a catch-22 with Microsoft. Being an "Apple Fanboy" (™) as many people call every Apple user I try to not criticize the MS world too much, to not get sucked into this simple world of hatred many people live in when it comes to those religious discussions. But sometimes, yeah, sometimes it's just so bad that I just can not shut up. And today I stumbled across two of those problems that make you tear your last hair, screaming out loud what a crap this company produces. Sorry about that, but it's just the truth.

Problem number one: Xbox 360, Windows 7, external hard drives.

The Xbox 360 has built-in support for USB storage, so you can play movies, music, photos from let's say an external hard drive. As I've bought a second Xbox 360 these days I wanted to connect an old 3.5 inch USB hard drive to the old Xbox, so it can be used as a media center. Yes, I know, streaming would be the better choice, but I didn't have the time to lay an ethernet cable yet and no WiFi adapter in sight.

So I connected this hard drive to my Xbox and - nothing. The Xbox didn't recognize it. Okay, no problem, think to remember that the Xbox doesn't support NTFS, so I reformatted it using a FAT, as FAT32 is the file system of choice for almost every non-PC device. Formatted it, connected it - still nothing. What the…? I disconnected it again, connected it to the Windows 7 PC I initially formatted it with and took a look at the format tool. For some reason the FAT system I chose wasn't FAT32 but exFAT, a newer version that supports files bigger than 4 GB. Uhm… okay, the Xbox doesn't seem to support this exFAT system, so I tried to find a way to format it as FAT32 but - there wasn't an option for that! I played around with the partition's size and whatever I entered, it didn't offer a FAT32 option. I remembered some size problems around 32 GB or something like that, so I entered 20 GB and still no FAT32. But now the funny thing: when I entered 4 GB, it offered me FAT32!

Now that is so fracking weird, I cannot even remotely think of any reason for this. FAT32 is a file system that supports up to 2 TB per partition, depending on your cluster settings. But 4 GB? For every partition that's larger than 4 GB you don't get the option to format it as FAT32, you then have to format it as exFAT. There are several reasons why this is simply crap:

  1. Microsoft is the main software base for the average consumer, but as their NTFS is closed source and Unix filesystems cannot be formatted by Windows, at least not out of the box, FAT32 is crucial for almost every user that handles media players or similar hardware.
  2. The only reason to disable FAT32 support would be to not confuse customers, what they actually do by disabling it. Not even mentioning the fact that the whole process is far from being consumer friendly.
  3. Their own flagship living room product, the Xbox 360, is openly advertised as supporting external storage for media playback purposes, but doesn't support either exFAT nor NTFS. USB devices have to be formatted as FAT32.

The upshot was that I had to use my Mac to make a simple hard drive compatible to an Xbox 360, as Windows 7 is literally incapable to do it (unless you search for some 3rd party tool, of course). Crazy. And so stupid.

Problem number two: Xbox 360, Kinect, video.

Kinect is the great hype these days. Many people love it, many people hate it, that's just business as usual. I have it and I love it, even if it is not as good as advertised and there are no good games available yet. But I'm addicted to gadgets and it really is a huge step forward in interacting with a video console, it's just not yet utilized as good as it could be.

But not being as good as advertised is something totally different to what they did with the built-in video camera. The device has several cameras and the one I am talking about is just the one for shooting images or taking videos, not the one (or two) that track your body, so don't be afraid of what I'm telling you now.

The built-in camera is advertised as playing crystal clear video at a very good frame rate. In the preview videos they even advertised full screen video, which just isn't there. The application that enables you to do video conferencing is called Kinect-Video and this one doesn't have an option to do full screen conferencing. But well, doesn't matter right now, maybe they'll update this application later on. Really doesn't matter for me.

The bigger problem is that in my case I wasn't able to actually enjoy any second of my video conferencing sessions, as the quality was crappy as hell. The frame rate was stuck at about five to ten frames per second, video is grainy (ingame photos are too) and the audio was producing echoes, squeaking, too silent. The audio actually seems to be using the low quality codec that ingame voice uses on the Xbox 360 and this is just ridiculous for living room video conferencing, especially without using a headset.

But the way bigger fail is one they could have easily fixed before releasing it: slow motion video. I couldn't imagine why video has to be that slow, so I searched the web for it. Microsoft's FAQ told me to check my connection speed, but honestly - 300 mbit/s on WiFi shouldn't be a problem using my 32 mbit/s down /2 mbit/s up ISP connection - yet I connected a cable, just to make sure I'm not the problem here. Still slow motion video. What the… ?

Today I did another search on the web and this time I stumbled across a posting (sorry, don't have the link any more) where someone was suggesting to play around with the living room's lighting, as the camera seems to be compensating low light situations too early, Somehow reminds me of a situation ten years ago, when an old Microsoft webcam produced slow video every time it wasn't full daylight. But hey, these days are over, aren't they? They … are … not!

Earlier this day I tried to troubleshoot it and it's like he said - better lighting and the video plays fluently. But the amount of light that I needed wasn't simply opening the curtains and here you go. I had to put a lamp right beside the camera. When waving my hand right in front of camera and the lamp the video was very good. But that's nothing I can implement for my whole living room. I have a huge window in there that's supposed to let in a reasonable amount of light, but, at least these winter days, that still isn't enough.

So the end of this story is: The camera's video doesn't work fluently for most of the people's living rooms, as you have to have a "daylight bright" situation to make it enjoyable. In my living room I seem to have to pull out those old, bright, energy guzzling lamps I wanted to throw away, hoping that it helps in situations that the sun isn't shining directly into my window.

I love the idea of having Kinect, honestly, but it's also a bit of a pain in the ass. First the room thing (you need 2m of space in front of your TV), now the light thing… feeling like I have to build a new living room to meet all those requirements. Maybe my living room is especially dark and especially small, but I think there are millions of others that have to fight with this situations. Of course you have to meet some requirements, but it just feels like it's not thought out very well. A camera with better low light pictures costs only one buck more in production (if it isn't only a stupid driver problem) and the camera angle could have been better, too. But at this point I just have to say, Microsoft, you failed!

Thoughts about Access Control Lists in Ruby on Rails

When you’re implementing a web application that offers some sort of user management, you quickly get into the situation to think about permissions for these users. Usually you want to have groups of users (or „roles“ - I noticed that many in the Ruby on Rails field prefer the term roles here) that share permissions like „may write postings“, „may read profiles“ and these sort of things.

Some time ago I started writing a web application and ran into this exact situation. I asked myself „What’s the best way to set up the most flexible sort of permission system, so anything can be permit or forbidden to anyone?“. My conclusion was that I had to use Access Control Lists (ACLs).

Using ACLs the way I wanted to implement it, each object in my application would have had two additional objects: a requesting object and a requested object. Let’s say you have users and postings. Whenever you create a user you would create a requesting object myUser and a requested object myUser, too. Same with postings. Then I could define a simple 1:1 relationship between each requesting object and each requested object. For example: requesting object myUser shall have permission to read requested object myPosting. Or the other way round: requesting object myPosting shall have permission to read requested object myUser, too. Thinking about all the models you will have in a huge web application, you could easily define permissions for everyone to everything.

But guess what - this system is rather complicated to implement. I am still not finished writing my Rails plugin for this and I don’t think I will be able to finish it within the next few weeks or something.

My idea behind this ACL plugin I was going to write was, that I needed one single plugin that can handle all the needs I will ever have in an web application. If this plugin is finally ready, I can use it for huge and small projects as well. You don’t need its full power? No problem, just use only the parts you need. But I would have this one very solution that helps me all the time, instead of implementing tons of implementations of access control that’s available for Rails. There are so many access control plugins available, I cannot even get an overview about it… but this one variation that I was looking for wasn’t there, so I chose to implement it.

But as I mentioned above, my plugin won’t be available any time soon. I am already thinking about pushing it to Github, so I may get some help and share my work at the same time, but before I do so, I need to clean up and make a real project of it.

Anyway, the situation now is that I do not have my own solution yet, but the projects of course cannot always wait for it. So I thought about it some more and made a decision: there always have to be both a simple and a complex solution. But which solution does my project need? Here’s some thoughts about that.

Access Control Lists are a huge implementation. Using them you gain control over every single object’s permissions. You can inherit from parent objects easily, you can override the permissions for a single user though he’s still in his general user group and so forth. But the big question is here: does my project really need this? Or, which sort of projects really need this? Especially the last question came to my mind today, and it almost blew me away, because I realized that I can skip these ACLs for the more pressuring projects right away.

Short answer: most public projects don’t need this sort of Access Control, but intranet applications do.

Long answer is, the whole power of Access Control is only needed, if you have to be able to override permissions for single users at some point. Normal web applications that are for public use, won’t ever make use of it, because you’ll have so many users that you don’t want to control single users. Users are always grouped into roles that may be called „guest“, „normal user“, „paying user“ or such, but they will not be jailed into areas of your site, just because they belong to a special sub project or something. You will not offer special permissions if someone asks for it and you won’t need to permit use of something that is internal. A web application in your intranet will need this stuff. You will need to give a user more space than the other, or create a special repository for just one department, but this is very fine grained work that will only happen as internal stuff. It won’t happen in the public area. Sure, there will be overlaps, but some parts you will have to add to those general plugins anyway. For example I could permit the use of an object using ACLs, but I would need a additional permission system to set up something like „permit number-of-messages“ and such.

So I decided for myself to not fully stick to the plan. I will look out for a solution that’s role based only for my public projects and continue work on my great ACL solution for the future. For internal/intranet projects.

So if there’s anyone up for some work on a great new solution of ACLs in Rails, be my guest. Rails needs this very plugin. Database based, role independent, anything to anyone. But it’s still a hard bit of work.

shiftit - Project Hosting on Google Code

This application will let you resize and move your windows without having to using a mouse. Following are some of things you can do with the Shift It:

  • Shift the focused window to left/right/top/bottom half of the screen.
  • Resize the focused window to fill the whole screen.
  • Move the focused window to the center of the screen.

Shift It is a great tool that lets you organize your windows. Now you can read documents side-by-side without having the pain of manually resizing the windows.

Needs an icon instead of menubar text, but it is a really good Cinch alternative :)