My Thoughts on Sutter’s “C++ and Beyond 2011″

Around a month ago, Herb Sutter gave a talk on why C++ is once more gaining relevance in the world of programming, and how after a decade of neglect and abandonment, it is set to pave the way into the future. I downloaded it a while ago and finally had a chance to watch it last night; the talk itself is most-excellent and is around 40 minutes long, you can stream it online or download it in a higher-resolution format on Channel 9. Or click below to watch:

As someone that’s been using both C/C++ and .NET extensively over the past years, I found there was one very important point that Sutter glanced on, danced around, and did everything short of actually naming in his talk and it’s that if you’re doing anything remotely intricate or complicated, leaky abstractions in managed languages will bite you in the ass, and end up lowering your productivity, some times (and if what you’re working on is truly complicated, often times) to a point where you’d have been more productive using C or C++ in the first place.

The concept of leaky abstractions isn’t anything new and I’m hardly the first to point out how it can turn a knight in shining armor into a harbinger of doom and destruction. It’s the number one problem fundamentally present in almost any framework, but even more so in managed languages where the framework is all you have, and you’re not allowed to side-step it and build your own foundations to work with (p/invoke and interop aside). But lately it’s becoming more and more of a problem as the “push” for innovation that Sutter speaks of has become a fundamental requirement in just about all corners of the industry.

Continue reading

Google Chrome Form QuickSubmit

As a long time user of Google Chrome (since the very first day of its release, as a matter of fact), I’ve quickly grown accustomed to some of the Chrome way of doing things. Before Google Chrome, I used Opera and before that Firefox and Firebird – and only before those, Internet Explorer.

While each of these fine web browsers has its own way doing things, ranging from keyboard shortcuts to tab management and process handling, they all more or less pull these off a bit nicer than Internet Explorer ever code. But the one Internet Explorer feature I can honestly say I miss when using Google Chrome is the ability to submit the form being currently modified/filled-in with a keyboard shortcut, especially if it works even if there are multiple forms on the screen.

Searching about for a cross-platform solution to this problem, perhaps a previously unknown keyboard shortcut or else some method of assigning a keyboard shortcut that would let Google Chrome intelligently submit the current form via a keyboard shortcut on both Mac and Windows, it became clear that this feature just doesn’t exist for Chrome. Well, as of yesterday, at any rate…

Continue reading

Open Source, 100% Compatible ln for Windows (and Junction Point library)

We’ve been huge fans of symlinks for forever, and even posted about Windows Vista’s new mklink commandline utility with quite the passion back in 2006 when the ability to create soft-links from the commandline was first added to Windows.

However, there are a few things that have forever irked us about the ln lookalike called mklink.exe:

  • It’s called mklink and not ln. (I mean, you just get can’t get around that fact)
  • The arguments are switched around. `mklink something_doesnt_exist actual_file` is just…….. wrong!
  • By default, mklink will create softlinks and not hardlinks. ln requires the /h flag to create a hardlink.
  • mklink isn’t smart enough to distinguish between files and folders. You need explicitly tell it via the commandline.
  • Even then, mklink has two different switches depending on the type of directory link you want. /D for softlink’d directories, and /J for hardlink’d directories.
  • mklink can’t be used outside of cmd.exe (such as in PowerShell). (Hat tip: Jason)
  • And, of course,  mklink isn’t open source.

So we made our own.

Continue reading

Contributing to the Open Source Community

A week ago, we tweeted a promise to contribute more to the open source community. As a Research & Development organization, there’s a lot of random code samples, small libraries, forks/modifications of popular scripts, and more that’s just lying around, begging to be open sourced.

While a lot of these may prove to have little to no value to anyone, given how easy it is to make things open source thanks to github, there’s no real drawback to throwing them out there for anyone that may benefit at some unknown point in the future.

We have a couple of hundred miniature projects, test code samples, and other such content across a number of drives to sort through, and whenever we find something useful, this is our promise to the community to share it. To that end, we’ve set up a github repository at http://github.com/neosmart where we’ll be uploading the code, and from where you’re all more than welcome to check it out and contribute back.

Continue reading

EasyLDR and EasyBCD 2.0′s New XP Support

At NeoSmart Technologies, we’re not just about making cool software that makes your life easier – we also like to share the how and why behind our work, to make things all the more beneficial for one and all. While the EasyBCD documentation has been out of date for a while now (we’ve been too busy working on the code and support), we’re making a real effort to bring things up to date.

We’d previously finished the tutorials for dual-booting Windows 7 with Windows XP and with Ubuntu 10 (complete with picture-by-picture steps!), but now we’re getting started on the real meat: the technical details of just what exactly is going on behind the scenes. The normal OS boot process is one of the most complicated parts of an operating system with just one OS in the mix – with multiple operating systems, each that works in its own way, things get that much more complicated, and it’s always good to have a nice, illustrated guide to refer to.

Continue reading

Intel C++ Compiler 12??

Microsoft Visual Studio 2010 has been officially released for 3 months now (to the day), and to be pedantic, it has also been available in beta form since October 2008. Its bugs not withstanding, Visual Studio 2010 been a pretty successful hit. Besides the huge improvements to the .NET language and platform, big on the list of features for C++ developers is basic support for C++0x (the next standard version of C++, with lots of new & revolutionary features) and plenty of IDE enhancements. Intel’s C++ Compiler is the industry-standard with regards to performance and optimizations, still doesn’t support Visual Studio 2010 or C++0x.

As numerous postings on the Intel forums indicate, a plethora of users are in pressing need of an update to the Intel C++ Compiler. Questions on the matter are brushed-off, with short and rather-useless replies such as:

“This question has been discussed several times recently. The first such integration would come in a beta version of icc 12.0, which hasn’t yet been announced.”

Continue reading

The Woes of Windows Vista/7 Mapped Network Drives

One of the biggest, bestest, and most-hyped features of Windows Vista (according to Microsoft, that is) was the brand spanking new TCP/IP networking stack. Ask us, it sucks. Network performance hasn’t improved any over the ancient stack used in XP (nor should it – it’s not like there’s anything new in IPv4) though it does add better IPv6 support out-of-the-box and ships with some even more functionality in Windows 7. But more importantly, Microsoft threw out decades of testing and quality assurance work on the existing Networking Stack and replaced it with something rather questionable.

We’ll be following up some more on this topic from a technical side later in another article, but for now, an example that most of you are sure to have come across if you’ve ever tried to map network drives before:

This popup is shown at system startup if you have any mapped network drives to UNC shares which are not protected with a username and password. If you map a network destination that does require authentication, Windows will map the drive OK. To further complicate matters: this message is shown only when you startup from a cold boot! If you restart your PC (vs shutdown and powerup), it won’t appear.

Resolving the issue is straight-forward enough: just double-click on the network drive in My Computer and it’ll automatically, instantly, and silently connect. Which makes one wonder why Windows couldn’t connect in the first place.

Good question.

Continue reading

On the matter of Firefox and memory leaks…

Recently our original article/rant on Firefox’s legendary memory abuse has seen an increase in comments and views; and I had intended to post the following comment in light of the article’s rebirth and the ensuing discussions in the comments.

The reply turned out to be longer than I’d originally intended, so here it is as its own post.

I’ll try to be as objective as possible in this reply:

The most important thing for frustrated end users to keep in mind is that Mozilla/Firefox cannot be held responsible for cases where incorrectly written plugins and/or extensions cause Firefox to abuse system memory – that’s the trade-off between empowering developers and keeping the code squeaky clean.

Most of the cases reported are indeed caused by one or more extensions or plugins gone awry, doing something they shouldn’t be doing, or something they don’t know how to do properly. Some of the most popular plugins for Firefox are notorious for their memory leaks; but few users realize just how dangerous they can be, and that the Firefox devs cannot really do anything about it.

At the same time, there can be no doubt that Firefox has some memory leaks in the codebase itself. They’re clearly not easily reproducible and they don’t happen very readily nor often enough because the developers have clearly spared no effort in their attempts to address this problem for once and for all. But they’re there, nevertheless.

Continue reading

What the TechCrunch Tablet Should Really Look Like

Michael Arrington is understandably pretty excited about how the TechCrunch Tablet is shaping up so far, but to use it seems they’re going about it the wrong way.

For a device that’s supposed to do Firefox, Skype and not much more, an underpowered PC with a touchscreen isn’t going to accomplish much. For one thing, Firefox is a huge performance drain and a memory hog to boot that underpowered hardware (even on-par with an Eee) simply won’t support and for another, there’s no way to get PC hardware down to the sub-$200 price range.

What TechCrunch wants – whether they know it or not – is an oversized PDA, not an underpowered PC. And it’s not just a question of semantics, it’s a question of foundations and principles – and it makes a huge difference in terms of end-user experience and the bottom line.

For the functionality that TechCrunch is trying to pack into this opensource, mass-market web gadget, there’s nothing that wouldn’t work better, faster, and cheaper on specialized hardware rather than on generic PC components.

Continue reading

Request_URI For IIS Updated with ISAPI_Rewrite 3 Support

Request_URI for IIS, NeoSmart Technologies’ compatibility toolkit for IIS on Windows, has been updated to version 1.1, with support for Helicon’s ISAPI_Rewrite 3.x

With this update the installation process has been simplified somewhat, in particular the need modify HTTPD.INI to set the server variables has been eliminated – you just need to install ISAPI_Rewrite 3, configure php.ini to load up request_uri.inc, and you’re set.

Request_URI for Windows 1.1 retains backwards compatibility with ISAPI_Rewrite 2.x for those of you who’d rather not switch to the new (and much-improved) version 3.x.

Continue reading