Subject: General Tech | February 1, 2015 - 11:56 PM | Scott Michaud
Tagged: x-plane, programming, development
“The Hacks of Life” is a blog from some developers at Laminar Research, which created the X-Plane franchise. Ben Supnik, the company's graphics lead, wrote an interesting and fairly lengthy blog post about optimizing for software performance, and it applies to more than just games.
In software development, the typical concept is: “write it, then profile it and fix what needs it”. This comes from the fear that developers will spend the majority of their time fixing the wrong problems. A profiler can tell you the chunks of code that hogs resources when you experience stutter, hitches, or hangs. They can also tell you how much of your overall performance is being used by specific parts of your application. These places have the most room for optimization, which allows you to budget more time for them. If you squeeze even a 100x performance increase out of code that runs for a tiny fraction of a millisecond per frame, then you spent all that time recovering at most a tiny fraction of a millisecond. All of that time could have been spent even doubling the performance of an 8ms effect, saving you 4 whole milliseconds per frame, which is the difference between 50 FPS and 60 FPS.
What I get from Ben's post is that, while not all of your code needs to run well, you cannot skip the design phase. The profiler can end up being an excuse to charge blindly into development. In a construction analogy, there is a difference between creating blueprints for your entire life, and building a house without any plans -- but that's okay, we can cut holes in the drywall if we need more windows and doors.
It's an interesting post, and is the eventual result of mantras being taken too literally.
Subject: General Tech | June 25, 2013 - 07:09 PM | Scott Michaud
Tagged: programming, gaming
There is a popular misconception that a good programmer is defined by their guru-status with a language. A lot of the time, however, a good programmer has a great understanding of algorithms and general problem solving skills. Some optimizations escape, even from the category of outside-the-box solutions, into the bin of dirty hacks. The final issue of Game Developer magazine takes a moment to salute some of the dirtiest found in games.
"(s)elf-exploitation", last story on the first page of GamaSutra's version (contributed by Game Developer Magazine staff), was the most entertaining, at least, in my opinion. The current lead engine programmer for Insomniac Games, Jonathan Garrett, outlined the process they underwent to update their game which shipped without an update system.
A similar exploit in Legend of Zelda: Twilight Princess save games was the first homebrew for Wii.
Image Credit: Giant Bomb
For those unfamiliar with programming: this hack is foundation of basically every worm which enters the system of those who fail to apply appropriate "Critical" or "Important" Windows Updates.
As it turns out, the End User License Agreement for Ratchet and Clank: Up Your Arsenal was refreshed from servers, owned by either Sony or Insomniac, and stored in a static memory location. This remotely served data was just a few memory items away from code which is executed in response to certain network traffic.
The team fed a much longer EULA than originally intended to overwrite all of the memory up to and including the network code. Then, when the server poked the PS2 with a specific network packet, the game would jump to the place in memory which handles that traffic... which is now whatever code Insomniac tagged at the end of their obese EULA. Now that they shoved code into a place in memory that they knew the PS2 would happen to wander through, that code loaded the patch data and fixed the damage they to the gap in memory between the EULA and the network code.
And that, dear readers, is why AMD implemented hardware support for Data Execution Prevention (DEP) found in Windows XP and later.
Although, I wonder, did they need to break the EULA when they did this? Food for thought.
Subject: General Tech | March 28, 2013 - 12:54 AM | Tim Verry
Tagged: webgl 1.0.2, webgl, web browser, tegra, programming
The Khronos Group recently announced that the WebGL 1.0.1 specification is compliant across mobile and desktop systems on a number of platforms. Chrome 25 and Firefox 19 support WebGL 1.0.1 on Windows, Mac, and Linux operating systems. Further, mobile devices with Tegra SoCs can tap into WebGL using a WebGL-enhanced Android browser.
Additionally, the WebGL 1.0.2 specification and its extensions have been submitted for ratification, and is expected to be formally released in April. According to the press release, the following features are being rolled into the WebGL 1.0.2 specification:
- "adds many clarifications for specification behavioral precision
- mandates support for certain combinations of framebuffer formats, to ease developer adoption;
- clarifies interactions with the encompassing HTML5 platform, including the browser compositor and high-DPI displays;
- dramatically increases the number of conformance tests to roughly 21,000 to improve both the breadth and depth of test coverage - thanks principally to work by Gregg Tavares at Google and the OpenGL ES working group."
Khronos President and NVIDIA Vice President of Mobile Content Neil Trevett stated that "The close cooperation between browser and silicon vendors to ensure the GPU is being reliably and securely exposed to the Web is ongoing proof that Khronos is a highly productive forum to evolve this vital Web standard." Meanwhile, WebGL Working group chair Ken Russell indicated that WebGL 1.0.2 is "a major milestone in bringing the power of the GPU to the Web.”
Although there are security concerns to consider, WebGL does open up some interesting opportunities for new web services. The full press release can be found here.
Subject: General Tech | October 6, 2012 - 05:16 PM | Tim Verry
Tagged: Raspberry Pi, programming, IDE, adafruit
The popular, if elusive, Raspberry Pi had the original intent to be a cheap computer capable of introducing kids to programming. In furthering that goal, Adafruit has been working on a programming IDE (Integrated Development Environment) with a simple interface designed to be accessible to beginners. The so-called "WebIDE" is installed on the Raspberry Pi and then can be run on any other networked computers from within a web browser. It syncs your programming code with Github competitor Bitbucket as well.
The Raspberry Pi WebIDE is currently in alpha and can now be downloaded by the public for those Raspberry Pi users adventurous enough to test it out. Adafruit has put together an installation guide as well as made an install script available to simplify installation. The WbIDE acts like any other programming environment in that you can add and edit files as well as test code on the Raspberry Pi hardware. Hitting "Run" on a program will open up a terminal on the Pi and execute your program, allowing you to develop your code on the hardware it will be used on. Further, it has an automatic update feature for the IDE software itself.
Because of its in-development alpha status, the current release is likely to be somewhat buggy and rough around the edges. Adafruit recommends that only experienced users install it at this time. While there is no ETA on a final release, Adafruit has stated that "it is certainly our intention to get this solid and ready for all users, and we will let everyone know when we think it is at that point."
This definitely seems like a useful piece of software if you picked up a Raspberry Pi to learn programming. You can find the full Raspberry Pi WebIDE guide in PDF form on the Adafruit website.
Subject: General Tech | June 26, 2012 - 09:27 AM | Tim Verry
Tagged: ubuntu, sputnik, software, programming, linux, dell, computing
Dell recently announced that it is turning to an open source Linux OS to craft a developer focused operating system. Enabled by Dell’s incubation program (and accompanying monetary funding), the pilot program – named Project Sputnik – is based on Dell’s XPS13 ultrabook and the Ubuntu 12.04 LTS OS.
The Project Sputnik program will run for six months. Its goal is to create the ideal hardware and software platform for software developers. Currently, that means using Dell’s XPS13 laptop and a customized version of the Ubuntu 12.04 Linux OS. The team behind the initiative are working closely with Canonical (Ubuntu developers) to put together a custom Ubuntu image with stripped down software, custom drivers, and only the software packages that developers want.
The team wants to make it easy for software programmers to get a hold of the programing languages and environments that they need to do their jobs. It will have integration with GitHub for coding projects as well.
In the video below Barton George, Director of Marketing for Dell, talks about the Project Sputnik program and how they hope to craft a laptop aimed directly at developers.
It is an interesting program, and I hope that it does well. You can find more information about Project Sputnik and how you can get involved at the Dell website.
Subject: Editorial, General Tech, Shows and Expos | June 15, 2011 - 05:58 PM | Ryan Shrout
Tagged: programming, microsoft, fusion, c++, amp, AFDS
During this morning's keynote at the AMD Fusion Developer Summit, Microsoft's Herb Sutter went on stage to discuss the problems and solutions involved around programming and developing for multi-processing systems and heterogeneous computing systems in particular. While the problems are definitely something we have discussed before at PC Perspective, the new solution that was showcased was significant.
C++ AMP (accelerated massive parallelism) was announced as a new extension to Visual Studio and the C++ programming language to help developers take advantage of the highly parallel and heterogeneous computing environments of today and the future. The new programming model uses C++ syntax and will be available in the next version of Visual Studio with "bits of it coming later this year." Sorry, no hard release date was given when probed.
Perhaps just as significant is the fact that Microsoft announced the C++ AMP standard would be an open specification and they are going to allow other compilers to integrated support for it. Unlike C# then, C++ AMP has a chance to be a new dominant standard in the programming world as the need for parallel computing expands. While OpenCL was the only option for developers that promised to allow easy utilization of ALL computing power in a computing device, C++ AMP gives users another option with the full weight of Microsoft behind it.
To demonstrate the capability of C++ AMP Microsoft showed a rigid body simulation program that ran on multiple computers and devices from a single executable file and was able to scale in performance from 3 GLOPS on the x86 cores of Llano to 650 GFLOPS on the combined APU power and to 830 GFLOPS with a pair of discrete Radeon HD 5800 GPUs. The same executable file was run on an AMD E-series APU powered tablet and ran at 16 GFLOPS with 16,000 particles. This is the promise of heterogeneous programming languages and is the gateway necessary for consumers and business to truly take advantage of the processors that AMD (and other companies) are building today.
If you want programs other than video transcoding apps to really push the promise of heterogeneous computing, then the announcement of C++ AMP is very, very big news.