X-Men Origins: Wolverine Trailer

By Casey Lynn
Contributing Writer, [GAS]

The new trailer for X-Men Origins: Wolverine premiered this weekend before showings of The Day the Earth Stood Still.  We get a good look at Ryan Reynolds as Deadpool, Liev Shreiber as Sabretooth, and sporting some impressive makeup, Kevin Durand as The Blob.  Of course, I was mostly just thinking, “Oooooh! Gambit!”  (played by Friday Night Lights’ Taylor Kitsch). Get ready for some card-tossing, staff-spinning action!

You can also watch it in high def on the film’s MySpace page.

Synergy shares keyboard and mouse across multiple systems

This morning I read in the Code Project newsletter about Synergy, an open source software package that allows you to share a single keyboard and mouse between multiple workstations (each with their own monitor(s)).  Since I regularly work on three different systems in any given day, and I often find myself using the wrong keyboard while staring at the screen and wondering why no text is showing up, this looked like just the thing for me.

Synergy lets you configure one of the systems as a server (the one to which the keyboard and mouse that you want to share are connected), and any number of other systems as clients.  On the server, you describe where each screen is in relation to all of its neighbors.  Then, as you move the mouse  to the edge of one monitor that borders another, focus shifts to that monitor (and the system attached to it).

Here’s the main configuration panel on Windows:

You install Synergy on every computer involved, and then use this panel to designate the server (as shown above) or client.  On the server, you then click the “Configure…” button:

This dialog is somewhat counter-intuitive.  The first thing you must do is add “Screens” by pressing the “+” button under that listbox.  You must add the server’s name and all of the clients here.

Then, in the bottom section, you start by entering the data in the “0 to 100%” line of edit boxes.  They don’t explain what some of this means:  the percentages refer to how much of that border is adjacent to the other monitor (which allows you to have, for instance, one large monitor with two smaller ones stacked vertically beside it — each might use 50% of the larger screen’s border).  The first dropdown indicates which side (left, right, top, or bottom) of the system selected in the next dropdown is adjacent to the system selected in the last dropdown.  Once you’re done figuring that out, don’t forget to press the “+” sign below it, or it won’t be saved!  Design note:  save everything I type when I press OK — unless I delete it, please.

Notice how you have to define both relationships for every pair of adjacent monitors:  “ninkasi is to the right of enlil”, and “enlil is to the left of ninkasi.”  This lets you specify varying percentages — but if you forget to define both directions, your focus will get trapped in one of the sessions.  Fortunately, all you need to do is terminate that session to restore focus to the server.

Once you have all of the relationships set up, press “Test”.  Then go to each client, run Synergy, enter the server (first time only) and press “Test”.  If you encounter no errors, you’ll be able to move the mouse all the away across all of your monitors.  Try typing into applications on each one — you can even copy/paste between them!  Text or graphics!  Synergy uses TCP/IP to transfer the clipboard, as well as mouse and keyboard events.

I was impressed that this seems to work well on Vista x64, even though it’s a 32-bit executable.  It seamlessly ties my 64-bit systems together with an old 32-bit XP system as well.  It’s supposed to work with OS/X and Unix systems, too — but I haven’t tried those out yet.

Synergy nicely handled the dual monitor configuration on my server system, detecting the right edge as being the right side of my laptop monitor, even though my second monitor is on the left and is configured as primary.

I tried setting up hot keys so I could switch monitors without using the mouse, but this seemed to work very sporadically.  After playing around with it for a while, I managed to render my right parenthesis unusable.  Shift+0 was just a dead key.  Rebooting sorted that, though.  Oh well, reaching for the mouse is still easier than reaching for a different keyboard.

To run for real, press “Start”, which removes the UI and shows a taskbar icon instead.  You can also configure AutoStart from the button on the main panel.  Starting on login worked well for me, but starting on system startup didn’t seem to take (on Vista x64).  That means, of course, that I still have to keep my other keyboards handy in order to login.

I also had trouble connecting a client that had the Cisco VPN client running, even though I could map shared drives on that system.  In fact, if the workstation with the active VPN had any drive on another workstation mapped, I couldn’t connect that workstation, either.  However, if I got all systems connected before starting the VPN client, all worked well.  So, my daily routine will be to login to the server system first, then login to each of my clients, then start the VPN, then play Evil Genius all day.

MUWAHAHAHA!

[Via MUO]



The 2000-Year-Old Computer

In the following video, Curator Michael Wright presents his reconstruction of the Antikythera mechanism, an ancient Greek clockwork machine that was used more than 2000 years ago to compute time as well as the movement of celestial bodies. The device was discovered in a shipwreck back in 1901 near the island of Antikythera and took more than a century to decipher. Check it out:

[Via Neatorama]

Befriend a Geek this Christmas

By Miss Cellania
Contributing Writer, [GAS]

This is obviously a case of preaching to the choir, but you might want to send this to your friends people you know family members.

You can help! Check out Befriend A Geek.

This Christmas over 1 million geeks around the globe will sit lonely in their bedrooms, misunderstood and ignored by a cruel world outside. Without “real” friends, they languish unloved in basements, offices and box rooms, hoping without hope for a better life.

[via b3ta]

Tequila Is Perfect for Making…Diamonds?

By Jimmy Rogers
Contributing Writer, [GAS]

Of all the liquids out there, tequila is one that has some interesting properties.  Not the least of these properties is the power to get you mightily drunk.  What you might not have known is that it can make some mighty fine jewelry as well.  This according to scientists at the National Autonomous University of Mexico.

“To dissipate any doubts, one morning on the way to the lab I bought a pocket-size bottle of cheap white tequila and we did some tests,” said Luis Miguel Apátiga, a researcher at the University.  It turns out that while the raw components of Tequila, ethanol and water, are useful in creating diamonds, the complex combination of carbon, hydrogen, and oxygen is perfect for creating a unique type of diamond.

The beverage was heated until it became a gas, which broke down its molecular structure. The fluid was then allowed to cool, leaving behind diamonds free of impurities.  Namely, nano-sized spherical diamonds.  While these diamonds may seem a bit pointless, there are certainly many industrial uses for diamonds, especially for cutting hard materials.

What a crazy world we live in!

[PhysOrg via io9] [Image from AllPosters]

Google Native Client: web deluxe, or ActiveX redux?

Throughout the brief history of the web, we’ve seen various attempts to make the browsing experience more interactive:  Java applets, JavaScript (and AJAX techniques), ActiveX, Flash, and Silverlight to name a few.  All of the above except for ActiveX achieve a certain level of security from malicious code through the use of runtime-interpreted languages.  The interpreter layer helps to assure security by not providing access to certain types of operations.

An ActiveX control, on the other hand, is native executable code — so it can do anything you can write an executable to do.  That includes access to the local file system and other resources to which the current user has permissions.  Thus, if you install an ActiveX control from an untrusted source, who knows what you’re getting yourself into?  Soon after the release of ActiveX, one developer famously put up a page on the web (I can’t find it now) that would reboot your system without asking — just to demonstrate the security vulnerabilities inherent in the design.  Not long after that, Microsoft added a security feature to Internet Explorer to ask you before loading any ActiveX controls.

The vulnerabilities associated with ActiveX put most web aficionados off the idea of embedding native code in the browser, even though it naturally performs much better than an interpreted language (although recent improvements in JavaScript performance mitigate that somewhat).  But now Google is reopening the possibility of running native code in the browser, in order to provide a richer Internet experience.  Unlike ActiveX, this technology (appropriately named Native Client) is designed to run in many different browsers (Firefox, Safari, Opera, and Chrome — note no IE), and across various client platforms (Linux, OS/X, and Windows are already supported on x86).

Handling the security issues

Chad Perrin of TechRepublic recently posted his concerns about the security of Native Client.  Apparently, when Native Client loads an executable, it decompiles it to insure that the code follows certain “structural criteria” and doesn’t perform any prohibited action, like creating files on the local file system or accessing the network.  Google admits that this security model presents some challenges.  It seems to me it would be next to impossible to prevent all forms of attack — but hey, Google employs some pretty smart people.  I just hope they aren’t misguided on this.

Google’s Native Client team wants your help in testing to see if you can break their security mechanisms.

Taking it for a spin

To try it out, you must first have Python 2.4 or 2.5 installed on your system (it’s not directly used by Native Client, but it is used for the build and test environments).  Download the software, and follow the build instructions.

Just like ActiveX controls, a Native Client executable can be run within a stand-alone application, or within a web page (if you install the Native Client plugin for your browser).  The tests provided in the download offer both options.  Here’s one of my favorite programs (Conway’s Life simulation) running as a stand-alone app on Windows XP:

And here it is inside Firefox:

The same executable (life.nexe on Windows) is used in both cases — it just uses a different loader in each (a stand-alone executable or a browser plugin).  This example runs very quickly.  You can use the mouse to add cells wherever you click.  I could watch this all day.

The API Reference for Native Client can be found here.  I haven’t read through all of it yet.  The API is written in C++.  I like the fact that it’s cross-platform, but I presume that the executables have to be compiled for each operating system.  Judging from the Python code in the stand-alone loader, I’m guessing that the browser plugin’s loader will automatically look for the platform-correct executable on the host system (UPDATE: Sven corrected my assumption – the .nexe’s generated from the compilation are platform-independent).  But I haven’t tried creating any Native Client modules of my own yet.

This technology is designed to handle processing loads that are deemed too onerous for pure JavaScript, or a combination of JavaScript and server-side processing.  One example would be image editing, which would be quite difficult to do in pure JavaScript (even if you can rely on the Canvas object).  But sending commands to the server to modify the image and ship it back to the client gets expensive in a hurry.  The ideal model would be to perform all the image manipulation in the client and then send the final result back to the server (if needed).

What do you think?  Will Native Client finally give us the processing power we’ve always wanted in the web client?  Or will it open too many security vulnerabilities? Will NaCl be worth its salt?