Some Thoughts on Windows 8

October 27th 2012

I have been using Windows 8 (RTM) for a few weeks now, and the Release Preview as well as the Consumer Preview in the months prior.

One thing I am happy about is that Microsoft has finally shown some balls and willingness to drastically change their software, and not just play it safe and thus forever remain in a space with ideas and concepts of yesteryear just so no existing customers can find a reason to complain that something doesn't work the way they are used to. This time Microsoft has decided to make some drastic changes to the way users can interact with Windows. And any change has the potential to be an improvement.

Windows 8 introduces a new, radically different UI (previously called Metro), which is designed and optimized for touch screens and lives side by side with the regular desktop. It's basically like Windows has gained a second personality, a split personality.

Strategically in a world where tablets are becoming ever more present and important in the market (maybe more important than regular PCs and laptops) there is no other alternative for Microsoft than to create an OS which is competitive on tablets. The basic touch support that Windows 7 has is just not going to cut it. Instead of starting a separate and incompatible new OS apart from Windows, they have decided to extend the regular Windows platform. This makes sense for a lot of reasons. The ubiquity of Windows gives Microsoft the opportunity to gain a large foothold right away and strengthen their core Windows platform instead of fragmenting it.

But here come the problems. The new tablets with Windows 8 that are going to compete with the iPad are going to use ARM instead of x86 architecture. ARM SOCs are not only cheaper than Intel processors, they also consume much less power. Something of importance on mobile devices. However all regular desktop software for Windows is incompatible with ARM and wont work on these new Windows RT tablets. Only new Metro applications will work on regular Windows 8 as well as Windows RT. Consumers unaware about this little detail are in for a surprise if they buy one of these nice new Windows tablets expecting to be able to run Windows software. This in fact fragments the Windows platform and may only prove a wise decision if Metro becomes a sweeping success.

That's not the only issue however. The differences between Metro and regular Desktop can only be described as jarring. Switching back and forth between both (something you cannot avoid) makes the OS appear like a confusing mess. Half of the system settings appear in Metro, the other half appear as they did in Windows 7. Metro is especially bad in multi-monitor set-ups (you can only have Metro only on one display at a time). This whole thing seems very unfinished.

I am somebody who welcomes change. I liked Vista, I wasn't bothered by the ribbon in office, I even welcomed the changed scrolling behaviour in Mac OS Lion. Even all the oddities in Windows 8 wont make me return to an older OS, as there are still a lot of good new things in 8. But looking at the reaction the general public has shown to changes much more restrained than those found in Windows 8, I'm afraid 8 is going to be a colossal failure for Microsoft. And I do look forward to the inevitable successor to Windows 8 which will hopefully remedy most of its predecessors shortcomings. With a little luck Microsoft will start addressing some of the problems much sooner with meaningful service packs.

Metal Gear Solid: Ground Zeroes

September 2nd 2012

Kojima Productions just released a long trailer for the new Metal Gear Solid game Ground Zeroes and it looks bloody awesome!
The game's protagonist appears to be a somewhat older Big Boss and it seems to be set somewhere in the 80ies. This will be the first game from Kojima to use their new Fox-Engine, after they aborted the production of MGS Raiden internally and gave it away to Platinum who are using their own engine for the game.
From the looks of the trailer for Ground Zeros there is no doubt that this is a next-gen game. A screen at the end of the trailer may list the XBox 360 and PS3 as the platforms, but this game was clearly rendered using a high-end PC and not a PS3. Also there is no way this game will come out earlier than in two years (if past MGS game announcements are any indication). So by that time the new consoles by Microsoft and Sony will probably be out. Since the new consoles have not been announced yet it would not have made sense for Kojima to say the new game is for those next-gen platforms.
Everybody expects Sony and Microsoft to announce their new consoles at next years E3. From the rumored hardware and if Sony has learned anything from their mistakes with the PS3, we can expect both parties to use pretty much off the shelf technology. Blu-Ray drives are nothing special anymore and the PS4 may even use a regular x86 architecture and get their CPU and GPU designs from AMD. Microsoft will more likely stick with IBM's PowerPC architecture and mainly increase the number of cores from 3 to 6. This would enable them to keep backwards compatibility to their current generation software. In any case off the shelf tech could make it possible for both companies to get the new systems out by the end of 2013 and do it at a lower price that what the PS3 and 360 originally launched with.
I can't wait!


August 28th 2012

Newsroom is the first new TV series from Aaron Sorkin since Studio 60 (which was sadly canceled way too soon). The first season of Newsroom just finished airing, and it appears the show will return for another season next year, which I am extremely glad about. The first season was just incredibly well put together. There aren't that many shows of that caliber around, and certainly none that are similar.

CSS3 is great. But what about the basics?

July 15th 2012

During the past few years CSS has become so much more versatile than before. We can use a lot less pre-rendered images on websites today and instead use CSS rules to make things like boxes with round corners, drop-shadows, rotated elements and many other effects. All this is obviously limited by what each individual browser version is capable of. So if you would like your website to still work on older browsers you either have to design everything so it works and looks okay even if the corners of your boxes are square, or the other option is to create fall-back solutions in order to use images or similar in case the browser doesn't support something.

This is all good and very welcome, but what about simple things like controlling the way some input elements work like check-boxes for instance? We can have the most amazing CSS3 effects today, but we still cannot control how a simple check-box looks like. We have to rely on tricks like replacing the check-box with a different element type, one that we can style, and hide the actual check-box. To make matters worse we also have to use JavaScript in order to make it work on most browsers. This is not what I would call an ideal solution. I would gladly wait for CSS gradients and transitions a couple of more years, if I could get check-boxes instead that I can actually control.

My Eclipse Recipe

February 25th 2012

Eclipse as a development environment is highly customizable. Which also means it can be a lot of work to set it up the way you need it in order to be productive.

Here is my personal recipe for setting up Eclipse the way I need it.

Download Eclipse Classic from At time of writing the current version of Eclipse is 3.7.2 (Indigo).

The downloaded file is just a zip file containing a full Eclipse installation. You can unzip it anywhere and run it from there. I usually keep multiple Eclipse versions, so I rename the Eclipse directory to something like "eclipse_indigo", so I know which one is which. It's a good idea not to touch your current Eclipse install when you're looking to upgrade to a newer version. There's a lot that can go wrong, possibly breaking your install, if there are plug-ins that don't play nice with each other, or aren't up to date for the current Eclipse version.

Once you've unzipped the downloaded file and you've placed it somewhere permanently, you can start Eclipse by opening the eclipse.exe (Win) or (Mac) from the unzipped directory.

The first time you start Eclipse it will prompt you to select a workspace. You can keep multiple workspaces for Eclipse and switch between them. For instance allowing you to keep your personal projects separate from your work projects. You should create a directory for all your Eclipse workspaces and a separate subdirectory for each workspace within. Then you can select that empty directory as your initial workspace for Eclipse. When you already have a workspace from a previous Eclipse version, you can select that workspace as well, although you would risk potentially damaging the settings and projects in that workspace if there are any significant changes between the two Eclipse versions.

Eclipse Classic by itself doesn't have any support for PHP development. So the first thing you need install is Eclipse PDT (PHP Development Tools). Open the plug-in manager via "Help"-"Install New Software". You can select the software repository from the "Work with" select-box. You will find PDT in the "Indigo" repository. Look for "PHP Development Tools" under "Programming Languages". Select it, hit "Next" and follow the instructions until Eclipse has downloaded and installed the plug-in. You will have to restart Eclipse once it's done.

Now you can switch to the PHP perspective through "Window"-"Open Perspective"-"Other" and selecting "PHP" from the list. You can start a new PHP Project via "File"-"New Project".

If you're using Subversion as a versioning system for your projects, you should install an SVN plug-in, which will allow you to work with the repository without leaving Eclipse. Having a well integrated SVN client within your development environment is extremely convenient.

Open the plug-in manager again and select the "Indigo" repository from the "Work with" list. When the feature list below has finished loading, type in "SVN" in the search box. Select "Subversive SVN Team Provider" from the list and install it. After you have restarted Eclipse, you should go to "File"-"New"-"Other" and select "Repository Location". The first time you do this, the system will prompt you to install an "SVN connector" (this is basically made necessary due to some licensing restrictions). Select one of the options and install it (if you're not sure which one, pick the SVN Kit with the highest version number). You will have to restart Eclipse once again. Then you will be able to use SVN inside Eclipse.

Go to "File"-"New"-"Other" and select "Repository Location" under "SVN". Enter the URL of your SVN repository and type in your credentials.
Now you can setup a new project by checking out from the SVN repository. You can access the SVN features in the project explorer through the context-menu when you right-click a file or directory. You will find all commands under "Team". The "Synchronize with repository" command makes it very easy to commit and update a whole project or subdirectory.

Another plug-in that I cannot do without is Aptana. I actually just need the FTP deployment feature that Aptana has, although Aptana is much more than just that FTP feature. Since Aptana is not available from the regular Eclipse software repository you will have to manually enter the Aptana repository URL into the plug-in manager under "Work with". Paste the following URL into the "Work with" box and hit enter.
Type in "Aptana" as the name for the update site. Select Studio 3 from the feature list below and install it. Once you have restarted Eclipse yet again, you should open the "App Explorer" via "Window"-"Show View"-"Other".

Aptana's App Explorer allows you to switch between the projects and not have all projects in the file list open at all times. There is a small icon In the tool-bar of the App Explorer, which will allow you to start the "Deployment Wizard" and setup an FTP connection for the project. You can configure the settings so the system will automatically copy files to the FTP server when you save them locally. You can also choose to manually upload or download individual files via the context-menu.

If you're using a bug-tracker like Trac with your team, you may want to look into setting up the Mylyn plug-in. With Mylyn you can access all your tasks from within Eclipse. It can remember which files are relevant for a particular task and can even pre-fill the SVN commit-message with the currently open task.

Eclipse for PHP Development

February 20th 2012

Finding the best tool or development environment for yourself will always be highly dependent of what you expect from the tools you're using. It will depend on how you work and how much you are used to working with a particular program and weather you are willing to take the time and effort to switch to something that will take some learning and getting used to before you will gain anything in return. I find that is especially the case with Eclipse if you are looking at using it as an IDE for PHP. Usually these days applications will make it trivially easy to install and setup, and you can be ready to write code in matter of minutes. Eclipse was not designed for that in mind and it's a real chore to set it up before you can start being productive. Even with these initial hurdles it is worth the effort, as it will save you a lot of time in the long run. It will allow you to write code faster, write code with less errors and it will allow you to find errors more quickly.

Eclipse was originally an IDE for Java only. In the past couple of years the open nature of the project has led to it being adopted and extended for a wide range of other programming languages such as PHP. Now PHP is quite a bit different from Java. It may allow you to write clean object oriented code. However it allows you to also write procedurally. On top of that variables are not strictly typed -- you can assign an integer value or a string value to the same variable. Not having these limitations as part of the language makes it more difficult to develop an IDE which is aware of what the code does and is able to assist you. I'm not talking about simply giving you an auto-complete for function-names. The IDE will not be able to tell you that a function call on an object is not possible because it is of the wrong type. It will also not let you easily find all occurrences of a function call in the code, as the IDE wont be able to differentiate between two functions in separate classes with the same name. Eclipse will help you with all these things for Java. But even if these features are not entirely possible for PHP due to the way the language is designed, Eclipse is able to approximate it to some degree.

As long as Eclipse knows what class an object is of it will help you with a handy auto-complete when you start typing the name of the function or hit Ctrl-Space to trigger it manually. In most cases you are able to tell Eclipse what type a variable is by writing PHP doc comments above the variable or function declaration. The auto-complete function which will also display the info you have written in the PHP doc block, is not the only feature dependent on the IDE knowing which function is which. By holding the control key and clicking on a function call, Eclipse will let you jump to the declaration of that function. That feature alone enables you to navigate the code of your project so much faster that you will save hours every week.

Before you can start learning to take advantage of what Eclipse can do you will need to install it first and more importantly gather all the plug-ins necessary to make is useful. More on that next week... Version 7

February 4th 2012

It finally got time for me to build a new version of the website. This is the 7th major version and it's the first HTML based one. All prior versions of dimovdesign had a flash frontend.
Besides leaving flash I also left behind a large chunk of content from the previous versions. They are however still accessible from the archive (I hope).

The logo is also brand new, replacing the old "s" shaped logo, which I used for almost nine years. I'm especially happy that I was able to get my new logo to work inside a 16x16 pixel frame for the favicon, even though the outlines are very thin to begin with.

Besides the usual resolution, to post content more often (which I will keep for two whole months no doubt), I also intend to post more varied content, such as tech-related stuff.

This is also the first time the website has an RSS feed. An omission that is particularly odd since I spend most of my day with Google Reader open in a browser tab...

PHP, MySQL, jQuery