September 18, 2010, 9:38 am
If you are interested in high-performance programming on Windows, you know the name Joe Duffy, whose book Concurrent Programming On Windows is absolutely top-notch.
Today he posted an intriguing notice on his blog “We are hiring.” Check out some of the things he says:
My team’s responsibility spans multiple aspects of a new operating system’s programming model…. When I say languages, I mean type systems, mostly-functional programming, verified safe concurrency, and both front- and back-end compilation….All of these components are new and built from the ground up.
Huh. I’ve argued before that the manycore era requires a fundamental break in OS evolution. Every aspect of the machine has to be rethought; the fundamental metaphor of a computer as a von Neumann machine with, perhaps, a phone line to the outside world has been strained to the breaking point. Forget “the cloud,” we need to think about “the fog” — a computing system where every resource (including resources outside the box at which you happen to be typing) can be accessed concurrently, securely, and virtually.
I don’t think that the OS for the manycore era can evolve from any existing desktop OS. That’s why I think that the “Windows 7 vs. OS X vs. Linux” debates are short-sighted and even the “Windows vs. iOS vs. Android” debates are only skirmishes to determine who has the money, mindshare, and power to eventually win the real battle.
It needs to be said that Microsoft has lots of incubation and research projects whose results either are left to wither or are watered-down and incorporated into mainstream products. But the involvement of a top non-academic thought-leader makes me hopeful that Duffy’s project may have a bright future.
September 17, 2010, 6:48 am
Apropos of something I’m not quite ready to talk about, here is an interesting challenge:
How do you optimize your time at the telescope if you have a set of objects that you’d like to observe?
For instance, if you want to see as many Messier objects as you can in a single night, a portion of your night might use this sequence, suggested in the book “Messier Marathon Observer’s Guide”

On the other hand, it looks like there’s a wasteful jog near Serpens Cauda — near the label “18h30m” in the image. That jog is the recommended sequence “M24-M25-M23″ but if minimizing the path were the only criterion, it looks like it would be quicker to visit M25 “on the way” between M7 in Scorpius and M11 in Scutum.
Now, by no means do I want to be so presumptuous to suggest that Machholz “made a mistake” in his recommended order. Minimizing the path is not the only or even overwhelmingly-dominant criterion — if you’re really doing the Messier marathon, it’s customary to do it without the help of a computerized “goto” system and using easy-to-find objects and straight line “star hops” is a big deal.
Similarly, in the real world you’re going to be battling light pollution, clouds, and terrestrial obstructions.
But this visualization that I made using Google Earth and some Ruby code does suggest that it might be worth using the power of a computer to help you plan your evening’s viewing.
The bad news is that there are lots of possible paths one can take between all 110 Messier objects — 1588245541522742940425370312709077287172441023447356320758174831844456\
7162948183030959960131517678520479243672638179990208521148623422266876\
757623911219200000000000000000000000000 paths. Most of those paths are impossible for an Earth-based scope (as a matter of fact, there are only brief windows during the year when all the Messier objects are visible at night from a given location). And most paths could be rejected very quickly. But still, no matter how quickly you evaluate a path, there’s no way to use a computer to find the absolute shortest path between this many cities… er … graph nodes … er … sky targets.
The good news is that there are all sorts of wicked cool ways to find “pretty good” paths.
September 16, 2010, 6:59 am
I’m doing some exploration of “Big Data” and data mining (fun!) and came across this interesting presentation:
The following time series is converted to string “acdbbdca”:

September 15, 2010, 6:10 am
September 14, 2010, 8:40 am
I read the new book “The Grand Design” by Stephen Hawking and Leonard Mlodinow yesterday (it’s a short book and if you’re comfortable with the differences between “the Universe,” “the visible Universe,” and “the Metaverse” it’s easy-enough going). The book is getting a lot of press for its repeated assertion that the Universe as we know it (and 10^500 universes we don’t and can’t experience) can come into existence without the aid of a Creator/God.
Those who read “A Brief History of Time” will know that Hawking asserts that the question “What happened before the Big Bang?” is ill-formed — that our intuitive sense of time is misleading. In this book, Hawking takes on another intuitive argument for God: “Why is there something rather than nothing?”
Hawking’s answer is “Well, there’s a whole bunch of somethings,” — apparently 10^500 Universes or thereabouts. In other words, the “many worlds” interpretation of quantum mechanics. Personally, I’m quite comfortable with that (that the Uni-/ Meta-verse is even more beyond our intuitions of scale has been the trend for several hundred years…), but Hawking/Mlodinow do a good job of giving an overview of the “summing over histories” techniques that fit the evidence and which are, actually, most intuitively explained by the “many worlds” interpretation.
Hawking then gives a brief but appealing metaphor for the spontaneous creation of our Universe from quantum evanescence — that, it appears, is his “No Assembly Required” moment as far as God is concerned. He briefly (too briefly, I think) talks about the requirement for a narrow entropic realm in Universes that support life. He does a good job addressing both weak and strong anthropic principles.
The theory (or, apparently more correctly, family of theories) that Hawking supports is called “M-Theory.” He asserts that M-Theory is testable (although it’s not intuitive that it is, and he doesn’t make it clear how that is so).
But he also says “M-Theory is the only model that has all the properties we think the final theory ought to have,” (Kindle Location 74) and “M-theory is the only candidate for a complete theory of the universe.” (Kindle loc 1826) [Emphasis added].
So even if we posit that M-Theory is correct, we’ve only punted the problem back 10^500 Universes: “Why M-Theory?” It’s hard for me to think that anyone who currently believes in a transcendent purpose is going to be swayed by additional universes, no matter how many zeroes it takes to count them!
September 14, 2010, 6:53 am
The number of 7-bullet-per-slide PowerPoint presentations seems to be declining, but “Steal This Presentation” is a useful source of advice. On the other hand, if you’re presenting to developers, please don’t hesitate to have the occasionally semantically-precise slide.
September 13, 2010, 8:30 am
The worst thing about developing for the Mac or iOS is Objective C. Obj-C was a heck of a good experiment 20 years ago, but it’s just not a good fit for today’s mainstream programming mindset. In the wake of Apple’s relenting on the use of 3rd party language tools for iOS comes the rumor that Apple has been working on, and is about to go public with, a Ruby implementation.
It makes a lot of sense. It makes even better sense if Apple is “going big” and aiming to capture mindshare by producing a dazzling “iLang.”:
- At some point, Apple will have to move beyond Objective C. It’s just a question of the language.
- Objective C on iOS requires manual memory management, the most bug-prone area of single-threaded apps. Ruby has built-in garbage collection.
- Matz’ Ruby Interpreter is notoriously complex; if Apple could create a VM or hybrid native runtime using their investment in LLVM it could easily be much faster than existing Ruby implementations.
- Grand Central Dispatch is a good match for Ruby semantics. Combined with a fast implementation, this could allow Apple to boast of a “best of all possible worlds” approach to concurrency.
- The timeframe is about right — Ruby’s success became apparent several years ago. The creation of a commercial-grade high-performance Ruby implementation would take about this long to get through the pipeline.
- The Ruby ecosystem is large and friendly to OS X.
- Ruby is both “sexy” and admired by programming-language geeks. Yet it’s not radical in the way of, say, a pure functional language. Were Apple to make Ruby a first-class language, they would be dealing with a known commodity in terms of learnability, resources, and limitations.
Finally, one can imagine Ruby being dressed up in a nice new suit and given a pair of really cool designer sunglasses and pitched by Steve Jobs as something extraordinary and “the world’s best” and “revolutionary,” etc.
As a matter of fact, it’s interesting to imagine what a Stevenote about programming languages might look like. Any thoughts?
September 10, 2010, 6:00 am
Saikuro : A Cyclomatic Complexity Analyzer.
Function complexity does not seem to be a great problem in the Ruby world, but tracking cyclomatic complexity is one of those things that can help pinpoint troubled modules.
September 9, 2010, 7:02 am
Big news in the Apple development arena this morning: Apple has relented on the ill-advised license restriction on developing for iPhone / iPad with tools created by 3rd parties. The restrictions were introduced in the Spring, just in time to quash Adobe’s launch of a Flash-to-iOS cross-compiler, but caught in the net were a number of excellent tools, including an implementation of Lua popular in the gaming industry and Novell’s MonoTouch C# stack, which I particularly like.
Although I’ve not heard of any Flash projects making it onto the AppStore, it was an open secret that Apple was approving any number of programs developed with MonoTouch, including my own Kailua Kona tour guide application.
September 8, 2010, 6:39 am
The Open Source Analysis of Competing Hypotheses Project
This looks like one of those “one thing well” type of applications: a matrix of hypotheses vs. evidence and the ability to rate the intersection as “Consistent/Inconsistent …etc…”

Could be useful for keeping a complex collaborative discussion on-track and focused.