Sunday, June 29, 2008

Musical Time Travel

We've just had a bit of a rain here, and as the sun is setting, the world appears to have had an amber filter thrown over it. It's an eerie almost alien looking thing that I always enjoyed as a kid. For a brief time, it allows me to see with my own eyes the science fiction environs the TV shows and stories presented. One of the oldest and best of those childhood sci-fi memories is Doctor Who.

Through a series of serendipitous happenings, Doctor Who is a show that can literally last forever. It has a built in mechanism for reinvention, as we have seen with the new BBC series since 2005. One thing that hasn't changed much are the iconic sounds of the show, from the Tardis to the Daleks, these are sounds that trigger deep memories for me. And since the current series has been producing some very excellent stories, and the world outside is yellow-orange, I thought I would present a bit of a history lesson. Thanks to the work of some random person on the internet, I can present a pretty decent look at the various regenerations of the title theme. There is no other theme like the Doctor Who theme. Though it has evolved with the show through the years, its sound remains unmistakable.

The intro on this video is more than a little inane, but I can't complain too much since I didn't do the work myself. Just skip ahead to 55 seconds in for the actual content.

Saturday, June 28, 2008

Phones, Hypersonic Planes, and the Weather

Sometimes I read something that just makes me feel old. Seeing that the University of North Carolina at Greensboro is no longer offering land line phone service because only about ten percent of the student body uses it would be one of those things. Less than one percent of the students come to school without a cell phone.

Other times, I read things that give me a sense of wonder, as science fiction continues to become reality. Slashdot notes that testing is under way for a plane that uses pulse detonation engines. [Warning: the linked video in the Slashdot article contains extreme ignorance from the newsreader which completely derails the discussion of the technology.] Pulse detonation engines are essentially an extreme evolution of the pule jet engine, which powered German V-1 cruise missiles during World War II. (The buzzing noise produced by the pulse jet gave the V-1 it's "buzz bomb" nickname.) The difference between them would be the difference between combustion and explosion... The big deal about the pulse detonation engines is they allow travel at relatively low speeds as well as hypersonic speeds. Scramjet engines, which can be theoretically much faster than pulse detonation engines, do not operate at low speeds, forcing planes to have another source of propulsion for takeoff and landing.

And then there are the things that remind me of fond memories. Years ago, I used to go camping fairly often. One of the things I would do to amuse myself was try to predict the weather by observation. I was never anywhere near as good at it as my grandfather, but you can actually give a decent guess. Lifehacker offers a couple of very basic tips for those who are interested in exploring how.

Watching the Watchers: Rising Oil Prices Swinging the Jobs Pendulum Back?

Let's start off with a link to the BBCs excellent summary of the factors currently driving the price of oil up. I'll cleverly follow that up with an ABC story about how rising transportation costs and the falling dollar are beginning to return manufacturing jobs to America. So, is this the inevitable moment where the pendulum begins to swing in the other direction for the globalization movement, or is it a momentary blip? Should I feel guilty about being rather happy to see some of the potentially positive side effects of rising oil prices?

Meanwhile, the government, in all its wisdom, is no longer accepting applications to build solar power plants on public land in order to do a comprehensive environmental impact assessment. This puts a crimp in the plans of smaller businesses trying to take advantage of the growing demand for alternative energy. The story does not address how this will affect attempts to build solar plants on private land. (Presumably that's much, much more expensive than using public land.)

Headline Hunting

"God accused of selling cocaine near Tampa church." Yes, he was arrested. No news on whether he posted bail. I'm going to stop before I get hit with lightning...

Saturday, June 21, 2008

Technology Brings the Nifty

There was one story that came out of the U.S. Open that caught my eye. There was a large increase in Internet traffic that had some security folks at Internet Service Providers alarmed. Was it a huge denial of service attack from some previously unknown source? Nah, it was just everybody and their brother turning to the Internet to watch the playoff.

I first saw a "3D printer" that builds computer models into physical artifacts at Clemson University back in the mid-ninetys. It was cool then, and they are cool now. They are also getting considerably less expensive. As pointed out by the Daily Illuminator, one company is selling a desktop version for less than five thousand dollars.

And speaking of cool, some folks over at the Royal Institute of Technology in Stockholm, Sweden have come up with a way of making paper with a much higher tensile strength than cast iron. The possibile uses for the substance range from the mundane (stronger grocery bags) to the more exotic (an alternative to carbon fibers for making plastic composite materials).

Frontline Aerospace is working on a prototype V-STAR, an unmanned cargo plane about the size of a SUV capable of vertical takeoff and landing. While the project is currently for battlefield use, one could imagine the changes such a plane could eventually make in the civilian world.

And finally, it wouldn't be a technology post for me if I didn't include something about alternative energy. Ars Technica has a nice round up of the current state of energy storage techniques. It's short but quite informative. Robert Cringely's column this week is much more speculative, but he discusses a proposed system that could, if it works, turn our garbage into a power source capable of replacing half our oil consumption. Whether you believe something like this can work now or not, such ideas are clearly needed as we go into the future more aware of our unsustainable habits.

Watching the Watchers

We start today by looking at the words of Iranian President Ahmadinejad. He blames a weak dollar and market speculation on the high price of oil. Oh brother, I actually agree with that. What I'm not so sure about is his charge that the manipulation is being done for deliberate economic and political ends.

On the other hand, CEO salaries are still rising faster than workers.' There is also a climbing awareness of the failures of the so-called pay for performance compensation packages that are widely used. To an outsider, such things might make executive salaries look like a rigged market.

Meanwhile, the impact of citizen reporting is still being shaken out. Governments around the world arrested bloggers at a rate three times higher in 2007 than 2006. And it's not just totalitarian regeimes that are concerned with bloggers. Here on the home front traditional media companies are still trying to come to gripps with the sea change the Internet has wrought. The Associated Press issued a DMCA takedown notice to a web site for doing exactly what I often do here: quoting a story and linking the source.

And just in case you thought there might be consequences for the illegal use of wiretaps on American citizens, it looks like the congress might just have dissappointed you by granting immunity to the telecom industry who participated in the illegal activity.

Tuesday, June 17, 2008

Watching the Watchers Bonus Linkage: Baraknophobia

Who knew that when I alluded last night to the misinformation spread about Barack Obama I was not just covering ground already obliquely mentioned in the mainstream press but also hours, hours I say, ahead of The Daily Show coverage of that very subject. And yes, the Daily Show has better writing than I do.

Monday, June 16, 2008

Watching the Watchers: Primary Musings

The presidential race scene has calmed down a bit with the two main contenders chosen. Now, as we await the change from pandering to the base during the primaries to pandering to the middle for the general election, it's a good time to take stock of the events. No matter what you think about the Democratic Party's candidates, you have to admit the primary race was a historic one. A little known, relatively inexperienced candidate beat a heavily favored career politician... Right, that's not the bit people are writing about.

With a woman running against an African-American man issues of sexism and racism were directly relevant for the first time in a presidential race. As a result, we saw some of the worst of American attitudes on display. Reporters spoke of an 'Appalachian gap' to describe the touchy subject of people who judge the candidate based primarily on skin color. (Interesting use of stereotype, no?) Enough of the misinformation spread about Obama's history has taken hold that his campaign took the unusual step of directly addressing the lies. Clinton was criticized for the tone of her voice, Obama for his use (or lack thereof) of lapel pins. McCain was branded the old guy. And that was just during the primaries. The main event has yet to begin in earnest, so what will the real election hold for the candidates?

Politics is a dirty game, and we all know it. But mud slinging wasn't the only thing on display. One BBC commentator puts it this way, "Obama's nomination has achieved in one night what hand-wringing Bush diplomacy has failed to deliver in four years: a powerful signal that America still has the power to surprise and inspire." And no matter your political leanings, it's pretty hard to disagree with that.

Monday, June 9, 2008

Programming Languages are Not Like the Highlander

I once assumed the constant debates over which programming languages one should learn were a sign of the discipline's relatively young age. Sooner or later, we as engineers would figure out the right tools for the right tasks and everything would eventually settle down. Recently though, I've come to another not-so-shocking conclusion: there is no universal right answer.

Language is a framework for expressing thought; computer languages are frameworks for expressing computer programs. So when it comes to programming languages, the only real advice I can give is to treat learning them like you would learning real languages. First, pick up the ones you will most likely need for where you want to be. If you want to work full time in France, you are going to need to learn French. If you want to add code to the Linux kernel, you are going to have to know C. Second, take a look at trendy languages that offer truly different features from the ones you are using. Code in Java all day? Try Python or Ruby. Never seen anything but C++? Take a look at C#. And finally, if you have the time and the desire, pick up anything that interests you or will expand your knowledge of computer science. Languages such as Erlang, Lisp, Smalltalk, and Prolog spring to mind. The good news is that computer languages are far, far easier to learn than verbal languages. Especially after you pick up the first one.

Of course, with that said, I do have my own opinions about what languages programmers should be familiar with. And since this is the Internet, I'm compelled to share them with you. My minimal list of languages you will need to know consists of the following four, presented in order of importance.

C
You can be a programmer without knowing C, but it's harder. C is the lowest level platform independent abstract language. If you know how to use C, you know how the machine actually works. And there is no substitute for real knowledge when it comes time to do the more technical aspects of debugging and profiling. But that isn't the real reason to know C. The real reason is every computer you will ever program will have a C compiler available.* Even if you aren't writing directly in C, it's the universal interface language. Whether you are implementing speedy libraries for Ruby or interfacing to native code through JNI in Java, C is what you use to glue the components together. Plus, you really need C under your belt before you tackle...

C++
As a superset of C, you may wonder why I list this separately, but I believe that C++ is a whole different world than C (actually, it's about three different worlds, but that's another post). C++ is significant because it is the only widely used, object oriented language that compiles to platform native executable code at build time. Minimal startup time hits, full, explicit resource control, multi-paradigm language support, and built in C interoperability make C++ the only game in town for a huge segment of applications. Of course, that same list of bullet points makes it an extremely complicated language, full of odd edge cases and dozens of things that you just have to remember to get correct. I hate C++. But I wouldn't be as good or as versatile a programmer if I didn't know it.

SQL
Structured Query Language is how you get data into and out of databases. Databases are everywhere in our Web-enabled world, and at some point you will need to be able to access one natively. Aside from the strictly practical use, SQL is a declarative language that is a completely different style of programming than the procedural languages above. The problem with SQL is that every database vendor implements it with slightly different behaviors, and then layers on proprietary extensions. When starting out, learn the basics of the standard language and then pick up details later, when you actually work on a real project.

Any Scripting Language
A Scripting Language, for the purpose of this discussion, is any dynamic language that allows rapid development and supports batch-like automation. The leading candidates at the moment appear to be Python and Ruby, with Perl still around but beginning to fall out of favor. Again the idea here is to get a different perspective on how things can be done. A modern scripting language will give you simple regular expression support, dynamic typing, and more functional programming constructs such as closures and dynamic reflection. They are also handy for quick and dirty automation of any number of the repetitive tasks programmers often find themselves faced with.

And yes, I do pass my own requirements, but it's worth noting that I only regularly use two of the four languages above in my day job. I can even dismiss all that writing I just did. After all, if you just want to do enough to get by, picking the programming languages you learn is a practical task. You will learn the languages you learn in school because you have to be able to pass the classes. You will learn the languages at work you need to learn to either get the job or do the job. Everything else is gravy. Of course, sometimes gravy makes the difference between palatable and terrible, but I'm stretching the metaphor.

In spite of the many flame wars that erupt over which one is the best, the languages wars will never end. There is no Prize waiting for the one final immortal language to finally cut off the heads of all the other competing languages. Maybe some day the rate of creation of new languages will slow as the pace of hardware changes slows and the myriad niches of our industry settle on standard or de facto standard solutions, but we have a long way to go before that happens. And until then the languages you learn as a programmer will continue to reflect both to your peers and to hiring managers your personal choices, tastes, and drive.

* Yes, it's possible that if you work on embedded devices, you might find a custom chip that doesn't have a C compiler. However, I would bet large sums of money that if there isn't a C compiler for it, there won't be any compiler for it and you will be using an assembly language. These days that's a vanishingly small percentage of the job market, and you will still need to know C because the first application you write will almost certainly be that missing C compiler.

Sunday, June 1, 2008

Potentially Practicing Practice

I was more than a little amused when Lifehacker offered up a link to an essay about becoming an expert on any subject using deliberate practice. You too can be great at anything! All it will take is two hours a day for the better part of a decade... When someone just comes out and says it like that it seems both obvious and ridiculous. Of course I could learn things if I managed to spend two hours a day, every day on it! But who can actually do that?

Scott Adams calculated that a working person who was trying to be healthy would have about three hours a day of free time. When I averaged my own free time a while back (yes, I'm a nerd) it came to four hours of free time per weeknight, if I manage to get to work early. I have many interests I want to pursue, from professional to stress relieving to simple hobbies. With the summer stretched out in front of me, it's high time to take a look at some of them and see what I want to focus on for the next few months.

What do Bruce Lee and Henry Thoreau have in common? They were both big on simplifying. Engineers and programmers believe in it too. So, why not start looking at everything and trim down until I get a decent summer goal list.

On the professional front, I have some personal programming projects kicking around in my head, several glaring holes in my basic CS knowledge that could use filling, and a continued need to practice my communication skills. Looking at that list, I can very quickly cross out the personal programming projects. As much as I would like to say I can program for ten hours a day, I can't. Unless something changes dramatically, that one will have to wait a while. The basic knowledge one is actually a good focus for this summer. I've got a couple of subjects in mind that could be easily fed by a book or two, and reading and practicing an hour or two here and there should be no problem. As for the communications bit, well, I keep this 'blog going as writing practice, and I've found over the past months that once a week is a sustainable post rate for me. The trick for turning it into deliberate practice will be to produce more original content. I've got plenty of topics lined up, so I just need to sit down and write. As far as my hobbies go, I've picked one that I want to be my true focus for the summer. That will be what I really try to block off time for every day. I should also mention that there is going to be at least one vacation of the get-out-and-hike-in-the-woods variety (for sanity purposes).

So that's it for me; what about you? How do you manage your free time? Any goals for the summer?