This entry is just a quick note. Since this blog is largely dedicated to advanced Web and media applications, I thought folks might be interested in this.
I teach database systems and 3D animation at the University of Colorado in Boulder. Twice a week, I post the videos of my introductory animation class on a website. The videos are screen and audio capture. I try to introduce the basics of 3D animation, with a focus on Autodesk Maya, arguably the most popular 3D application. The semester is just getting started and so I have only posted two videos so far.
Please keep in mind that I am teaching students from a very broad range of academic majors, with many of them being computer science and engineering students – and so the slant is on learning 3D animation as a basic skill. It is not a fine arts class.
The website is wordsbybuzz.com]]>
It’s easy, if you’re my age, to be very excited about the speed of the new generation of multi-core processors and about ever-increasing Internet bandwidth. Hey, I started out writing programs on punch machines that spat out boxes of “IBM cards”. A medium sized program might need a wheelbarrow move it around. We ran our programs on computers that cost hundreds of thousands of dollars, and if we were lucky, we could squeeze in a half dozen compile-and-executions a day. There was, of course, no Internet, and dialup technology was brand new.
I’m maybe the zillionth guy to brag about his experience with walking-to-school-in-ten-feet-of-snow computing technology. But here’s the subtlety. Faster and faster processing and data movement is more than a convenience. It does more than gradually increasing the ease of getting computing jobs done.
There’s always another hurdle.
That’s because every now and then things get fast enough that something that was totally intractable in the past is now quite doable. Managing multimedia on the Web is one such thing. It seems like we’re almost there. Soon, we’ll be able to stream large videos over home Internet connections. We’ll have “real” animation on websites, not just choppy Flash stuff. We can already edit video on modest desktop machines. We can install large scale server-based database management systems – and have them run just fine. Soon, many folks believe, we’ll be able to edit huge pieces of media online and search large server-based media databases effectively.
But just as we pass one horizon, we see a new, higher one out ahead. It’s tantalizing, thinking about the things we can’t do yet, things that we’re not completely sure we’ll ever be able to do.
Here’s one. Rendering.
I teach 3D animation. I like to experiment with new applications and introduce them to my students. Lately, I’ve been looking at a rapidly growing class of photorealistic renderers that can turn vector-based 3D Google SketchUp models into images that look like photographs, and in fact, beautiful photographs. These renderers simulate the complex movement of light as it reflects off of and refracts through objects like glass and car paint and swimming pools.
In past entries of this blog, I’ve written about the explosion of animation tools and the the teaching of animation. Desktop animation applications do tend to demand multi-core processors, several gigabytes of memory, and reasonably high end video cards. But machines with such components are now cranked out routinely by Apple. PCs intended for game playing make excellent home and small office animation engines.
Except for rendering. It’s that process that takes twenty or thirty frames per second of animation and cranks out video that looks super-real. That’s the bottleneck. I teach Maya. My students often find that their two minute videos can take hours or days to render. Two things in particular can cause render times to explode. Particle dynamics, used to simulate things like fire, is one. The other is rendering. Simulating light and its movements is computationally intense.
I use a product called Maxwell as a plugin to Sketchup and Maya. One beautiful frame – and remember, that covers maybe a twentieth of a second of video – can take an hour on my several-core Apple iMac.
Imagine the day when it takes fractions of a second.]]>
I teach database systems and 3D animation at my university. The other day I was telling a friend about some of the database, graphics, software development, and other applications I work with. I was trying to make the point that over the last few years there has been an explosion of powerful, novel desktop software applications, that it’s a fun time to be a software user. With each one, I told him what company sold it and where they were located. His eyes widened.
What’s wrong? I asked.
He told that he was impressed at how many places around the world were apparently producing cutting edge software applications. Now, he’s not a computer guy. I told him something that people who use a lot of software typically discover on their own. Since software can be built on cheap computers, marketed on relatively simple websites, and sold as downloads, anybody anywhere can be a successful software vendor. All you need is knowledge, skill, and drive.
Software is a global product.
Here’s a piece of the list I gave him. I use the following apps:
- DBVis, a relational database GUI from Iceland (my favorite DB GUI).
- SQL Maestro, a relational database GUI from Russia.
- Navicat, a relational database GUI from Hong Kong, China.
- Indigo, a renderer from New Zealand.
- Maxwell, a renderer from Spain.
- Toonboom, a 2D animation application from Quebec.
- Vue, a graphics application for producing 3D outdoor environments from France.
- QT, C++ development software from Norway.
- Komodo, a scripting editor and IDE from Vancouver, Canada.
- Versions, a subversion client that, as far as I can tell, is from Portugal and the Netherlands.
- Voila, a screen capture application from India.
- Pixelmator, an image editing application from England.
I’d also like to point out that these are all extremely good products. They vary a lot in their complexity and cost, but each of them are first rate. (I also apologize if I have any of the home countries wrong.)
It’s also true that a lot of the larger, emerging software and services firms are from countries like India and China. It’s also true that many open source applications are developed and maintained by teams from around the world, collaborating online.
Now, here is my observation as a prof at a big state school.
We are training fewer and fewer Americans to be software professionals. In the United States, it’s not a profession that’s highly respected. Programmers are supposed to be nerds, and their work is portrayed as lonely and tedious. American kids want to be film makers, reality TV stars, lawyers, and doctors. So, enrollments in computer science programs have dropped. A large percentage of computer science graduate students in the United States come from overseas. (A major reason I like my job is because I get to interact with young people from about the world.)
It’s not surprising that more and more cutting edge software development is going on outside the United States.
And hey, computer professionals from the United States are starting to find that a lot of the best jobs, those with dynamic, innovative companies are not in the U.S.
So, software professionals are citizens of the world.
Windows versus Macs.
The issue involves fixing problems. I happen to be a Mac user and know my way around its Unix guts pretty well. I happen to like the fact that on a Mac, there is no Achilles heel, like the registry on Windows machines.
Applications install dramatically faster than on a Windows Machine, too.
And, Windows machines come out of the box all set for light users, people who run Office apps, process email, and browse the Web. If you want to run more heavy duty applications, ones that don’t have click-and-let-it-happen installers or of you want to develop software on a Windows machine, you often find yourself in a chain reaction process where you incrementally discover more and more things you need to install. Even installing Microsoft development software, like Visual Studio, can turn into a couple of hour adventure. (But Visual Studio’s installer generally takes care of everything, and all you need is patience – a lot of patience.) Macs, on the other hand, have a free, heavy duty development environment called XCode that you can download and just stick on your hard drive. Various languages and database products are preinstalled.
I admit, though, that building Web apps on a Mac is a problem. The development environment doesn’t provide a lot of help there.
But, I recently ran into some problems with my Windows 7 machine and was actually impressed at its robustness. I don’t use Windows machines much and I don’t understand their guts that well. So, I am a nervous user, waiting for that registry problem or other seemingly minor issue that keeps the thing from booting. I have to use a Windows machine, however, because I teach database systems, and a couple of the major products do not run on Macs at all. I also teach animation, and there are a couple of powerful animation apps that do not run on Macs, either.
So what happened?
It all started when I decided to install some software development apps, and quite frankly, since I didn’t understand the Windows OS that well, I screwed things up. (I won’t go into the details because I am embarrassed.) Suddenly, my machine wouldn’t boot – but it automatically went into its disk check mode and fixed the problem. It took an hour or so, but it healed itself. To be honest, I don’t even know what it fixed exactly.
System state restore.
Then, with a sense of great relief, I dived in again, this time, really did a nasty job. I blew out my user profile. I also did something that caused Windows Explorer to conclude it didn’t have any legit access to anything in my file system; only Firefox could download something and store it. A few database development apps could no longer find their data; my connection profiles and SQL code was gone, seemingly.
So, I ran the Windows system restore facility. It told me exactly what applications would be gone when I rebooted. It fixed itself and I reinstalled a couple of things.
System image restore.
But I didn’t stop there. I made another mess and this time, I didn’t just cause some data to get disconnected from their applications. I deleted a bunch of critical stuff myself, somehow. Some of it was in the OS – ouch!
So, I ran a complete system image restore, something I had been carefully building on a weekly basis for a year or so. I didn’t really think it would work. It did.
You can kill it and it rises up.
I discovered something else along the way. My memory with older versions of Windows (I used Windows machines until about the time XP came out) was that if you pulled the power on the thing, or if it froze and you had to reboot it forcibly, there was a good chance that it would refuse to start up, that something being written at the time of the crash was incomplete, inconsistent, and deadly.
But you know, I’ve hard rebooted my Windows 7 machine a bunch of times. It’s always come up. Wow.]]>