Google Drive does have some innovated stuff from Docs - it has awesome realtime collaboration, borrowed from Google Wave. I'd say that if you need several people editing a document at the same time, nothing beats Docs. The only addition Google made to Docs before rebranding it into Drive is the desktop sync feature and bumping up free storage to 5 gigs. I'd say this is minor compared to existing document editing/viewing/collaboration features, which a) Dropbox doesn't have; b) Were steadily developed for at least 5 years.
Chrome collects search engines in "Manage Search Engines...". All you have to do is manually open a search engine and do one search, Chrome will then add it to the list.
I remember the time when IE dominated the web and it was not pretty. Most sites didn't bother testing compatibility with other browsers - when Firefox 1.0 was finally released, a lot of sites didn't work or display correctly. IE6 was synonymous with stagnation (a popup blocker appeared only in Windows XP SP2, 3 years after IE6 was released!). Most feature-rich or banking sites simply installed their own ActiveX controls or used flash because Javascript in IE was so poor. Futhermore, IE versions for Mac and Windows Mobile worked differently from the desktop version. I'd say it's remarkable that today you can expect 99% websites to work properly on any browser or device - a direct consequence of IE losing marketshare, forcing webmasters to care about compatibility with non-IE browsers. Although I do admit that IE introduced AJAX before others.
WP7 is even worse than Android - in Android, fart apps are usually buried and don't appear in search. In Windows Phone, I found a completely useless app in the top-45 list, which is sad because the next page is even worse.
let's ignore the fact that there's been practically no marketting and advertising for this brick
Technically, Nokia Lumia isn't yet on sale in the US. And in Europe, Limua phones are heavily promoted - in my area ads for these phones are everywhere, on TV, billboards, radio and mobile phone stores. This is sad because even with this insane amount of promotion they're still having trouble selling the thing.
I've used WP 7.5 on a Samsung Focus and is was even worse than Android. Rebooted at least every 2-3 days! In addition, Android actually has some very useful features, such as playing notifications and ringtones through the loudspeaker even when headphones are connected - extremely helpful if you forgot to unplug the headphones.
Android does however have issues with sound - if headphones are plugged in during an incoming call, unplugging them doesn't switch the phone to speaker.
Windows Phone got updated, but still not as perfect as Apple's simultaneous updates for all phones. Pre-7.5 updates were significantly delayed (for several months), 7.5 went much better. But still AT&T Samsung Focus rev1.4 got Mango about a month later and all AT&T Samsung Focus phones didn't get internet sharing - even though it's fully supported by hardware and can be enabled with a simple registry hack! Considering how seriously Windows Phone is behind iOS and Android feature-wise, Microsoft can't afford wasting time on catching up with their competitors.
But still this is much better than Google's "leave updates to manufacturers/carriers" approach.
Nexus One was a nice phone, but still not perfect: - After unlocking the bootloader, you can't lock it back. This may be useful if you've done playing with custom roms and want to sell the phone, or want to secure the phone. An unlocked bootloader allows someone with a USB cable to dump all the data without knowing the unlock pin or password. - Gingerbread was released late, about two months after Nexus S. - It has some preinstalled apps taking up space on the system partition - like Facebook and Twitter. These versions are usually outdated and if you install the update, the same app will be installed twice! Installing them on the/data partition with the possibility to remove them would be much more useful. - Finally, as people already mentioned, it's not getting ICS. In addition, the phone has serious limitations, such as a crappy digitizer (no pinch-rotate, onscreen joysticks cannot be on the same line) and too little flash memory so that mandatory updates for Market, Google Music and other system apps take up all the space.
This is Microsoft. Windows development will cost less, but license prices will remain unchanged - all the money saved will go to management bonuses and marketing. And of course upper management will remain in the US.
You do understand that Nokia Siemens Networks makes telco equipment such as antennas and switches? None of which runs Windows, except for (perhaps) monitoring software.
Microsoft was also productive in the early 2000-s. Windows 2000 was a great OS, making NT ready for the desktop, and a major step in finally fixing the constant bluescreens and crashes of the 9x line. Unlike Windows XP, 2000 had no activation crap and had everything needed for everyday tasks. XP just added desktop themes, entertainment apps and Windows Restore. Visual Studio.NET/2003 and the introduction of.NET were also major steps, this probably killed Borland because Borland couldn't create a competitively priced products or offer something better than Visual Studio. VS2005 was also a great IDE, with powerful refactoring tools and a really helpful debugger. Plus, it also introduced the free Express editions.
It seems that the whole "rewrite longhorn from scratch" thing and the failure of VIsta put Microsoft (at least the Windows team) back a few years and made them more pragmatic, instead technological advances (promises for WinFS, making everything.NET, vector graphics to make UI resolution-independent just to name a few) they're preferring to make GUI tweaks. I'm very interested to see if Windows 8 finally manages to introduce something new.
Okay, found the example in my code archives: CFileDialog fDlg( TRUE, NULL, NULL,
OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_EXPLORER,
NULL, this ); DWORD MAXFILE = 2562; fDlg.m_ofn.nMaxFile = MAXFILE; fDlg.m_ofn.lpstrFile = new wchar_t[MAXFILE]; fDlg.m_ofn.lpstrFile[0] = NULL; fDlg.m_ofn.lpstrFilter = L"Images\0*.bmp;*.jpg;*.jpeg;*.png;*.tif;*.tiff\0"
L"All files\0*.*\0";
#ifdef NDEBUG fDlg.m_ofn.Flags&= ~OFN_ENABLEHOOK;//Vista style support #endif// Display the Open dialog box. if (fDlg.DoModal()==IDOK){
for (POSITION pos = fDlg.GetStartPosition();pos != NULL;)
{
CString fname= fDlg.GetNextPathName(pos);//here's the filename!
} }
More or less the same stuff in Qt: QFileDialog dialog(this); dialog.setFileMode(QFileDialog::ExistingFiles); dialog.setNameFilter(trUtf8("Splits (*.000 *.001)")); QStringList fileNames; if (dialog.exec())
fileNames = dialog.selectedFiles();//List of files is returned
The WinAPI version required a lot of trial and error to get the input parameters correct. Plus, there's no way of stating "allocate as much memory as required for output", so you have to pre-allocate memory and hope the user doesn't select too many files. This issue turns a "lots of boilerplate code pasted from MSDN" inconvenience into a real problem with no solution except for displaying an error message.
"7500 songs" is just as bad as that Libraries of Congress shit. Some songs last 3-4 minutes, some run for 7-9. Bitrate can also change the total count significantly. What's more, users usually don't know how many songs they have. A better measurement would be a "74-minute CD", but it still depends on the bitrate.
Thanks for sharing the info! Qt signals also have problems with passing non-Qt classes. If I recall correctly, in order for passing non-Qt classes, they have to be inherited from QObject, and have the QOBJECT macro defined in the class definition; also some code is required to declare the class at runtime (qRegisterMetaType). It's strange that Trolltech didn't use C++ templates instead of moc when they developed Qt4 and broke compatibility with earlier Qt versions. But moc is still required, so Qt compilation may be tricky if you're using a non-standard toolchain (Intel's C++ compiler for example) and not using qmake to build the project.
GTK2 and GTK1.2 could run on the same machine with no problems. I think it's the same with GTK2 and GTK3, after all there's a huge library of GTK2 apps which aren't ported to GTK3.
Just a quick example: to create a thread in Boost, I need just one line of code, with relevant and understandable. A mutex takes one line (no parameters required) and a mutex locker is also a one-liner. Now in Windows, this stuff requires a lot more boilerplate code, with pointers and illogical function names such as WaitForSingleObject to lock a mutex. I've created a simple image-viewing UI in win32 api and it took about 600 lines of code, 400 of which are related to scrollbars. In Qt the same application took about 50 lines of code and I didn't even have to write a single line of code for the scrollbars to work. Another thing which kills me is poorly documented function parameters, some of which are even conflicting! It took me about 2 hours just to make a progress bar work. If you learned Win32 API properly and have used it a lot, you probably are OK with it. But compared to modern toolkits/frameworks (Qt, Boost,.NET Framework, Java etc) it's much more difficult to use and writing an app in WinAPI feels like a waste of time.
Technically I was probably wrong - although some stuff in WinAPI looks like C++, such as - pre-defined pointers (LPCWSTR etc.) are close to C++ references - structs are used far more often than in C - less memory tricks, such as pointer arithmetic And MFC is C++, but most developers give up on using this monster, and instead implement their own C++ wrappers for making WinAPI usable.
Qt is an incredible toolkit. The only problem is that it looks "different" in Gnome, but about a year ago this problem seems to be solved. Qt Creator is one of the highest-quality IDEs - very easy to use, powerful and not getting in the way. Plus as a bonus Qt apps can be easily ported to Windows and MacOS, especially if they aren't using anything outside the Qt toolkit - many apps will simply compile and run with zero changes. Qt includes stuff like XML parsing, sockets, OpenGL etc. so you can probably will never need anything except Qt. The only thing some people don't like about Qt is the need for a preprocessor and duplication of C++ stdlib stuff (like containers, I/O operatuins), which supposedly fragments C++ development. But I actually like this - no need to use use multiple library dependencies, everything is included in Qt SDK, along with great documentation and works out of the box. There are concerns about Qt's future, since it no longer fits in Nokia's strategy. But it's quality definetly exceeds most toolkits like wxwidgets, gtk, mono and many others. Probably because the "boring" stuff like documenting and testing was done by full-time employees.
Oh, and Windows native C++ development is horrible. Just look at how you're supposed to display the standard "open files" dialog and get the selected file names.
Nexus One currently has tons of bugs: - Clock drift (as much as 5 minutes/week!) - WiFI/network switchover. When I leave home, I have to enter airplane mode and turn it back off, or else my 2G/3G data will not work simply because the phone liked my home WiFI so much. - Headphone jack sometimes goes nuts. If you get an incoming call while listening to music, there's no way of predicting if sound will go to headphones or the speaker. Once this resulted in all calls going to headphones, even when they were disconnected. I couldn't hear anything and lost an important call. - Buggy car dock bluetooth, also no way of predicting if it will use the dock's or the phone's speaker. - Ringtones sometimes change randomly. It may be *any* song or the "default" ringtone. - The launcher becomes slow and unresponsive over time, crashes and after that works OK until the next slowdown and crash. - Sometimes the screen locker stops responding. This looks like a touchscreen bug, however holding the power button reveals a menu which does work correctly. So this is not a frozen phone or hardware problem. - The Gingerbread update was awful until 2.3.5 was released. Reboots and slowdowns every two days. 2.3.5 fixed reboots, but the pre-gingerbread bugs are still there.
Tapping icons existed 10 years before the iPhone, as seen on PalmPilot and (later) on Microsoft's Palm-size PC. From what I understand, Apple is unhappy about innovative stuff like the proximity sensor, multi-touch gestures, touch-friendly controls (instead of replicating the desktop UI) etc.
Code Search is the part I'll miss the most. Great for searching code samples (such as using threads in Perl etc) with some context (instead of a one-line snippet) and without junk like Experts-Exchange or unanswered forum posts. I also like the ability to search code inside a library along with third-party projects using this library, great for bugfixing. Google is turning into Bing now. Answering common questions with helper scripts (flight info), and forwarding the user to Wikipedia if there is no predefined script. Except that Bing is doing this because their *real* search engine is a joke.
Actually, Skydrive already has this feature, with right-click and no registration.
Google Drive does have some innovated stuff from Docs - it has awesome realtime collaboration, borrowed from Google Wave. I'd say that if you need several people editing a document at the same time, nothing beats Docs.
The only addition Google made to Docs before rebranding it into Drive is the desktop sync feature and bumping up free storage to 5 gigs. I'd say this is minor compared to existing document editing/viewing/collaboration features, which
a) Dropbox doesn't have;
b) Were steadily developed for at least 5 years.
Chrome collects search engines in "Manage Search Engines...". All you have to do is manually open a search engine and do one search, Chrome will then add it to the list.
I remember the time when IE dominated the web and it was not pretty. Most sites didn't bother testing compatibility with other browsers - when Firefox 1.0 was finally released, a lot of sites didn't work or display correctly. IE6 was synonymous with stagnation (a popup blocker appeared only in Windows XP SP2, 3 years after IE6 was released!). Most feature-rich or banking sites simply installed their own ActiveX controls or used flash because Javascript in IE was so poor.
Futhermore, IE versions for Mac and Windows Mobile worked differently from the desktop version. I'd say it's remarkable that today you can expect 99% websites to work properly on any browser or device - a direct consequence of IE losing marketshare, forcing webmasters to care about compatibility with non-IE browsers.
Although I do admit that IE introduced AJAX before others.
WP7 is even worse than Android - in Android, fart apps are usually buried and don't appear in search. In Windows Phone, I found a completely useless app in the top-45 list, which is sad because the next page is even worse.
let's ignore the fact that there's been practically no marketting and advertising for this brick
Technically, Nokia Lumia isn't yet on sale in the US. And in Europe, Limua phones are heavily promoted - in my area ads for these phones are everywhere, on TV, billboards, radio and mobile phone stores. This is sad because even with this insane amount of promotion they're still having trouble selling the thing.
I've used WP 7.5 on a Samsung Focus and is was even worse than Android. Rebooted at least every 2-3 days! In addition, Android actually has some very useful features, such as playing notifications and ringtones through the loudspeaker even when headphones are connected - extremely helpful if you forgot to unplug the headphones.
Android does however have issues with sound - if headphones are plugged in during an incoming call, unplugging them doesn't switch the phone to speaker.
Probably because U.S. means Unites States while US may be confused with uppercase "us" (as in "we").
Windows Phone got updated, but still not as perfect as Apple's simultaneous updates for all phones.
Pre-7.5 updates were significantly delayed (for several months), 7.5 went much better. But still AT&T Samsung Focus rev1.4 got Mango about a month later and all AT&T Samsung Focus phones didn't get internet sharing - even though it's fully supported by hardware and can be enabled with a simple registry hack! Considering how seriously Windows Phone is behind iOS and Android feature-wise, Microsoft can't afford wasting time on catching up with their competitors.
But still this is much better than Google's "leave updates to manufacturers/carriers" approach.
Nexus One was a nice phone, but still not perfect: /data partition with the possibility to remove them would be much more useful.
- After unlocking the bootloader, you can't lock it back. This may be useful if you've done playing with custom roms and want to sell the phone, or want to secure the phone. An unlocked bootloader allows someone with a USB cable to dump all the data without knowing the unlock pin or password.
- Gingerbread was released late, about two months after Nexus S.
- It has some preinstalled apps taking up space on the system partition - like Facebook and Twitter. These versions are usually outdated and if you install the update, the same app will be installed twice! Installing them on the
- Finally, as people already mentioned, it's not getting ICS.
In addition, the phone has serious limitations, such as a crappy digitizer (no pinch-rotate, onscreen joysticks cannot be on the same line) and too little flash memory so that mandatory updates for Market, Google Music and other system apps take up all the space.
This is Microsoft. Windows development will cost less, but license prices will remain unchanged - all the money saved will go to management bonuses and marketing. And of course upper management will remain in the US.
You do understand that Nokia Siemens Networks makes telco equipment such as antennas and switches? None of which runs Windows, except for (perhaps) monitoring software.
Microsoft was also productive in the early 2000-s. Windows 2000 was a great OS, making NT ready for the desktop, and a major step in finally fixing the constant bluescreens and crashes of the 9x line. Unlike Windows XP, 2000 had no activation crap and had everything needed for everyday tasks. XP just added desktop themes, entertainment apps and Windows Restore. .NET/2003 and the introduction of .NET were also major steps, this probably killed Borland because Borland couldn't create a competitively priced products or offer something better than Visual Studio. VS2005 was also a great IDE, with powerful refactoring tools and a really helpful debugger. Plus, it also introduced the free Express editions.
Visual Studio
It seems that the whole "rewrite longhorn from scratch" thing and the failure of VIsta put Microsoft (at least the Windows team) back a few years and made them more pragmatic, instead technological advances (promises for WinFS, making everything .NET, vector graphics to make UI resolution-independent just to name a few) they're preferring to make GUI tweaks. I'm very interested to see if Windows 8 finally manages to introduce something new.
Okay, found the example in my code archives:
CFileDialog fDlg( TRUE, NULL, NULL,
OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_EXPLORER,
NULL, this );
DWORD MAXFILE = 2562;
fDlg.m_ofn.nMaxFile = MAXFILE;
fDlg.m_ofn.lpstrFile = new wchar_t[MAXFILE];
fDlg.m_ofn.lpstrFile[0] = NULL;
fDlg.m_ofn.lpstrFilter = L"Images\0*.bmp;*.jpg;*.jpeg;*.png;*.tif;*.tiff\0"
L"All files\0*.*\0";
#ifdef NDEBUG //Vista style support // Display the Open dialog box.
fDlg.m_ofn.Flags&= ~OFN_ENABLEHOOK;
#endif
if (fDlg.DoModal()==IDOK){
for (POSITION pos = fDlg.GetStartPosition();pos != NULL;)
{
CString fname= fDlg.GetNextPathName(pos);//here's the filename!
}
}
More or less the same stuff in Qt:
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setNameFilter(trUtf8("Splits (*.000 *.001)"));
QStringList fileNames;
if (dialog.exec())
fileNames = dialog.selectedFiles();//List of files is returned
The WinAPI version required a lot of trial and error to get the input parameters correct. Plus, there's no way of stating "allocate as much memory as required for output", so you have to pre-allocate memory and hope the user doesn't select too many files. This issue turns a "lots of boilerplate code pasted from MSDN" inconvenience into a real problem with no solution except for displaying an error message.
"7500 songs" is just as bad as that Libraries of Congress shit. Some songs last 3-4 minutes, some run for 7-9. Bitrate can also change the total count significantly. What's more, users usually don't know how many songs they have. A better measurement would be a "74-minute CD", but it still depends on the bitrate.
Thanks for sharing the info! Qt signals also have problems with passing non-Qt classes. If I recall correctly, in order for passing non-Qt classes, they have to be inherited from QObject, and have the QOBJECT macro defined in the class definition; also some code is required to declare the class at runtime (qRegisterMetaType). It's strange that Trolltech didn't use C++ templates instead of moc when they developed Qt4 and broke compatibility with earlier Qt versions.
But moc is still required, so Qt compilation may be tricky if you're using a non-standard toolchain (Intel's C++ compiler for example) and not using qmake to build the project.
GTK2 and GTK1.2 could run on the same machine with no problems. I think it's the same with GTK2 and GTK3, after all there's a huge library of GTK2 apps which aren't ported to GTK3.
Just a quick example: to create a thread in Boost, I need just one line of code, with relevant and understandable. A mutex takes one line (no parameters required) and a mutex locker is also a one-liner. Now in Windows, this stuff requires a lot more boilerplate code, with pointers and illogical function names such as WaitForSingleObject to lock a mutex. .NET Framework, Java etc) it's much more difficult to use and writing an app in WinAPI feels like a waste of time.
I've created a simple image-viewing UI in win32 api and it took about 600 lines of code, 400 of which are related to scrollbars. In Qt the same application took about 50 lines of code and I didn't even have to write a single line of code for the scrollbars to work.
Another thing which kills me is poorly documented function parameters, some of which are even conflicting! It took me about 2 hours just to make a progress bar work.
If you learned Win32 API properly and have used it a lot, you probably are OK with it. But compared to modern toolkits/frameworks (Qt, Boost,
Technically I was probably wrong - although some stuff in WinAPI looks like C++, such as
- pre-defined pointers (LPCWSTR etc.) are close to C++ references
- structs are used far more often than in C
- less memory tricks, such as pointer arithmetic
And MFC is C++, but most developers give up on using this monster, and instead implement their own C++ wrappers for making WinAPI usable.
Qt is an incredible toolkit. The only problem is that it looks "different" in Gnome, but about a year ago this problem seems to be solved.
Qt Creator is one of the highest-quality IDEs - very easy to use, powerful and not getting in the way.
Plus as a bonus Qt apps can be easily ported to Windows and MacOS, especially if they aren't using anything outside the Qt toolkit - many apps will simply compile and run with zero changes. Qt includes stuff like XML parsing, sockets, OpenGL etc. so you can probably will never need anything except Qt.
The only thing some people don't like about Qt is the need for a preprocessor and duplication of C++ stdlib stuff (like containers, I/O operatuins), which supposedly fragments C++ development. But I actually like this - no need to use use multiple library dependencies, everything is included in Qt SDK, along with great documentation and works out of the box.
There are concerns about Qt's future, since it no longer fits in Nokia's strategy. But it's quality definetly exceeds most toolkits like wxwidgets, gtk, mono and many others. Probably because the "boring" stuff like documenting and testing was done by full-time employees.
Oh, and Windows native C++ development is horrible. Just look at how you're supposed to display the standard "open files" dialog and get the selected file names.
Hehe, Nexus One is actually made by HTC. Samsung made Nexus S and the Galaxy Nexus :)
Nexus One currently has tons of bugs:
- Clock drift (as much as 5 minutes/week!)
- WiFI/network switchover. When I leave home, I have to enter airplane mode and turn it back off, or else my 2G/3G data will not work simply because the phone liked my home WiFI so much.
- Headphone jack sometimes goes nuts. If you get an incoming call while listening to music, there's no way of predicting if sound will go to headphones or the speaker. Once this resulted in all calls going to headphones, even when they were disconnected. I couldn't hear anything and lost an important call.
- Buggy car dock bluetooth, also no way of predicting if it will use the dock's or the phone's speaker.
- Ringtones sometimes change randomly. It may be *any* song or the "default" ringtone.
- The launcher becomes slow and unresponsive over time, crashes and after that works OK until the next slowdown and crash.
- Sometimes the screen locker stops responding. This looks like a touchscreen bug, however holding the power button reveals a menu which does work correctly. So this is not a frozen phone or hardware problem.
- The Gingerbread update was awful until 2.3.5 was released. Reboots and slowdowns every two days. 2.3.5 fixed reboots, but the pre-gingerbread bugs are still there.
This is just a few bugs!
Tapping icons existed 10 years before the iPhone, as seen on PalmPilot and (later) on Microsoft's Palm-size PC. From what I understand, Apple is unhappy about innovative stuff like the proximity sensor, multi-touch gestures, touch-friendly controls (instead of replicating the desktop UI) etc.
Code Search is the part I'll miss the most. Great for searching code samples (such as using threads in Perl etc) with some context (instead of a one-line snippet) and without junk like Experts-Exchange or unanswered forum posts. I also like the ability to search code inside a library along with third-party projects using this library, great for bugfixing.
Google is turning into Bing now. Answering common questions with helper scripts (flight info), and forwarding the user to Wikipedia if there is no predefined script. Except that Bing is doing this because their *real* search engine is a joke.
This rule is from MTS' fixed network ToS, and not the mobile phone disivion.