Home Tour Gallery
    

Archives

Jan-May 2004
Aug-Dec 2003
Apr-Jul 2003
Jan-Mar 2003
Oct-Dec 2002
Jul-Sep 2002
May-Jun 2002

March 20, 2006

Downsampling in the new Import Subsection dialog finally works fully, handling arbitrary file block sizes, caching to read compressed formats like PNG quickly, and not producing any artifacts. I was able to take one of NASA's 16,000 square pixel Blue Marble PNG tiles and in just a few minutes extract a smooth 2K version. Another good test will be to refactor the existing GTOPO30 import, which can only downsample the entire dataset and in integer pixel ratios.


March 13, 2006

Man, that cold from last month still lingers. I never get a fever, but the sore throat just keeps hanging on. I wonder if it's possible to get into a stalemate with a cold. If this is the same thing as last time, then it should be ending in a few more days. I certainly can't wait. :)

Above is the new "Import Subsection" dialog that appears in Leveller when importing a large file. It builds an overview and offers a user-definable selection rectangle and colormapping, as well as downsampling if a file is really large. With the new routines for filesize reporting, it also shows how much memory the resulting Leveller document will take. With the new driver abstraction, the dialog has no idea of how the file is read, so subsectioning/downsampling is available for all supported file formats and works consistently.


March 1, 2006

The import system is finally getting its well-deserved overhaul. I've started implementing an abstract file format class along with a new user interface methodology. Instead of importing into the current document (and being forced to clip within its boundaries), the new importer creates a new document and sizes it to whatever is needed, as if the file was being opened. The format class handles exporting also.

Provisions have been made for importing/exporting to files and datasets. URLs should also work (if the data is somewhere on the Web or on a LAN using Internet protocol. If one's LAN exposes network shares as drive volumes, then normal filesystem pathspecs can be used too).


February 23, 2006

History repeats itself: last night I had that molten lava sore throat thing, same as in June 2003. Unlike last time, however, this is happening before an update release. It's a good reminder of how I shouldn't expect schedules to be solely a matter of how well the code is getting written.

Leveller 2.6 doesn't create a flat 64 x 64 heightfield anymore upon starting; you have to issue a File->New command and fill in this dialog box:

The document size readouts also appear on any dialog that can modify the heightfield's pixel dimensions, such as Pad and Resample. I'm also getting more dialogs to sport identifying icons, makes them much easier to recognize, especially if you go away from your computer and come back and need to reshift gears. I also get the sense that people don't read as much as they used to; they expect to identify things more visually.

There will be two lightsource objects: one for the scene pane and one for the map pane. Because of base shaping (the new term for UV distortion mapping), it wasn't practical to derive a scene location for the lightsource from its map location. The camera has similar issues, and will be changed too. In some cases, however, the two lightsources can be treated as one, so for most users it won't feel different.


February 16, 2006

Still going along on Leveller 2.6. Lots of turn-the-crank coding involved; today I went through every dialog box that uses measurements and ripped out their unit comboboxes, and changed the input fields to use the new measurement text classes instead of just numbers.

Below is a composite screenshot showing the new georeferencing commands in the Navigate menu and the Datum/Projection dialog. Prototyping in DEMedit definitely helped reduce time figuring out how it was going to work in Leveller.

One nice benefit is that even brush sizes can be specified using realworld measures. So if you had, e.g., a 2 KM DEM and you wanted to flatten with a 20-meter brush, you can specify that and the number of pixels will be figured out for you.


February 2, 2006

Cruising along on Leveller 2.6. The hardest part of developing an update is getting past the mental hump of how much work is going to be involved, and now that I'm past that, the actual working part is not so bad. :)

The raytracer supports unbounded colored lighting and can emit HDRI files in OpenEXR format:

The image on the left shows normal clamped (LDR) RGB output. No amount of brightness/contrast postfiltering will produce the HDR version on the right, which is one f-stop below of the same render.

One might wonder, what's the fuss if our monitors are limited to ordinary RGB and we have to tonemap HDR images down in order to see them? It's convenience: instead of tweaking raytracer settings to get the right exposure, you can emit one HDR file and extract from it whatever exposures you need. Plus your gamma correction is portable to any system since you apply it at tonemapping time.


January 4, 2006

Happy New Year. I think 2005 was good all around, being another update year for Leveller.

Since December has lots of holiday time and my right hand was okay, I spent the time getting more familiar with Photoshop by drawing cartoons (as a touch typist, programming with one hand is absolute murder, and yes, I tried very hard).

My left hand now feels close to its former self, so I've returned to DEMedit and should have an updated version soon. I had hit a wall with how the ground extents were internally represented and had to completely refactor those classes. Ben Discoe, who maintains the Virtual Terrain Project, was kind enough to include the upcoming Leveller clipboard format in VTBuilder so the next version of DEMedit can demonstrate that too.


November 10, 2005

Changing out Leveller's world space system for a full coordinate system manager is underway and of course the change has broken lots of modules. Just a matter of grinding through all the affected points and updating them. The good thing is that one gets closure on the whole issue of spatial management and UV mapping; the new system deals with them far more elegantly.

It's always something: my left arm had a little RSI trouble last week, so I've had to take it easy when typing. I don't think there's any permanent damage, but I can't just blast away like I used to. Once it's back to normal, I may have to get a timer so that I don't forget to take a break every fifteen minutes.


October 30, 2005

Well, DEMedit was a good learning experience, and now the time has come to start migrating its georeferencing features into Leveller.


October 5, 2005

An open source fundraising page was added to help release Leveller 3.0 as open source. So far it's been slow going, but time will tell. It's going to take a while to reach 3.0 anyway.

Working on a new test app called DEMedit. It lets you load DEM files via the GDAL library and do various things to them, all the while respecting the DEM's geographical coordinates and realworld elevations. Once it's robust, its logic will be used to make Leveller support georefencing (and better DEM loading).

Enrolled in a local watercolor painting course, since it's always good to appreciate different artistic mediums. Part of the process is to sketch, and here's my first one from class (and from memory, since if there had been an apple in the room, I would have eaten it):

The variation on the right was done in Photoshop to add color. What's neat is that my experience with raytracing adds to my understanding of how light works, which in turn makes the sketching and coloring more natural.

I actually suck at drawing, especially when drawing people, and even with pencil and paper do a lot of iterative draw-erase-draw-smudge-draw-erase work. In Photoshop it's even more of that, since it's digital. I'll make lines and blobs, and keep changing them until I stop hating it. :)


September 2, 2005

Added a new "Plot Function" plug-in which provides both a procedural heightfield filter and a procedural selection mask generator. Below are some examples of the former:

Using a simple PostScript-style language, one can assign elevations or selmask transparencies depending on a pixel's location, altitude, opacity, etc. For simple processes, it's much faster and easier than developing a plug-in.


August 24, 2005

Had a few more plug-in updates. Rhino/OpenNURBS, DirectDraw Surface, Surfer GRD.

Leveller 3.0 is next, and it's going to be open source. I'm still working out the details for donation collection, licence model, 3.0 feature set, etc. Long story short, the particulars of the heightfield modeling domain and market require the open source approach.


August 3, 2005

The Roads import plug-in was released, although I may tweak it more later on. The StL export was also updated to generate solid (enclosed) meshes; apparently some programs out there demand them.

 

July 28, 2005

Back to work on the Road plug-in, which was started last October and suspended so Leveller 2.5 could get finished. As dark a cloud as the delay was, a silver lining of a more elegant development approach came to me. Which is good, because it's without a doubt the most complex thing I've had to write. Road reads Adobe Illustrator paths and turns them into roads, and you can customize the road cross-section at arbitrary points along the road, to do banked turns or alter the road width.

The SDK had a small update a few days ago to fix some documentation errors. It will be updated again in a few weeks too to include all the open source plug-ins such as gforge, Erode, Perlin4, etc.

Darren Hunt graciously wrote an import/export plug-in for getting terrain to/from the Xpand Rally game.


July 21, 2005

Finally the SDK is done. At 2.4 MB the thing is like another product in its own right. Well, after this many revisions it's can't be "just a few calls, headers and examples" anymore.

If I didn't care about abstraction, it could be completely lightweight. Only two problems: changes would break third-party code a lot worse, and there'd be a lot more code to write on the client side.

This time around I did a lot of C++ stuff. Lots of classes to encapsulate and organize things, plus much better documentation to describe it all. It's all worth it, because it aids my own understanding of what is now a fairly large system.


July 7, 2005

Well, so far so good. A lot of people have updated to Leveller 2.5, and I haven't heard any gnashing of teeth. Always a good sign. Extensive beta testing pays off again. Especially with the demo available, a lot more people are hammering on the new version. Maybe I should have had a beta demo.

Updating the SDK now. It's a big job this time around; a lot of new material was added for renderer plug-ins, and the changes to the TER file format have to be documented.


July 4, 2005

Well, it's been an exciting week. On June 29th we had Spielberg's War of the Worlds, of which some scenes had my disbelief pleasantly suspended; the effects were really well done in a few places. Canada and the United States celebrate their respective holidays, NASA's Deep Impact probe successfully slammed into comet Tempel-1 a few hours ago, and Leveller 2.5 has been officially released.

2.4 was released a year and a half ago, so this is one of the lengthier periods between updates. Looking back, I underestimated the difficulty of getting the graphics tablet interfacing to work. It's tricky because on the surface, the WinTab system is pretty straightforward. But then all sorts of little subtleties kicked in, and just as I thought I had a handle on it, something else reared its head. Not that I have regrets, of course -- graphics tablets are so useful that I would have endured worse. It's like a whole new world once you get used to it.

For a while I was tempted to just develop 3.0. But if there's one thing I've learned, is that without a proper development team, the only way to go is incremental. As it turned out, 2.5 needed tons of testing and tweaking; 3.0 would have been stuck in that loop forever. Once you bite off more than you can chew, a project can descend into total incomprehensibility. The more I went over the design specs, the more obvious it became that 3.0 is still a major change. It's time is coming, each step brings us closer; but 2.5's time is now, and insofar as it represents an advance over the venerable 2.4, I'm good with it.

I couldn't help thinking a little more about Apple's recent shift to use Intel processors.

Several theories offered themselves, and finally I settled on these two:

  • The double standard theory: Apple internally had been running OS X on Intel PCs for several years. As the gigahertz gap widened, Apple engineers (who spend a lot of time compiling builds of big software, which is one of the most compute-intensive things one can do) realized that they were more productive with them. Slowly but surely, word got around, and once customers realized that Apple's own techies wouldn't switch back to PPC come hell or high water, management realized that the company was being two-faced, offering PPC technology while regularly using Intel.
     
  • The growth theory: Apple's not a young company anymore. After thirty years, everyone has realized that yes, an avant-garde design company can exist, if it's willing to perpetually own a tiny slice of the market. Jobs may have been wondering what his core passions are and what Apple should be, and now it's clear that there were only two choices: stay small or grow.

    It's arguably a bitter pill to swallow. Good design ought to triumph over the mediocre. But the real world doesn't work that way -- the average person appreciates things that are merely good enough and that cost significantly less. Add in network effects, and Microsoft couldn't lose. While Apple perfected the craft, Microsoft simply gave people what they wanted.

    Apple originally did that too. Back when mainframes and minicomputers were in vogue, it didn't matter if the Apple I/II cost a few grand. The price difference was so great that it offered serious value. But as the rest of the industry caught up, Apple realized it had to differentiate itself from the Vic-20 and PC clone crowd. On the bottom line, commodities suck, and Apple wasn't prepared to be just a software company. So they focused on being insanely great and charging a premium. Let other people build crap.

    What's hard for Apple is that, even if it had wanted to change strategy, it would turn the company into just another PC maker. If gaining market share meant giving up being avant garde, then it wasn't worth it. Life wouldn't be fun anymore. As small as Apple is, it's interesting. It may not have as many customers, but the ones it does have love the company a lot. Anyone can go into business, even make money at it, but how many people can make something that people care passionately about?

    What's not so clear now is whether Apple needs to stay small in order to remain cool. It's people have done a really good job with OS X; this is no toy operating system. They're shipping stuff today that won't be in Longhorn until next year. The iPod and iTunes showed that Apple could effectively capitalize on a dominant market segment. This isn't the Apple of old; this is a re-energized, more confidant company that knows what it is about and how to do it. Maybe after all this time the lessons of its past have sunk in. Apple is focused, and it doesn't wait around anymore to do something. Apple is learning how to be insanely great without always having to charge a lot.

    While that's happening, the computer industry has reached a plateau. With Moore's Law becoming harder to realize, most people's PCs are adequate. So growth has stalled at the present market configuration. And it's wound up with not a lot left for Microsoft to grab. Even if it took Apple's share, that would be like a rounding error.

    But from Apple's perspective, things look much brighter. Microsoft's share of the market represents a huge (absurdly huge) growth area. All you need is the tools, the talent, and the will to steal its customers. And I have a feeling that going with Intel is the first step in this plan. Apple doesn't think it needs to be small anymore. It thinks it can remain cool and be big at the same time.

    Is this a good thing? Well, why not? If Moore's Law is becoming a relic of the past, then at least Apple can let us say goodbye to it in style. Once a technology matures, the only thing left is to make it pretty and user-friendly, and that's Apple's forté.


June 24, 2005

Craters look really good with shadows, so I couldn't get shadows off my mind and was compelled to add them to Leveller. Here are some example map views:

From left to right, the pictures show a normal view, a shadowed view, a QuickShade view with shadows, and an unlit view with shadows. The last picture uses a flat colormap so it winds up creating a perfect shadow region diagram.


June 19, 2005

Craters are perfect candidates for automation, and version 1.1 of the new Craters plug-in is starting to bear fruit. Here's an example:

The previous version had rimwall merging that was too noticeable against the terrain, plus the rimwalls were too regular looking.


June 10, 2005

Apple and Intel get together. Well, if you live long enough, I suppose you'll indeed see everything.

The union is not so strange if you consider that, as we approach the end of Moore's Law, that the only two things left for any software vendor to do are: optimize the software, and seek out whatever hardware is fastest. Before, when there was still some uncertainty and therefore wiggle room, Apple could cling to a different CPU architecture. But now the squeeze against the ceiling of Moore's Law is too much. Apple's too large and professional not to have done due diligence; they looked at Cell and realized it was too radical a departure. Perhaps later when multicore technologies mature; developers aren't writing tuned multithreaded applications yet. In the meantime, the x86 roadmap offers growth today, and Intel is going multicore as well.

In the future, we'll be even more desperate. We'll spend billions of dollars trying exotic approaches, and we may even give up the x86 instruction set if the road to faster hardware requires doing so. Singlethreaded software (for applications beyond the mundane office tasks) may become a quaint anachronism as dualcore becomes multicore, and then gives way to... hypercore?

I don't lament the passing of Moore's Law; we did an incredible job getting a single CPU to run fast: almost four billion clock cycles per second. If you had told most people twenty years ago of such a thing, they'd have thought the basic properties of matter had been violated.

At first glance, I hoped Apple would let OS X run on ordinary x86 boxes. Wouldn't that be wonderful -- one box on my desk natively running Windows, Linux, and OS X.

The trouble, however -- and I can't blame Apple -- is device drivers. The commodity x86 world is just too disparate for Apple to guarantee the experience of their OS across all the combinations of hardware. The only thing that can be done is to build their own x86 PC, and that way ensure that the hardware plays nice.

Just for now, anyway. It wouldn't surprise me if people started writing drivers for the Intel version of OS X. Apple will code it to recognize only their own hardware, but developers will find these calls (easy enough once you load OS X inside an Intel emulator) and return positives, making illegal hardware look valid. As time goes by, the "safeguarding the experience" excuse will wear too thin.

Apple's real problem is this: it's forté is not manufacturing; it's design. This is unfortunate because design (while important) is a small sliver of activity on top of manufacturing. Once you have a smart person figure out how to build something, you don't need him around until the product needs updating or replacing. Which means that design earns only a fraction of the total economic activity.

As much as Apple doesn't want to admit this, it has been relegated to the designer's share of the pie. De facto, Apple designs and the rest of the industry simply copies it. The innovate work retains its small share. Nobody needs designers or inventors to be part of the mainstream process of manufacture and distribution, yet Apple keeps trying. It doesn't even really build its own products, yet it maintains the illusion that it supplies them. The design-only business is a small one, and Apple needs to find ways to keep its fingers in the larger, more pedestrian pie (but without looking pedestrian, because then we would all lose interest in Apple).

Locking OS X users into Apple hardware isn't really a good idea, because it defines OS X to be more than what it is. Instead of merely running OS X, you're supposed to engage in "the Macintosh experience" (whatever that is). But it's one thing to offer that experience and quite another to force it upon people. Consumers are looking for more choice, not less. It's also terribly wasteful of physical resources and time to require people to duplicate perfectly good hardware they may already have. I might imagine a person without a PC to not mind buying a Macintosh, but if I already have an x86 PC (as most of us do) why should I clutter my desk with another machine? And no, I'm not going to replace my existing box; it works perfectly fine, having already bumped up against the end of Moore's Law. Nobody needs new hardware to solve what is purely a software problem (i.e., making the OS, the shell, and the applications nicer).

Besides, as Microsoft shows, it's far more profitable to supply the software instead of bothering with hardware. If Apple has gone to all the trouble of making OS X run on x86, then it would be foolish to turn down the huge, huge market of x86 systems out there. If you own Apple stock, I suggest demanding that Apple exercise due diligence and leverage their upcoming OS X to obtain full shareholder value. This is no time to play the dog in the manger. In fact, leveraging the enormous installed base of hardware makes sense when you're a design firm; you want as large an audience as possible. Expecting people to switch to new hardware is simply impossible at this late point.

Leveller 2.5 goes beta today or tomorrow. I can't think of any new functionality that it needs to have; I'm happy with the feature set as it is.


May 30, 2005

Another month ends. May turned out to be pretty heavy, and things look on schedule for getting Leveller 2.5 out in June. Finally got around to getting selected area rotation to work with multithreading -- not a difficulty per se, but another case of centralizing duplicated code.

OpenGL is good to know. It's powerful and ubiquitous, but complex, especially the newer extensions. I've always found learning goes best by doing, so I found a nice landscape demo that Aaron Hilton did back in 2000 and started tweaking it. The result is my Terrain Viewer tool, and below is a screen shot:

The viewer does triple texturing for very high detail; you can go right up to the terrain and still have nice bumps. As I keep plugging along I'll forward the relevant bits to the reference renderer plug-in. The viewer works in realtime and renders everything brute force without a LOD scheme so it's limited to a relatively low-resolution heightfield.

There are many other demos out there too I should dig into. Sigh... if my car had a bumper sticker, it would read "So much code... so little time."


May 23, 2005

Leveller 2.5 will support plug-in renderers, which can draw the active document any way they want. The sample reference plug-in adds detail by dividing each heightfield cell into four triangles and randomly displacing their vertices (horizontally as well as vertically). The picture below shows a terrain whose slope mask focuses the effect on steeper areas.

The plug-in also demonstrates arbitrary supersampled antialiasing. It uses OpenGL, so it switches to a GL context that supports rendering onto a bitmap, which may lose hardware acceleration. On my test system (1.6 GHz Athlon, GeForce Ti4200) the above picture took under a minute, not bad considering that 350% oversampling was used, requiring a 3402 x 1617 buffer. You can also choose which filter to downsample with once the buffer is complete.

OpenGL can antialias in other ways, of course: either when drawing or by changing the AA feature of the video driver. But the plug-in is meant to demonstrate as many possibile methods as it can.


May 18, 2005

Sony, Microsoft, and Nintendo finally unveiled their respective new game consoles. The winner? IBM -- it makes the CPUs for all of them. Another first is that the Playstation 3 and the Xbox 360 endorse a multi CPU strategy; the effect on the gaming industry and on the games will be interesting to watch unfold. Both machines are much faster than their predecessors even in single-CPU terms, and now that the Xbox has built up some respectable game titles, it's hard for players to not get good entertainment value from either platform.

What really intrigues me, if CPUs have indeed started bumping up against the limits of Moore's Law, is how long these new consoles will last. Reading their specs, one can be forgiven for imagining that these machines were designed as the final word in gaming technology. There are still lots of people getting fun out of the PlayStation 1, and the PS2 and current Xbox will likely hold on for a few years more, so how long will the new systems be viable? Seven years? Ten? Fifteen? How does one top a system that is capable of teraflop performance and needs water cooling?

For their games, I'd be happy if the graphics could be given a rest in order to improve enemy AI. I tend to play in short, unplanned bursts and don't have time to rig up a match with human opponents, so good AI makes a huge difference in gameplay. The graphics in Star Wars: Battlefront, for example, are really well done, but after a while the weak AI takes all the fun out of it.


May 17, 2005

Cruft.

I don't remember who coined that word, but it describes perfectly what happens to source code after a while. Even on a single-person project like Leveller, where I can keep things elegant (or where I have no one but myself to blame for inelegance), cruft sneaks in here and there.

I was mostly okay with things except for the mouse handling code, large parts of which had been duplicated between the map and scene panes. But the commonality was riddled with specialized parts, so it wasn't obvious how to extract it. I had to take some extra time to figure out a better design, and it's a definite improvement, especially since it also manages all the graphics tablet stuff.

Tablets are interesting devices. I wouldn't say they're hard to code for, but they have subtleties. Actually, even mice have subtleties -- tracing mouse events reveals things you wouldn't expect, like extra mouseUp events or getting a mouseDown when it's already down. It's easy to write ordinary event handlers, but to make things robust takes what is almost an agonizing attention to detail. It'll be interesting if PCs ever get wall- or table-sized displays supporting multiple pointer devices for collaborative work. Wouldn't that be neat -- having a huge map of a city and you and your coworkers editing their own parts of it simultaneously on one big surface, like a monster Tablet PC. With processors becoming multicore (or just multiple), the parallelism would also fit that type of simultaneous work pretty well.


May 15, 2005

The 2.5 alpha continues. To have something nice for 2.5, I thought I'd try doing a crater plug-in:

Still needs some tweaking, but once it's done I can use it to also improve the existing Crater tool.


April 30, 2005

Been tweaking the tablet code and adding/changing brush tools. I had to do a lot of testing with them, and all that staring at the map window made me realize that some of the overlays were due for an overhaul. Namely, an antialiased appearance. So here are the new brush reticle, camera, and lightsource:


April 15, 2005

16-bit selection masking is now working in Leveller 2.5. It's most noticeable when doing feathered selections, because terraced artifacts no longer appear when creating things like big calderas by deleting through a circular feather mask. Feathered selecting also supports gamma curving to make the transition into unselected areas harder or smoother than normal.


April 13, 2005

The feature set for Leveller 2.5 is essentially defined. It's going to have:

  • Floating-point elevations (single-precision).
  • Graphics tablet support.
  • Some multithreaded support (e.g., faster Rotate).
  • Faster continuous brushing.
  • Current low/high elevations for use with tools such as Flatten, Ramp, etc.
  • Blur filters (Gaussian, motion, zoom, radial).
It's not a big update in terms of outward appearance. Those without graphics tablets or multiproccesor/multicore systems won't see much difference, although the Blur filters are a handy addition, and using floating-point and the brush optimizations will give a faster feel.

Plug-ins for 2.5 won't work with 2.4 and earlier, and files saved with 2.5 won't be openable in 2.4.


March 19, 2005

Motion blur is pretty much finalized. Got the algorithm doing over two million pixels per second. Handling of border pixels isn't perfect, but it's much better than the artifacting that was happening before. Dynamic averaging divisors, which work for 8-bit-per-channel optical images, don't work for heightfields.

There's a new test app in town: TabletPaint. It will help me figure out how to best add graphics tablet support to Leveller. If your system supports the WinTab standard, it should work.


March 19, 2005

Added motion blur to the 2.5 alpha. The pictures below are a before and after version of a blurred mountain ridge. A selection mask contain slopes above twenty degrees was used to preserve gentle areas, creating an outcropping effect.

 


February 15, 2005

Got a graphics tablet to see how well it works with Leveller, and to add direct support for the device in the program. Be interesting to see how that goes. Currently, the tablet's mouse emulation works, but it's slow. Leveller does have to do a lot of processing with each mouse event, especially with large brush radii, but hopefully I can speed things up. There's also a weird issue with out-of-order mouse events occurring; Lev's debug build throws assertions in the mouseDown handler occasionally when using the tablet.

Also doing a "roads" plug-in, which will make it easy to import Illustrator paths and turn them into roads.

John Knoll, original Photoshop developer, sent in some lunar landscape renderings he did with Leveller and 3Delight. They're very nicely done, and you can see them here.

I always like to have more than one project on the go, so that when one gets boring, the other can be swapped in and vice versa when the second gets boring. Boredom is natural; it's how one deals with it that matters.

I wanted a challenge in the creative writing department, so I'm doing a novel. The first draft is essentially done, just wrapping up some small points today. It's called Memories of Earth, and is about aliens visiting our world only to discover shortly before landing that most of us have mysteriously vanished. This forces them to interact with everyday people instead of government, and the resulting situations and dialogue are (for me anyway) much more interesting. There's also the mystery of the disappearance they're trying to solve, which eventually comes to a head.

The story is handy in that I can stuff most of my philosophical ideas into one convenient place and convey them in an entertaining way. The E.T.'s are a bit more advanced than us, more enlightened too; the things they know give us fascinating glimpses into what is possible not just technologically but spiritually.


January 1, 2005

A magnitude nine-something earthquake unleashed a tsunami in south Asia several days ago. It's hard to say anything because, well, what words would do it justice? A lot of people are gone; more are displaced. I keep wondering if any of my clients were killed or injured (Leveller is, well, used far and wide).

I hope not. I haven't heard anything either way yet.

It's weird. I have DEMs on my hard drive from that region sent in by clients doing their projects who had some questions. I can't help wondering about their fate.


October 23, 2004

I wrote an essay on Internet-based distributed rendering (PDF format, ~100K). There were a bunch of ideas I had and finally there was enough to put it down in one place and organize it. The upshot: if a big (and good) enough object library were made, such a system would be feasible and enter practical everday use by many people.


October 20, 2004

Well, well, well... Intel announced it will go multicore instead of putting out the 4 Ghz Pentium. No surprise really, everyone else has been getting into parallel mode for some time now. With all the latency elsewhere in a typical system, I'm not even sure what the higher clock speed would have accomplished. The problem isn't that much on the client side anyway; give me enough broadband to handle realtime movie streaming over the Net; that would impact my computing experience way more.

For the record, Leveller's pricing won't change to reflect any additional cores in these upcoming CPUs (it never had a per-CPU licence to begin with, as long as all the CPUs in question were used by one person when running Leveller on them).

It'd take a cold vendor to charge extra anyway since multicore is pretty much the only reasonable way to keep increasing computer power. In a few years all the new hardware is going to be multicore, so the term will be synonymous with computing anyway. And so what if I can get twice the computing done in the same time than I did before? Should we have paid more for software every time that normal (single core) CPU speed doubled? Imagine games costing double or more simply because the PlayStation 3 will use the parallel Cell system; it's ludicrous.


September 29, 2004

Adding multithreading to Leveller as part of the upcoming Leveller 2.5 release. Performance is also being added in other ways -- the Rotate filter, for example, offers quality settings:

Another way to picture the quality levels is through successive rotations, which compound errors at each step:

Multithreading makes sense especially now because CPU vendors have hit a wall trying to decrease transistor size and are opting for parallel processing approaches instead. Normally I'm wary of multithreading because it's easy to implement dangerously, but in this case there's no worry because only simple worker threads are being deployed in filters, and they must all complete before the main thread continues.


September 23, 2004

Playing around with NASA's recently released World Wind, a nifty Earth geodata browser. You can view the planet from orbit or down to street level. Here's a shot a little east of Denver, Colorado:

The terrain becomes 3D as you near the ground. Interaction is speedy but rendering is very slow. 384 MB of RAM should prevent VM page thrashing. Here's another pic, of Vancouver:

(Now you can see why real estate is so expensive here :). The color had to be post-corrected because WW's own detailed satellite imagery is very pale. Sadly, the level of detail (other than schematic roadmap views) doesn't show individual homes, at least not outside the United States. But views from low orbit or high airplane altitude are nicely done.


September 4, 2004

Been a little busier than usual. The full plug-ins archive for Leveller 2.4 was updated to include all the changes and additions made since 2.4 was released, including the latest USGS DEM plug-in stuff. A TER file thumbnail generator for Windows was released as well -- makes deciphering what's in each heightfield easy as pie; works for Terragen terrains too.

Released the source code to Defence Condition 0.91 a few weeks back, which brings it up to date with the binary (although I just did 0.92, which adds some missing end-of-mission enemy types).

The game is not part of the company's main purpose, so it doesn't get much attention. Now that it's almost done, it will probably rest on the backburner. But the source code is there in any case.


August 27, 2004

The USGS DEM plug-in is undergoing an update. Apparently some DEM generators make UTM-based DEMs with perfectly straight quadrangles, which the plug-in was confused by. It could import them but would export empty DEMs.


August 12, 2004

Added a site area of SSWF tutorials. SSWF is a scripting system that makes Flash movies, analogous to how POV-Ray makes 3D images. It was developed by Alexis Wilke who maintains the SSWF project site.

As much as I am peeved by Flash being implemented for IE using ActiveX (which confuses benign Flash movies with all manner of potential ActiveX malware), Flash is the de facto standard for Web animation and I thought it was time to try it out.


June 21, 2004

The Defence Condition game is much spiffier now. Plays actual waves invoked from a main menu, ends when all the humans are lost or the player runs out of ships, etc. Source code is available too.


June 11, 2004

Wrote a new applet called Waves. It generates random wave interference patterns and can copy/paste heightfields directly to Leveller.


June 4, 2004

GeoTIFF import plug-in is done.

WinXP SP2 enforces "no execute" data memory protection on 64-bit Athlon and Itanium CPUs, which makes Leveller crash during startup. A registry patch telling Windows to make an exception for Leveller is available in the FAQ.


Older Notes