WaitForMultipleObjects and WIN32 events for Linux/OS X/*nix and Read-Write Locks for Windows

As every programmer worth his salt knows, synchronization primitives form the very building blocks of multithreaded programming. Without them, the world as we know it would cease to exist and chaos would reign free and unchecked.

All joking aside, synchronization objects such as mutexes and semaphores are essential to safe multithreading and are found on just about any platform under the sun. Mutexes and semaphores alike have one purpose: to keep different threads from messing around with bits and bytes at the same time another thread is, keeping your code free of segfaults and memory access violations alike. But that’s about where the similarities between the synchronization primitives on different platforms end.

POSIX-compliant operating systems with pthreads offer additional really neat synchronization primitives not found on Windows, such as condition variables and read-write locks (the latter is now available on Windows Vista+). And Windows programmers have at their disposal automatic and manual reset events, which make designing certain types of multithreaded software incredibly easy, abstracting away much of the hard-core synchronization logic that lies beneath the hood.

Continue reading

Welcome to EasyBCD 2.0!

Hello and welcome to EasyBCD 2.0!!

It’s rather hard to believe, but EasyBCD 1.7.2 has been out for over 2 years now, and we’ve been working on Version 2.0 ever since. In that time, a lot has happened. Windows 7 has shipped, ext4fs is the new cool kid on the Linux block, GRUB2 is finally seeing some adoption, VHDs are the new wow, and everyone and their grandmother want a dual-boot between Windows 7 and Windows XP.

Worry not, we haven’t been sitting on our (not-so-proverbial) behinds this whole time. In fact, the entire NeoSmart team – developers, supporters, testers, and all – have been working around the clock to make EasyBCD 2.0 the biggest, coolest, greatest, and awesomest thing ever since the invention of the MBR. And now, over a 150 beta builds later and 2 years in the making, we’re super-pleased to introduce you to EasyBCD 2.0. It’s so incredibly overhauled and improved, so stuffed-to-the-brim with features, so much of a true one-click dual-boot experince, so customizable, so powerful, and so EASY that it took a lot of self-restraint to keep from calling it EasyBCD 10.0!

What’s new, you ask? We’ll get to it. But let’s just first give you the download link, because we know you just can’t wait to get your grubby, geeky paws on it ASAP:

Download EasyBCD 2.0.1 (1337 KiB)

(Yes, it really is 1337 kibibytes in size. And, no, we didn’t do it on purpose. We’re just übercool that way!)

Continue reading

Does it GTK/QT/Win32 Really Matter for Chrome?

128px-GoogleChromeLogo.pngA recent article on OSNews highlights the changes expected to come in Google’s Chrome 2.0 for Windows and the progress being made on the Linux and OS X fronts for Google’s new browser.

In the article, Ben Goodger, lead Chrome UI developer, states

[Google avoids] cross platform UI toolkits because while they may offer what superficially appears to be a quick path to native looking UI on a variety of target platforms, once you go a bit deeper it turns out to be a bit more problematic.” [... Your applications end up] speaking with a foreign accent.

But there’s something we’re not getting here. Obviously given enough brilliant programmers and a good team lead to keep the different codebases in sync, going with native APIs is the better approach. But the reasons Goodger is offering aren’t very convincing.

Continue reading

Shipping Seven is a Fraud.

A blog titled Shipping Seven has gotten a lot of traffic recently for their article about Windows 7 and the MinWin kernel – namely, how they’re actually one and the same. The argument offered by “Soma” is that Windows Vista’s kernel (which is what Windows 7 will be built on) is MinWin ad that it’s already on every Vista desktop out there.

Whether or not MinWin is the very same kernel that went into Vista or not is officially unknown at the moment; but what we do know is that Shipping Seven is either one huge fake, or else that the Windows core programmers at Microsoft are so stupid that they don’t know the first thing about coding, kernels, operating systems and compilers.

The post at Shipping Seven is littered from beginning to end with fallacies, lies, and incorrect deductions that anyone with even the most basic coding skills would know better than to ever post, especially not when attempting to pass it off as the work of some of the more talented coders out there.

Continue reading

Asus: Linux, Whether You Need it Or Not

It looks like Asus is going to be shipping all its motherboards from here on out with Linux built right in, as part of their “Express Gate” initiative. Express Gate is a custom Linux distribution (Splashtop Linux) installed to a Flash ROM that’s a part of the motherboard. With Express Gate, Asus users have an option of booting from that built-in ROM chip to a Linux-based desktop, with an average boot time of around 5 seconds or so.

The problem with Express Gate isn’t that it’s Linux nor that it’s there – it’s the rather more-mysterious question of why it’s there in the first place. If ASUS had thought to make use of this Linux distribution to provide data recovery & diagnostics services, offer advanced BIOS configuration and updating options, or one of the infinite other creative ideas that one can manage with a light and fully-configurable OS that ships embedded with the motherboard, perhaps then we could see a use for it.

Continue reading

Avoid notebook sleep issues with a few easy steps

If you’re a notebook user, chances are you’ve encountered an issue with getting your computer to go to sleep peacefully. Something is either keeping it from drifting off to the land of 0′s and 1′s, or it can’t stay asleep, the hard drive just keeps tossing and turning and you open your bag to find a notebook so hot you could cook an egg on it.

What are the most common causes of notebook sleep issues?

  • A process running on the system does not allow the system to enter sleep mode.
  • A hardware interrupt, such as some peripheral devices for example.
  • An unstable driver which does not properly support sleep states or is just buggy.

I’ve owned several notebooks over the years, and almost every one of them have had an issue with sleep mode in one way or another, and over time I’ve learned a certain "practice" which ensures that sleep mode generally works when I close the lid of my computer…

Continue reading

Nobody cares what platform you use. Period.

One of the most common things you’ll see on any technology based internet forum (I could name many, but why bother, I’m sure you all have your dungeons, caves, hiding spots, and water coolers that you hang out at), is a mammoth an ugly behemoth-sized cult that’s following reality distortion field religion behind every platform on the face of the planet. Who really knows why?

Continue reading

Gutsy Gibbon and Really Slow Internet

Last month, Canonical Ltd. released the newest update to their extremely popular Ubuntu: Ubuntu Gutsy Gibbon (7.10)… But it hasn’t been all fun and games, as thousands of irate users will tell you… If you search the web, the blogosphere, usenet, and the Ubuntu Support Forums for slow internet problems, you’ll get more than you ever bargained for. Ubuntu 7.10′s networking stack is broken, make no mistake about it.

The symptoms include incredibly-slow internet access, inability to access certain domains, slow logon times, slow application launch times (under GNOME), and so on and so forth. There hasn’t been any official acknowledgement, but the consensus is that it’s a bug that’s re-surfaced from Ubuntu Edgy Eft (version 6.10).

In short, internet on Ubuntu is useless. There are multiple guides across the net with the solution along with an “explanation” we find to be inadequate and fundamentally flawed. The solution is to disable anything that even smells remotely of IPv6. Remove it from the network settings, remove the definitions from the hosts file, configure your favorite web browser to pretend it doesn’t exist, and you’ll get your internet back.

Continue reading

Proper Shell Scripting on Windows Servers with Perl

  • Fact: Shell scripting is a must for any serious IT admin managing a server. From automating backups to checking logs and keeping server performance and load in check, scripting is a must.
  • Fact: Shell scripting on Windows sucks. ((Hopefully Monad (Microsoft Power Shell) will provide a solution, but so far the results are mixed; and it’s not popular enough to be considered a viable substitute at the moment.))
  • Fact: Shell scripting on Linux and other *nix operating systems is powerful, well-documented, and quite straight-forward.

Most people take a look at these three facts, and instantly come to a conclusion.. the wrong conclusion: you can’t properly manage a Windows server because it’s inherently lacking in the shell scripting department.

Continue reading

Complete .NET Portability with Wine & Mono?

Mono is the open-source version of Microsoft’s .NET Framework. It implements most of the backend framework features, but unfortunately, falls flat on its pretty little face when attempting to display the user interface – which is what desktop apps are all about.

Wine on the other-hand, is a Linux port of (major parts of) Microsoft’s Win32 library – the core dependencies of the Windows development libraries, and more importantly, the win32 interface elements. With Wine, you can run many traditional C++ win32 executables on Linux, with certain limitations.

Mono’s biggest stumbling block is the GUI and .NET programs that use P/Invoke to call native non-managed win32 dlls – Mono is a pure .NET environment, and can’t handle them. But from the description above, that’s exactly what WINE excel at… So can’t we use WINE + Mono to make just about any .NET program run on Linux fresh out of the .NET compiler?

Unfortunately, the answer is no. Back when the Mono project was first starting out, the Mono development team considered using WINE to implement the System.Windows.Forms namespace of the .NET Framework (which is practically 100% native C++ unmanaged win32 code in .NET wrappers). But they made the right choice in deciding to not take the easy way and go that route, leaving the integrity of the Mono project intact and focusing on true cross-platform user interface libraries instead (the GTK# is now the UI Library of choice for cross-platform .NET applications).

Continue reading