Next Event

Friday, October 24, 2008, 07:00 PM: Life Extension with Jerry Emanuelson

Jerry will be talking about his 25+ year experience with life extension treatments, including hormone injections, his longevity doctor, what treatments to ask a doctor for, how to find and guide a doctor, an interesting example of the 'medical priesthood vs. empowered patient' conflict as more healthcare treatments are about prevention/enhancement, getting his DNA scanned with deCODEme and opensourcing his genome on the SNPedia.com, and more.

More...

Developers

QtConcurrent

The QtConcurrent namespace provides high-level APIs that make it possible to write multi-threaded programs without using low-level threading primitives such as mutexes, read-write locks, wait conditions, or semaphores. Programs written with QtConcurrent automaticallly adjust the number of threads used according to the number of processor cores available. This means that applications written today will continue to scale when deployed on multi-core systems in the future. QtConcurrent includes functional programming style APIs for parallel list prosessing, including a MapReduce and FilterReduce implementation for shared-memory (non-distributed) systems, and classes for managing asynchronous computations in GUI applications:

Read Article - Read Comments (0)More in: Developers

Smart Pointers

Smart pointers are objects which store pointers to dynamically allocated (heap) objects. They behave much like built-in C++ pointers except that they automatically delete the object pointed to at the appropriate time. Smart pointers are particularly useful in the face of exceptions as they ensure proper destruction of dynamically allocated objects. They can also be used to keep track of dynamically allocated objects shared by multiple owners. Conceptually, smart pointers are seen as owning the object pointed to, and thus responsible for deletion of the object when it is no longer needed.

Read Article - Read Comments (0)More in: Developers

Mapping The Atari

Mapping The Atari - Revised Edition By Ian Chadwick The comprehensive sourcebook and memory guide For beginning and veteran programmers of the Atari 400, 800, XL, and XE personal computers.

Read Article - Read Comments (0)More in: Developers

Parallel Processing and Multiprocessing in Python

A number of Python-related libraries exist for the programming of solutions either employing multiple CPUs or multicore CPUs in a symmetric multiprocessing (SMP) or shared memory environment, or potentially huge numbers of computers in a cluster or grid environment. This page seeks to provide references to the different libraries and solutions available.

Read Article - Read Comments (0)More in: Developers

Introduction to Distributed Objects

The Objective-C runtime supports an interprocess messaging solution called “distributed objects.” This mechanism enables a Cocoa application to call an object in a different Cocoa application (or a different thread in the same application). The applications can even be running on different computers on a network. This programming topic describes the Cocoa classes that form the distributed objects system.

Read Article - Read Comments (0)More in: Developers

The Hacker News

From Ycombinator

Read Article - Read Comments (0)More in: Developers

Are Native Threads Worth It?

With the advent of multi-core CPUs concurrency is becoming more important, but is traditional threading the way to go? The problem is that traditional threading is very difficult to get right. I am sure that are some cowboys out there who will respond to that last sentence by saying that “real programmers” don’t have a problem with current threading models. Machismo aside, I have seen many smart, capable programmers write multithreaded code that deadlocks or corrupts data (including one of the aforementioned “real programmers”). Last month, there was an article on InfoQ the provided a good overview of the debate about threading in Ruby.

Read Article - Read Comments (0)More in: Developers

Download GNAT

Since 1995, AdaCore is the driving force behind the development of the GNAT Technology. We are also the leading commercial Ada vendor with GNAT Pro the professional version for commercial software development and GNAT Pro High Integrity Edition, designed specifically for safety-critical development. AdaCore contributes work on the GNAT compiler to the FSF under the auspices of the GCC project.

Read Article - Read Comments (0)More in: Developers

POSIX Threads Programming

In shared memory multiprocessor architectures, such as SMPs, threads can be used to implement parallelism. Historically, hardware vendors have implemented their own proprietary versions of threads, making portability a concern for software developers. For UNIX systems, a standardized C language threads programming interface has been specified by the IEEE POSIX 1003.1c standard. Implementations that adhere to this standard are referred to as POSIX threads, or Pthreads. The tutorial begins with an introduction to concepts, motivations, and design considerations for using Pthreads.

Read Article - Read Comments (0)More in: Developers

Practical lock-free data structures

Through careful design and implementation it's possible to build data structures that are safe for concurrent use without needing to manage locks or block threads. These non-blocking data structures can increase performance by allowing extra concurrency and can improve robustness by avoiding some of the problems caused by priority inversion in local settings, or machine and link failures in distributed systems. The best overall introduction to our non-blocking algorithms is the paper Concurrent programming without locks, currently under submission, which covers our designs for multi-word compare-and-swap, word-based software transactional memory and object-based software transactional memory.

Read Article - Read Comments (0)More in: Developers

Boost C++ Libraries

We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications. The Boost license encourages both commercial and non-commercial use. We aim to establish "existing practice" and provide reference implementations so that Boost libraries are suitable for eventual standardization. Ten Boost libraries are already included in the C++ Standards Committee's Library Technical Report ( TR1) as a step toward becoming part of a future C++ Standard. More Boost libraries are proposed for the upcoming TR2.

Read Article - Read Comments (0)More in: Developers

“Barcelona” Processor Family (Family 10h) Software Development Resources

AMD's tools and libraries enable you to leverage the innovations of the AMD platform to drive optimum performance in your software solutions. Our libraries contain thousands of routines to save you development time and provide you with an easy path to multi-threaded applications. A robust set of tools help you identify opportunities for optimization, emulate different systems for testing, compile AMD-optimized code, and more.

Read Article - Read Comments (0)More in: Developers

The LLVM Compiler Infrastructure

Low Level Virtual Machine (LLVM) is: 1. A compilation strategy 2. A virtual instruction set 3. A compiler infrastructure 4. LLVM does not imply things that you would expect from a high-level virtual machine.

Read Article - Read Comments (0)More in: Developers

http://www.intel.com/cd/software/products/asmo-na/eng/vtune/239144.htm

Intel® VTune™ Performance Analyzer makes application performance tuning easier with a graphical user interface and no recompiles required. It is compiler and language independent so it works with C, C++, Fortran, C#, Java, .NET and more†. Unlike some products that offer only call graph analysis or only a limited set of sampling events, VTune analyzer offers both with an extensive set of tuning events for all the latest Intel® processors. Microsoft Windows Vista*, Windows* XP and Windows Server* support. Visual Studio* 2005 integration. Tune 32 and 64-bit applications. Optimize multi-threaded code with Intel Thread Profiler. Tune Remote Linux Systems from Your Windows Desktop. Supports the latest Intel® quad-core processors.

Read Article - Read Comments (0)More in: Developers

Linus Torvalds on GIT and SCM

The speech Linus Torvalds gave some days ago at Google, basically talking about GIT and Source Control Management. He has really strong opinions. Subversion is pointless. There is no way to do CVS right. Get rid of Perforce. Linus strongly advocates branching and merging as a key practice which will greatly benefit software development. He firmly argues in favor of decentralized repositories. This is how GIT has been designed.

Video, 1 hour 10 minutes

Watch Video - Read Comments (0)More in: Linux, Developers

Threads Considered Harmful

Professor Edward A. Lee from the EECS department of UC Berkeley wrote The Problem With Threads (PDF) last year. In it, he observes that threads remove determinism and open the door to subtle yet deadly bugs, and that while the problems were to some extent manageable on single core systems, threads on multicore systems will magnify the problems out of control. He suggests the only solution is to stop bolting parallelism onto languages and components--instead design new deterministically-composable components and languages.

Read Article - Read Comments (0)More in: Developers

The Hell that is Silicon Valley

The paradise Shockley found in 1956 is now one giant parking lot. San Francisco and Berkeley are great, but they're forty miles away. Silicon Valley proper is soul-crushing suburban sprawl. It has fabulous weather, which makes it significantly better than the soul-crushing sprawl of most other American cities.

Look at Image - Read Comments (0)More in: Developers

Web design 2.0 - it’s all about the resource and its URL

Web 2.0 is about moving from a “web of pages to a web of data“: "A web of data sources, services for exploring and manipulating data, and ways that users can connect them together." This has some important implications for the design of web sites. Users expect to be able to navigate directly from resource to resource. From concept to concept.

Read Article - Read Comments (0)More in: Developers

Concurrent Haskell

Concurrent Haskell extends Haskell 98 with explicit concurrency. The two main concepts underpinning Concurrent Haskell are: * A primitive type MVar α implementing a bounded/single-place asynchronous channel, which is either empty or holds a value of type α. * The ability to spawn a concurrent thread via the forkIO primitive. Built atop this is a collection of useful concurrency and synchronisation abstractions such as unbounded channels, semaphores and sample variables.

Read Article - Read Comments (0)More in: Developers

Mondriaan Memory Protection

The need for flexible, efficient, fine-grained memory protection and sharing has been neglected in modern computing systems. Mondriaan memory protection (MMP) is a fine-grained protection scheme that allows multiple protection domains to flexibly share memory and export protected services. In contrast to earlier page-based systems, MMP allows arbitrary permissions control at the granularity of individual words. We use a compressed permissions table to reduce space overheads and employ two levels of permissions caching to reduce run-time overheads. We implement the MMP hardware in a simulator and modify a version of the Linux 2.4.19 operating system to use it.

Read Article - Read Comments (0)More in: Developers

7 reasons I switched back to PHP after 2 years on Rails

I spent two years trying to make Rails do something it wasn’t meant to do, then realized my old abandoned language (PHP, in my case) would do just fine if approached with my new Rails-gained wisdom.

Read Article - Read Comments (0)More in: Developers

Frankly Speaking: Hard questions needed to save projects

What now? That's the hard question. When an IT project is in trouble, it's easy to ask what went wrong and who's to blame. Easy and popular. And fun, if you're not on the hot seat. But what to do to save the project? That's harder -- a lot harder. Especially when, as with the U.S. Census Bureau's "paperless census" project, it can't be killed and can't be delayed. This month, the Government Accountability Office reported that the bureau's plan to use handheld computers for much of the 2010 census is in trouble. The GAO noted cost overruns and project management issues that it has pointed out for years (see story). But the big problem is a single device: the custom handheld designed to be used by 525,000 "enumerators" temporarily hired to track down the estimated 100 million Americans who won't return their census forms.

Read Article - Read Comments (0)More in: Developers

Valve's Source engine goes multi-core

Multithreading promises to make the next Half-Life episode even better. If the launch of Intel's new quad-core Core 2 Extreme QX6700 processor has made one thing clear, it's that some applications are multithreaded, and others are not. Those that are can look forward to a healthy performance boost jumping to four cores, including near-linear scaling in some cases. Those that are not enjoy no such performance benefits, and may even run slower than on the fastest dual-core chips due to the slightly slower clock speeds of Intel's first quad-core offering. Unfortunately, most of today's game engines are among those applications that aren't effectively multithreaded. A handful can take advantage of additional processor cores, but not in a manner that improves performance substantially. With the megahertz era effectively over and processor makers adding cores rather than cranking up clock speeds, game developers looking to exploit the capabilities of current hardware are faced with a daunting challenge

Read Article - Read Comments (0)More in: Developers

What Beautiful HTML Looks Like

What Beautiful HTML Looks Like

Look at Image - Read Comments (0)More in: Developers

Erlang: A New Way to Program That’s 20 Years Old

Geeks everywhere got excited recently when they heard that SimpleDB might be based on Erlang. Why? Is Erlang the next big thing? Probably not — it’s a 20-year-old language that some programmers find weird. But the model Erlang offers for parallel programming — distributing computing instructions across multiple processors such as are found in multicore computers or clouds of servers linked together — does represent something radically new to many programmers, even though it’s two decades old.

Read Article - Read Comments (0)More in: Developers

The Experimental Concurrent Programming Language (X10)

X10 is an experimental new language currently under development at IBM in collaboration with academic partners. The X10 effort is part of the IBM PERCS project (Productive Easy-to-use Reliable Computer Systems) in the DARPA program on High Productivity Computer Systems. The PERCS project is focused on a hardware-software co-design methodology to integrate advances in chip technology, architecture, operating systems, compilers, programming language and programming tools to deliver new adaptable, scalable systems that will provide an order-of-magnitude improvement in development productivity for parallel applications by 2010.

Read Article - Read Comments (0)More in: Software, Developers, Open Source

The Art and Science of JavaScript

In this tutorial, we'll look at a technique for using CSS [1] and JavaScript [2] to build a first-person-perspective maze, in homage to old-school adventure games like Dungeon Master and Doom.

Read Article - Read Comments (0)More in: Developers

In which, iPhone apps are built

It turns out that creating new GUI iPhone apps is both harder and easier than you expect. Saturday night when the first iPhone UI app proof-of-concept appeared, I was tied up with family. I frantically emailed Mike Rose begging him to get a post out, which, wonderful man that he is, he did. Sunday, I grabbed what time I could, intent on testing out the new developer toolchain produced by Nightwatch and company. In summary: if you can wait for an already-compiled binary toolchain to emerge, do so.

Read Article - Read Comments (0)More in: Developers

Wiimote hack measures vehicle acceleration

There is a lot of technology in the Wii Remotes that we regularly wiggle around. While we were busy aiming for headshots and curveballs, one clever auto enthusiast figured out a way to use the Wii Remote to calculate G-forces and acceleration times.

Read Article - Read Comments (0)More in: Video Games, Developers

Bigtable-like structured storage for Hadoop HDFS

Google's Bigtable, a distributed storage system for structured data, is a very effective mechanism for storing very large amounts of data in a distributed environment. Just as Bigtable leverages the distributed data storage provided by the Google File System, Hbase will provide Bigtable-like capabilities on top of Hadoop.

Read Article - Read Comments (0)More in: Developers

Why Erlang Is Not The (Whole) Answer

When discussing the problems of concurrency and parallelism, remarkably often someone pipes up with "You should just use Erlang!" This is frustrating.

Read Article - Read Comments (0)More in: Developers

NUMA Faq

NUMA stands for Non-Uniform Memory Access. Non-Uniform Memory Access means that it will take longer to access some regions of memory than others. This is due to the fact that some regions of memory are on physically different busses from other regions.

Read Article - Read Comments (0)More in: Developers

Substitution failure is not an error

Substitution failure is not an error (SFINAE) is a principle in the C++ programming language, used when resolving overloaded functions or templates. Confused? Further reason you should never, ever, ever, use overloaded functions or templates.

Read Article - Read Comments (0)More in: Developers

Xisa: Extensible Inductive Shape Analysis

Xisa is an automatic program analysis and verification tool for reasoning about recursive data structures, such as pointer-based lists and trees. The Xisa approach is unique in that it utilizes high-level, program developer-oriented specifications to focus the analysis to properties of interest to the developer. Shape analyses, like Xisa, are particularly important in that they can capture detailed aliasing and structural information that is typically beyond the ability of other static program analyses.

Read Article - Read Comments (0)More in: Developers

Java is becoming the new Cobol

Java, the oldest new programming language around, is falling out of favor with developers. When it comes to developing the increasingly common rich Internet applications, Java is losing ground to Ruby on Rails, PHP, AJAX and other cool new languages. And there are even reports that Microsoft’s .Net, of all things, is pushing Java out of the enterprise. Makes you wonder whether Sun was smart to change its stock-ticker code to JAVA last summer.

Read Article - Read Comments (0)More in: Developers

TopCoder

TopCoder is fast becoming the major league for programming competitions. TopCoder brings members together once a week to compete online (Single Round Match) and twice a year both online and on location (Tournaments).

Read Article - Read Comments (0)More in: Developers

Thrudb - faster, cheaper than SimpleDB

Amazon's recent announcement of SimpleDB generated a lot of buzz in the community - finally, a database service for our virtual infrastructure! Well, not so fast. SimpleDB is a far cry from the usual RDMBS we're all used to, and it's best described as a key-value store (BerkeleyDB, really), or a meta-data storage layer for your S3 objects. If you're curious, Charles Ying and Todd Hoff provide a great overview, as well as a plethora of links for more information on SimpleDB. Document-oriented databases belong to a different paradigm and a realization that a run off the mill RDMBS is not a panacea to every problem. In many applications, all we need is a key lookup, ability to store and index massive amounts of data, and none of the other overhead that is associated with an RDMBS. SimpleDB, RDDB, and CouchDB all belong to this paradigm and offer very similar functionality.

Read Article - Read Comments (0)More in: Developers

Simple DirectMedia Layer

Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of "Civilization: Call To Power." SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX.

Read Article - Read Comments (0)More in: Developers

Can IBM save OpenOffice.org from itself?

IBM is joining OpenOffice.org and creating its own free version called Lotus Symphony, aimed at its enterprise and government customers. "We think that there's a broad-based consensus that some governance and structural changes are in order that would make the OpenOffice project more attractive to others. It's no secret that this has been an issue for us for some time, and we haven't viewed OpenOffice.org as being as healthy as it might be in this respect."

Read Article - Read Comments (0)More in: Developers, Open Source

Computer Science Education: Where Are the Software Engineers of Tomorrow?

It is our view that Computer Science (CS) education is neglecting basic skills, in particular in the areas of programming and formal methods. We consider that the general adoption of Java as a first programming language is in part responsible for this decline. We examine briefly the set of programming skills that should be part of every software professional's repertoire.

Read Article - Read Comments (0)More in: Developers, Education

Parallel Computing in Lisp - Part 3

At the Lightweight Languages Workshop #2 (LL2) in 2002, Todd Proebsting of Microsoft Research gave a presentation titled "Disruptive Programming Language Technologies" (see presentation, view video). In that presentation, he used Clayton Christensen's excellent book The Innovator's Dilemma to illustrate how even entrenched programming languages such as Java and C could lose dominance and market share when confronted with disruptive changes in technology. As part of that presentation, he listed a number of potentially disruptive technologies. One of these was "Concurrent Programming". He speculated that the opportunity for concurrent programming to be a distruptive technology is in that many applications are either explicitly or implicitly concurrent or distributed but are poorly catered for by concurrency features (OS threads, language threads, RPC) in use today. If a language provided superior concurrency capabilities, it could displace more popular languages in specific application areas. Once the "innovator" language assumes prominence in the "niche" area, it would expand further in usage and popularity and potentially displace the more popular languages in other areas as well.

Read Article - Read Comments (0)More in: Developers

Hyper Threading

Everybody loves Eric Raymond. Published as an exercise for the reader.

Look at Image - Read Comments (0)More in: Developers

What every programmer should know about memory

Ulrich Drepper has posted the full text of "What every programmer should know about memory" in PDF format.

PDF, 114 pages

Read Document - Read Comments (0)More in: Developers

Teach Yourself Programming in Ten Years

by Peter Norvig. Why is everyone in such a rush?

Read Article - Read Comments (0)More in: Developers

Usability, Interface Design and Technical Writing

SOMETIMES there is a huge disconnect between the people who make a product and the people who use it. The creator of a Web site may assume too much knowledge on the part of users, leading to confusion. Software designers may not anticipate user behavior that can unintentionally destroy an entire database. Manufacturers can make equipment that inadvertently increases the likelihood of repetitive stress injuries. Enter the usability professional, whose work has recently developed into a solid career track, driven mostly by advancements in technology.

Read Article - Read Comments (0)More in: Developers

Readers question 'dead skills' list

They're coming to the defense of Cobol, ColdFusion and C

Read Article - Read Comments (0)More in: Developers

Parallel Programming, Math, and the Curse of the Algorithm

Adding more processing cores to a CPU should have been a relatively painless evolution of computer technology but it turned out to be a real pain in the ass, programming wise. Why? To understand the problem, we must go back to the very beginning of the computer age, close to a hundred and fifty years ago, when an Englishman named Charles Babbage designed the world’s first general purpose computer, the analytical engine. Babbage was a mathematician and like most mathematicians of his day, he longed for a time when he would be freed from the tedium of performing long calculation sequences. All he wanted was a reasonably fast calculator that could reliably execute mathematical sequences or algorithms. The idea of using a single fast central processor to emulate the behaviors of multiple small parallel processors was the furthest thing from his mind. Indeed, the very first program written for the analytical engine by Babbage’s friend and fellow mathematician, Lady Ada Lovelace, was a table of instructions meant to calculate the Bernoulli numbers.

Read Article - Read Comments (0)More in: Developers

Readers throw other technologies on the pyre

Fortran, LANTastic, Wang systems nominated for inclusion in the dead or dying IT skills list

Read Article - Read Comments (0)More in: Developers

Software Engineering for Internet Applications

by Eve Andersson, Philip Greenspun, and Andrew Grumet MIT Press 2006; ISBN 0262511916;

Read Article - Read Comments (0)More in: Developers

OK, What is Kamaelia?

Lego/K'nex for programmers. For people. For building things. It's about making concurrency on systems easier to use, so easy you forget that you're using it. It's been done once before, spectacularly well, so well many people forget it's there, a key example - unix pipelines. However it's been done in hardware since day 1, since that's how hardware works.

Read Article - Read Comments (0)More in: Developers

Erlang Style Concurrency

It is said that the low hanging fruit is picked early. The field of Computer Science is consistent with this saying. A few smart people quickly figured out what could and could not be computed before computers were even invented. Once the hardware came along the best discoveries of computer science didn't take a long time to follow. Much of what we know about concurrent programming grows on the lower branches. A short recourse to Google during lunch break reveals that almost all important work on concurrency has been done early in Computer Science history.

Read Article - Read Comments (0)More in: Developers

Blue Screen of Death Top 10

Blue screen of death on a subway car. Blue Screen of Death in New York City. With the introduction of the x86 processor to Mac, Blue Screen of Death has finally come to Macintosh! Blue screen of Death at an airport. Fidelity gets a visit from the Blue Screen of Death.

Read Article - Read Comments (0)More in: Humor, Developers

The Hard Science of Making Videogames

See the top ten hurdles facing game designers today, and the cutting-edge tech that will soon make them relics of the past. Put the stereotypes out of your mind. Forget the zits, the Cheetos, the smell of too much time on a couch with the curtains drawn. Today’s videogames draw on sophisticated science like biomechanics, fluid dynamics and computational geometry to be lifelike and exciting. Here are the 10 greatest challenges of making them. See for yourself—it’s virtual reality, but it’s real work

Read Article - Read Comments (0)More in: Video Games, Developers


(C) 2007 Boulder Future Salon and the Acceleration Studies Foundation.