Archive for the ‘Development’ Category

The DoD Supports OSS!

Wednesday, October 28th, 2009

After years of uncertainty, a memo has been released by the US Department of Defense (DoD) that makes it official: Open Source Software (OSS) is just fine and dandy in critical applications, and should not be discounted in officially supported solutions developed by or for the government. Despite continued criticism by Microsoft and other companies — who often have a lot to lose if their overpriced commercial solutions lose market share in the lucrative government market — there’s nothing intrinsically wrong with OSS.

The memo says it clearly, i.e. that “In almost all cases, OSS meets the definition of ‘commercial computer software’ and shall be given appropriate statutory preference…”

The “commercial software” part is key. If something is considered non-commercial, it requires special approval that, in many cases, probably makes its use in a government project far more difficult and time consuming. I suspect many agencies were probably avoiding the use or consideration of Open Source solutions because of this very conundrum. But now the rules are clear, with Open Source classified as “commercial” like anything off-the-shelf from a traditional vendor.

The other bit of confusion that should be cleared up by this new memo is in regard to warranties and “support” for particular applications. Previous rulings said that “if you use a binary program, you must either have a warranty or the source code for a program.” That, as David points out in his article, is perfectly sensible…but many departments apparently just read the “warranty” part and didn’t realize or understand that, with Open Source solutions, they already had full access to the source code by default.

This is really good news for Open Source developers, and for the movement in general. A lot of Linux applications are Open Source. So are many well-known languages (at least Perl, Python, and the Ruby on Rails web development environment, not to mention the venerable Gnu suite like gcc and g++). It’s probably sure to annoy commercial vendors, who have obvious skin in the game of keeping Open Source software on the back burner while they rake in big bucks. But them’s the breaks in the industry — any viable solution should have an equal chance of adoption if it meets a given need. Big-dollar vendors shouldn’t own this market. Competition is a good thing.

Catch the Wave…if you Can

Wednesday, September 30th, 2009

I don’t know about you, but I have way too many accounts that I deal with on a regular basis. Email, IM, blogs, and others are scattered all over the ‘Net, and I have to manage passwords for them all. Wouldn’t it be nice if there was a one-stop shopping option for all those services?

As it turns out, Google is developing one. It’s called Google Wave, and is being put together by the same sibling team that brought us Google Maps. The problem is that it’s still in development (as are many Google applications) and is, at present, available by invitation only. 100,000 lucky (?) users will be invited to participate in a beta test, but everyone else is excluded for the time being.

From the description currently available, the service sounds pretty cool. Instead of offering discrete mail, news, IM, and other services, Wave puts them all in one account. “Many of the functions of Google Wave already exist, but require logging into separate applications- email, instant messaging, office productivity, blogging, etc. Google Wave will provide you with one platform that ties all of these separate applications together.”

The approach also tries to cut down on what could loosely be termed “latency” (a term also used in networking to describe the delay between transmission and receipt of a data packet) of messages. If you send an email, you have to wait for the recipient to reply. This can take time. IM is better since it offers instant gratification, but Wave takes it a step further. Its “participants can comment inline and the statements are accompanied by the user’s avatar and a timestamp allowing you to easily identify who said what, when.” This includes commenting on documents that are in production (i.e. being edited). So users “can see text appear in the wave as it is being typed- even as they typo and backspace to correct the text.”

That’s pretty cool. It could also help cut down on edit/proofread/revise/repeat cycles in business or educational settings.

Unnecessarily Cryptic Code

Tuesday, September 22nd, 2009

I’ve learned numerous programming languages over the years, and have written (this scares me) hundreds of thousands of lines of code. C, Java, JavaScript, Perl, and so forth have all been on the menu at various points in my career. Each has its idiosyncrasies and odd behaviors. C has pointers (not to mention function pointers, which are a whole different ball of wax), but it’s also lightning fast and, when written correctly, is very memory-efficient. Java is big, unwieldy, and is a massive memory pig. Perl is well known as the “Swiss Army knife” of languages — it does everything you want it to, but may not be the most elegant approach.

So now I’m learning Ruby (and will soon be diving into the Rails add-in framework). It’s been interesting so far, and parts of the language are very familiar feeling. One classmate initially described Ruby syntax as “particularly cryptic Perl,” and I think he was absolutely correct in most respects. It’s not a bad language in terms of functionality, which is very rich. It’s just that, so far, it seems more a mishmash of interesting components of other languages than a truly independent effort.

One of the oddest parts is what are known as “blocks.” These are basically something like inline functions, and generally appear on one line of code following a method call. Ruby developers (they call themselves “Rubyists” and have quite a close-knit community) seem to be in love with pushing the boundaries of “one-liners” in terms of complexity. For example, for class I just wrote one that looks like this:

a.inject(Hash.new(0)) { | m, e | m[e] += 1; m }

This little snippet takes an existing array containing a list of words (say “fred”, “barney”, “wilma”, “barney”, “pebbles”, “fred”) and transforms it into a hash, or set of key/value pairs. The keys are the individual words, and the values are the number of times each word appears in the array. So this would generate something like “fred” => 2, “barney” => 1, “wilma” => 1, and so forth. Very tricky. And, in my opinion, too cryptic to be used in anything like a production context.

Over the years, I’ve run into many developers who are too in love with coding “elegance,” or with showing how neat and tricky things can be. Folks like these often create code that’s hard to read and maintain. No maintenance developer should have to stare at a line of code for a half hour, trying to parse out the cool and deep meaning imparted to it by the original developer. Why not just define a function that’ll do the same work, and call it as needed? And document what you’re doing, for crying out loud.

Ruby is interesting, and popular. If used correctly, it does produce some very easy and clean code. But in the wrong hands, it’s as legible as ancient Sumerian.

Serious Geek Envy

Thursday, September 17th, 2009

I’ve never been one for big, flashy office spaces. And despite being a long-term geek, I don’t have an office filled to the brim with tech. I suffice quite nicely with a single monitor, three office machines (laptop, Linux development server, Windows general-use box) and a general home network. I don’t have the time, or the energy, to devote to designing a huge office filled with toys. Plus, I’d have to dust around all that hardware. That’s just not worth the effort.

That said, I must admit to a major case of geek envy when I saw Stefan Didak’s new office. Wow. Just wow. Heck, I’d take his old setup off his hands, just to get all those great monitors. This place looks like something you’d find at NASA or in a relatively recent Star Trek movie. And it’s all functional, which is even better. He actually uses all this equipment. It manages his various websites, provides a development environment for his distributed programming team, and (shocking!) is almost never used for gaming.

As he notes on his site, he uses all the monitors pretty much simultaneously. Unlike some of us, he hates minimizing windows or having one application obstructed by another, so he buys enough screen real estate to make sure that never happens. I can understand how he feels, and have sometimes considered adding a second monitor to my current environment. Screen real estate is a major consideration, especially when you’re writing, testing, and debugging code in certain environments.

This type of setup would also be useful for network monitoring offices (and I’ve seen several that look very similar). Such offices often need to display statistical and availability information for multiple networks, systems, and other resources.

It should be emphasized that all of the systems Mr. Didak has in his office aren’t used as workstations. He has hundreds of gigabytes of storage space, probably set up in a RAID array for safety and redundancy purposes, that are used for large code development offices. Effectively, he has a small server room in his house.

Do you have a room like this, or (scarier still) one that’s even more elaborate? Post a URL of yours in the Comments section, and we can all have a geekfest.

Cool Upcoming Tech

Wednesday, August 26th, 2009

If you think Google Maps or “bump to share” iPhone apps are cool, just take a look at some of the truly cutting edge projects currently underway at various companies around the globe. Some of the algorithms currently under development are simply mind blowing. Sure, some may never see the light of day. But they’re indicative of how far we’ve come and how much untapped computing power is lurking around the globe.

Just consider #1 on the list, which “can look at photographic images and determine where the picture was taken” using GPS and topographic data read directly from the photo. Once the software scans the image, it “searches GPS-tagged images in Flickr for photos that are similar in appearance” and returns the result. That’s not as cool as, for instance, comparing the image directly to topographic or GPS data directly, but it’s a pretty good start.

Then there’s the software from Argonne National Laboratory that can “quickly and accurately assimilate biological data into climate models to generate more reliable forecasts.” Just imagine the impact such a tool could have on our predictive abilities. And people say nothing useful ever comes from the government. If only they knew how some of those tax dollars were being spent!

If you want something a bit more light-hearted (though it really isn’t) you can check out the University of California At Berkeley’s “joke recommendation site, dubbed Jester.” It “rates humor on a scale of “less funny” to “more funny.” It then recommends jokes based on the user’s taste (or lack thereof), dynamically making recommendations based on the user’s most recent ratings.” What this software is really doing is providing data for building new and improved recommendation systems like the one Amazon has used for years to anticipate customer tastes.

The moral of the story is simple: we’ve barely scratched the surface of computing power. Flickr and other sites may be the Next Big Thing…until a bored public yawns and moves on. But new and incredible applications are being developed every day. And not all are mindless diversions for bored Technophiles. Some actually do useful work!

An Inexpensive HTML Editor

Tuesday, August 4th, 2009

Finding good, powerful, and above all inexpensive software isn’t easy. Sure, you can spend $400 or more on a copy of Microsoft Office, but why go to that expense if you’re only concerned with basic word processing and a few spreadsheets? Instead, pick up Open Office for free and it’ll probably handle 99% of the Word functionality you’re likely to use.

Likewise, paying Macromedia $300 or more for Dreamweaver (or spending an equivalent amount of cash for another commercial HTML editor/layout tool) is fine if you’re in business and need a Cadillac — or, for the money, Porsche — solution. But many people who write HTML may not need anything that full-featured. It turns out there’s a highly rated and much less expensive option on the marketplace. It’s called NoteTab and it costs only $39…if you need all the available features. Otherwise, it’s free.

For HTML folks, it has a rich feature set. It’ll let you “build document templates, add bookmarks, convert text to HTML on-the-fly, and take charge of your code. Use a simple, power-packed scripting language to create anything from a text macro to a mini-application.”

That’s just the free, or “light” version. If you decide to pony up some cash for the more full-featured Pro or Standard editions, you get “additional features including a thesaurus, multilingual spell checker, text-outline file editing, customizable keyboard shortcuts, and the creation of toolbar buttons to execute custom scripts and wizards.” So not only will NoteTab handle your HTML markup, it’ll also spell-check your documents and help with grammatical mistakes.

This isn’t just a Johnny-come-lately utility, either. It’s been around since 1998 (which is surprising since I’d never encountered it before) and has received numerous awards. The developer is even giving out a free “economic downturn” upgrade to version 5 customers by allowing them a free migration to version 6.

This is a nice, lightweight application that does just about anything most HTML writers would need. As a plus, I bet it generates W3C-compliant code–unlike most Microsoft tools to date. Try it out for free, and pay the upgrade fee if you like it. Take all the money you save over a copy of Dreamweaver, and treat yourself (and your significant other, of course) to a night on the town. Or two.

A Manufacturing Plant on your Desktop

Monday, July 27th, 2009

If you think you’ve run out of new things to do with your PC…well, you haven’t. You’ve “done” the Web, home automation, digital media (including home entertainment), and self-produced music. All well and good, but have you ever told your PC to actually build something?

I thought not. But no fear…the technology is closer than you think.

Some very clever people in the UK and elsewhere have been working on a system called “RepRap” that’s basically a small, self-contained parts-manufacturing engine. In industry parlance, it’s actually a “3D printer” that can take a set of data points and translate them into an exact copy of a given item. It uses a fine wire of plastic, similar to monofilament fishing line, to build the 3D image of a part its told to manufacture.

Now for the really cool part. Not only can RepRap produce exact copies of nearly any part (of reasonable size) you want, but its design goals also include the ability to self-replicate. Yes, that’s right. Once the first few machines are up and running, they’ll be able to produce exact copies of themselves. The goal is the creation of an “open source” hardware platform that can be exported anywhere at low cost.

The RepRap team state it this way: “what the RepRap team are doing is to develop and to give away the designs for a much cheaper machine with the novel capability of being able to self-copy (material costs are about €500). That way it’s accessible to small communities in the developing world as well as individuals in the developed world.”

The advantages are obvious. Put a few of these machines in outlying areas, and people can make their own replacement parts for broken items, not to mention components of their own design, for a very small amount of money. Commercial machines with this capability start at around $50,000US at present, so this is no small accomplishment.

Maybe in a few years we’ll see one of these (at least) on every street. And if the technology continues to develop, as it surely will, is a “Star Trek”-like “replicator” far behind?

GoogleOS?

Thursday, July 9th, 2009

Probably the biggest tech rivalry going on today is between Microsoft and Google. The former is desperately trying to hold onto its dominance in the PC marketplace while the latter works actively to overcome that dominance. It’s an uphill struggle, since Windows and Office are firmly entrenched worldwide. On the other hand, Microsoft has been attempting to wrest a larger percentage of the search market away from Google. Its latest attempt, “Bing,” has met with lukewarm response at best.

Google Apps and other projects are also languishing, and haven’t gathered much serious support so far (the fact that Google labels nearly everything, including its wildly successful Gmail, as “beta” releases doesn’t help anything). Now, however, Google is bringing out a new weapon in its attempt to unseat Microsoft. I don’t think it has a name yet, but it’s a Chrome-based operating system that Google hopes will help it take over (at least to begin with) the growing Netbook marketplace.

The new OS will be minimalist in design, and should appeal to anti-Microsoft folks due to its heavy reliance on Open Source code. From current reports, it won’t be long before we start seeing it in the marketplace. “Google intends to rely on help from the community of open-source programmers to develop the Chrome operating system, which is expected to begin running computers in the second half of 2010.”

The idea is clear: consumers don’t really care which OS they run as long as it does what they want, at a reasonable price, and isn’t hard to use. And Google appears to be taking a page from the Microsoft playbook, since “if enough computer manufacturers embrace the Chrome operating system, it could weaken Microsoft while opening up new avenues for Google.” This means they could bundle things like Google Apps, Gmail, and other offerings with the OS — just like Microsoft does today with its own offerings.

Will we see Chrome-based laptops and other machines in the future? You bet. If Google can demonstrate the ability to provide what consumers want at a better price and with fewer defects, Chrome could do what Linux has so far failed to accomplish. Or, it could fall flat on its face. Time, and the capabilities offered by the new OS, will tell.

How to Improve the Web

Thursday, June 25th, 2009

One of the problems with today’s Internet is that a great deal of it is based on protocols that may not be “optimal” in terms of performance due to age or design. TCP/IP, for instance, is 30 years old and was designed for networks that were very different from those we have today. HTML has been around for about a decade and a half (in practical terms), and has been extended numerous times to deal with changing requirements.

Google has actually proposed ways of speeding up the Internet, which include review and possible replacement of several protocols. All this is certainly a good idea, along with making pipes fatter all over the planet to handle the inevitable increases in load.

This said, we could have a lot more available bandwidth today if application developers just thought about the amount of bandwidth their programs require. For example, the spreading adoption of specific Web 2.0 techniques is (albeit slowly) helping performance in one way while degrading it in another. Things like AJAX help by eliminating the need to refresh whole pages during certain form update operations. But they can also hurt if, for example, another call is made from the browser to the server every time someone types another character in a text field.

Things will, obviously, improve over time. But entrenched applications will change slowly. For example, HTML 4 has been around a decade while standards groups debate what to really do next. Finally the logjam is probably going to break with the issuance of version 5. But “HTML 5 features have shown up in browsers, but it could take years to fully implement.”

So don’t expect a new Internet revolution soon. But you can, as usual, expect things to change.

Live Video From…your Phone

Thursday, June 11th, 2009

As if mobile phones hadn’t got enough capabilities already — now sites are popping up that allow people to share video directly from their phone. Today a friend passed along a reference to Qik – one of the companies now offering this service. I haven’t actually tried it out yet (i.e. uploaded a video) but think of the possibilities.

With sites like Qik, everyone can be a reporter, submitting video directly from a phone with no need for an intermediate upload to a PC. Going to a concert? Record and upload interesting events immediately. Get into an accident? Take a video of the damage, upload it, and point your insurance company to it so they have the full story.

From the look of their “highlights” page, they have a pretty good product too. The video capture claims to be fast and reliable, unlike many other streaming sites. They claim to support higher quality video and to have latency as low as 1-3 seconds when streaming. This comes down to “making the video truly live in order to enable real-time interaction through chat. We tag the stream at every path it takes, from the instant a person clicks the Stream button to the video appearing on the web. The entire path is then analyzed, weighed against various parameters and optimized to ensure speed of delivery.”

I remember the original Star Trek, and the Tricorder device that was able to record data at high speed for later playback. The original series was set in the 23rd century. Here we are, barely into the 21st, and we’re already very very close to having a similar device.

And if that’s not enough, a group of researchers is making another use of the accelerometers built into devices like the iPhone and BlackBerry. These guys are working on technology that will let you “write” simply by moving your hand in the air. This trick is accomplished “through software that lets cell phone users write notes in the air using their handsets and have the text or images sent to an e-mail address.”

Wow. This is just cool.