john spurlock 2007


Well, after discussing this with a coworker on the PLINQ team at lunch one day - I was convinced that it should be possible to express the logic of the raytracer in a LINQ to Objects query. The result is below - a single 60-line LINQ query which captures the complete raytracing algorithm. tumblr photo tumblr photo

It’s a good guess that the actual majority of human cognition consists of cache lookups.

In the end, though music can be brilliant at times, the whole medium comes off as derivative of Pavement.

Is architecture supposed to be facilitative or restrictive? Ah, this is a harder one to answer. In essence, both. tumblr photo

Indeed, Google is fast becoming something like a bank, but one that keeps information rather than money. This applies equally to its rivals, but Google is accumulating treasure fastest.

…If we today had the income distribution we had in 1979, the top 1% of the population would have ~$670B less, that’s about 40% less income, or $600K per person…the bottom 80% has lost the same $670B, and that works out to $5K per family…

…It’s a reflection of the changing structure of the economy that when value comes from ideas, you can lever and extend ideas much further than you can lever and extend your muscle or even your ability to produce things ..I don’t think it’s something that we’re going to have an easy time fighting…

They often think that rigorous static typing is about preventing bugs that a few unit tests would solve, or that dynamic typing is about writing tests that static typing would solve. tumblr photo

When someone gets up and gives a speech about a platform, my mind gets engaged about ways I can have fun or make money.

There’s none of that with Mahalo. It’s about Jason and his investors making money. Why should I care about that?

It’s like the iPhone. Very limited opportunities for us to be creative.

Not my cup of tea.

tumblr photo

In there is a notion that design is something you can trade off for greater speed. Indeed I’ve come across the impression a couple of times that design effort is tolerated to keep the programmers happy even though it reduces speed. tumblr photo

Because I believe that there’s more parallels to what we do in military history than in constructing buildings.

The whole was suddenly greater than the sum of its parts. It became obvious that we needed the expression compiler as part of the product and that IQueryable should be promoted out of the private domain of LINQ to SQL and into the limelight to become the general definition of a query. It was a done deal.

And all because Don wanted us to do Evil Eval.

An interesting question that is always useful to ask about a design is: Given what we know now, what would we do differently if we could start again? It would be hard to get broad consensus on this point. My personal opinion is that the date and time space is too complicated to address with a single type.
real-time fluid dynamics simulation in silverlight 1.1

Check out the demo.

From what I've seen so far after kicking the tires, the managed silverlight platform seems new and somewhat incomplete, but provides just enough basic build material to stay interesting - certainly no accusations of over-engineering (yet).

One immediately apparent frustration is that the mac hosts are at least an order of magnitude slower than the windows hosts when it comes to rendering - I hope this is only a temporary thing. Once we have some parity here, it would be *great* to get some cross-platform low-level 3d primitives - taking advantage of the hardware of course.

The wpf library turned out to be far more stripped-down than I first imagined. Again, I think this is actually a good thing - it's not hard to completely wrap your head around the entire mini-wpf control set. I did find myself looking for better brushes, though - it would have been nice to have the DrawingBrush or the VisualBrush from mega-wpf.

Also there are no built-in UI thread-marshalling functions even though the threading primitives are tantalizingly exposed. You basically have to rig up a bootleg ui-pump yourself, using the Storyboard object, which conveniently raises events on the correct thread. Again, not something you'd want to do on a regular basis, but it works for now.

It will be interesting to see what types of .net applications start making the jump into this very "applet-like" environment. Sorry of course I meant "Rich and Interactive" environment...

Every IT generation has its seminal tome that transcends time and connects the dots in a way that no book had before it. For the object oriented generation in the 1980s, it was the Gang of Four (GoF) book. For the application architecture generation in the 1990s, it was Fowler’s book on patterns (PoEAA). RESTful Web Services will be, in my opinion, that book for the 2000s Web services generation. tumblr photo tumblr photo

Every communication protocol has a state machine. For some protocols they are very simple, for others they are more complex. … The essence of REST is to make the states of the protocol explicit and addressible by URIs.

Successful people don’t just ride out the Dip. They don’t just buckle down and survive it. No, they lean into the Dip. They push harder, changing the rules as they go.

Reuse is about creating a deliberate coupling between two parts of the code base, and these two goals are largely incompatible to one another. If the goal is really to create loosely- coupled services, we have to be willing to “let go” the reuse goal, particularly across service definitions.

The goal of Microsoft Codename “Astoria” is to enable applications to expose data as a data service that can be consumed by web clients within a corporate network and across the internet. The data service is reachable over HTTP, and URIs are used to identify the various pieces of information available through the service. Interactions with the data service happens in terms of HTTP verbs such as GET, POST, PUT and DELETE, and the data exchanged in those interactions is represented in simple formats such as XML and JSON.
silverlight clr - initial thoughts

The Silverlight CLR was unveiled today. Here are some quick thoughts after poking around in the 4MB download on what it actually contains (and of course more telling - what it does not).

unmanaged dlls:

  • agcore, coreclr, mscorrc, npctrl - i did not dig into these, safe to assume these provide the slimmed down clr/garbage collector/native layer
  • ie/slr.dll - presumably the ie plugin
  • np/slr.dll - presumably the mozilla plugin

managed dlls:

  • agclr - slimmed down WPF library, no 3d etc
  • Microsoft.Scripting - the "dlr", includes a BigInteger implementation, awesome!
  • IronPython - python
  • IronPython.Modules - python
  • Microsoft.Scripting.Vestigial - once again python is first out of the gate
  • Microsoft.JScript.Compiler - javascript
  • Microsoft.JScript.Runtime - javascript
  • Microsoft.VisualBasic - nice to know IIF made the cut. late binding support via NewLateBinding
  • mscorlib - the largest managed assembly, though obviously cut down from the "real" version. no external processes, interop, or any io other than file manipulation. thread primitives are still there however, i'll be curious how these work in practice inside of the other "hosts". otherwise, what you'd expect.
  • System.Core - linq! made my day
  • System - regex and a system.net that only includes httpwebrequest/response
  • System.SilverLight - presumably the silverlight host, includes a little document object model for interaction with the browser (and a BrowserHttpWebRequest, interesting)
  • System.Xml.Core - a barebones System.Xml replacement, no XmlDocument, no xpath, only the basic readers and writers

Make no mistake - this is definitely a slimmed down version of the base class library. Must have been a fun engineering effort squeezing the most into the install.

Interestingly enough, there is nothing from System.Data. omg no DataSets! :) I would bet that the final version will ship with a System.Data.Core (like the xml dll) but they are having trouble trimming the fat...

tumblr photo

All the exception is very.

The people scurry by in comical little hops and starts, cups of coffee in their hands, cellphones at their ears, ID tags slapping at their bellies, a grim danse macabre to indifference, inertia and the dingy, gray rush of modernity.