Friday, August 26, 2011

Windows 8 - File Name Conflict Dialog

The Windows 8 team release some video and information about the new and improved copy process in Windows 8. It is really a nice improvement from Windows 7. However not good enough to kill Multi Commander, It will still be needed if you want full control of your files.

A lot of the comments in the Windows 8 file copy post was about the file name conflict dialog.
And today they released a new post ( Designing the Windows 8 file name collision experience ) where they talk about the design decision behind that dialog. It is a simple dialog but it is not an easy task to get it right.

I have some experience with this my self. I been working on a redesign of the file name conflict dialog for Multi Commander, and it is not easy. There should be enough important information so the user can make a good decision. But to much information will make the dialog hard to read. To little and the user might not know what file to keep/overwrite. It hard to make a good balanced decision here.

Tuesday, August 23, 2011

nullptr (c++)

C++11 now finally offers a real null pointer that is type safe.
The old NULL was a define of the value 0, and this is can generate some problems and bugs.

Here is one of the problem that NULL can give you. In this example we got 2 overloads and we want the pointer overload to be called. But if we send NULL to it. We will not get the expected behavior.
void method(int *p);
void method(int n);

method(NULL); // what overload is going to be used. ??
              // method(int n); will be called.

By using nullptr that problem will be avoided.
void method(int *p);
void method(int n);

method(nullptr); // method(int* p); will be called.

Tuesday, August 16, 2011

The Importance of Crash Reporting

One of the most useful feature that I implemented into Multi Commander was that if it crashes it will automatically upload the crash dump to my server.

Of all the crash report I received, I never received a mail or forum post from anyone that reported that it crashed when they did X. If Multi Commander did not send a crash report, there would be a whole bounce of bugs that I would not have been informed about and that would not have been fixed.

Having automatic crash reporting is probably the most important feature you can have. Without it you would not find all the weird problem that user can be affected by.

Sunday, August 14, 2011

Lambda (C++11)

Lambda expression is another new thing in C++11

Lambda expression allow you to create a local (temporary) function. And it works like a function pointer or function object.

They look complex and different, But they are not.
All lambda expression start with a capture clause, Following with parameter list, then return type and last the execution scope. If return type is not specified it will try to figure it out it self or use void.

[]() -> bool { return false; };
(A lambda that does nothing. It just returns false.)

[&nCount](int x) -> bool 
    return false; 
    return true; 
(A lambda that capture the nCount variable from local scope as a reference, It will accept a int as parameter and will return a bool )

Friday, August 12, 2011

Multi Commander Free Edition - First Month

I released Multi Commander for free a month ago (12-July-2011).
I did not expect I would get many more downloads. But I got a lot more downloads then I expected.

It hard to tell the exact number of downloads since some sites like / and some other store the file locally, instead of redirect to my site. And some people still use download accelerators and that can gives a incorrect download statistics.

Taking all those factors into account, I still get a number of over 20.000 downloads.

A lot more then I expected.

Thursday, August 11, 2011

auto (C++11)

The new C++11 standard has given us a lot new features. One of them is auto.
auto it is not exactly new, auto was actually already a reserved keyword in C++ but nobody used it. So auto now means something totally different and is now useful.

Sunday, August 7, 2011

First Post

It is not like the world need more blogs about programming. But here it is anyway.

This blog will mostly be about software development on Windows, C++, Debugging, and what else that can be said about it.

Who I'm I?
I'm self though programmer that started with programming on the Commadore C64, and then with C and some assembler on the Amiga 500 a long time ago. Don't remember exactly when, but I got my Amiga 500 around 1989.

I'm been working as a C++ developer since 1997, Currently I'm working as a consultant for Consulence and been placed at a company in Malmö,Sweden for the past few years, There I and a couple of other developers are maintain lots of legacy code, fixing bugs, investigating customer problems, implementing new features and more.

Personal Projects
A lot of my spare time goes into the development of Multi Commander.
Multi Commander is a file manager replacement for Windows Explorer, I been working on that for a long time and it was only available to me and some friends. But recently I decided to release it publicly.