July 2005 Archives

brian d foy

AddThis Social Bookmark Button

Related link: http://conferences.oreillynet.com/cs/os2005/view/e_sess/7546

Is this your first time at an OSCON? Would you like a bit of help figuriung out what to do and see, how to talk to the Big names, and so on?

Monday night, Jim Brandt and I will discuss all the things about conferences that aren’t in the conference guide. Many frequent conference goers use a host of tools to supplement their conference experience, and we will share these tools with beginners. We’ll talk about things like IRC, kwikis, SubEthaEdit, blogs, Open Source luminaries (talking to the pros), and BOFs.

Kevin Shockey

AddThis Social Bookmark Button

Related link: http://www.mono-live.org

Recently I shared my vision for the value of Live Linux distributions that minimize the obstacles for learning open source software development. This came as an epiphany for us at the SNAP Development Center after we released SNAPPIX version 0.7. In the beginning, we only wanted to build a showcase for SNAP Platform, but once we had a working copy, the possibilities became instantly obvious. This was also true when I heard about a new Live Linux CD featuring Mono. This article expands on this premise, reviews Mono Live and shares an interview I conducted with the originator of the CD, Joseph Hill. It is my hope that this Live Linux CD plays an important role in the adoption and spread of the Mono project (as I have previously written here).

Introduction

Mono Live was released on May 24, 2005. Although there are several Live Linux CDs with Mono, they are all based on Knoppix and use KDE as the default Linux desktop. This distribution is based on the Ubuntu Live Linux CD. In many ways, the outstanding experience available from the Mono Live CD is made possible from Ubuntu. Since Ubuntu features GNOME as the default desktop, it only follows that due to Mono’s heavy reliance on Gtk+, Mono Live would provide superior functionality. The current version of Mono Live includes Mono, version 1.1.7 and all of the key platform components, including a broad assortment of Mono Gtk-sharp based GUI applications, ASP.NET applications, and the software infrastructure to run the application. In addition to the core mono-based tools MonoDevelop, MonoDoc, and xsp, the Live CD also includes Postgres, pgAdmin III, and Glade.

Mono Live also has a major bonus. When the Mono Live CD is inserted into a MS Windows machine, it automatically provides the ability to install the complete Mono for Windows installation package. Thus, Mono Live serves a dual purpose, first as a complete Live Linux distribution, and second as a complete Mono Windows distribution.

History

According to Joseph Hill, the founder of the Mono Live project, the idea first came from seeing Knoppix about a year and a half ago, and realizing that a live CD might be the perfect vehicle to expose .NET developers to Mono and Linux. I would definitely agree with Joseph. I believe that this is a much needed and important step for the Mono project. Building bridges between the Windows .Net community and the possibilities and choices gained by new deployment alternatives is mandatory for Mono. For although the Windows installation experience is far superior to the Linux installation, the Windows version of Mono still lacks key pieces. Currently MonoDevelop and many of the marque Mono applications are still only available on Linux. I know that the Mono community is working hard to balance these disparities, they are slow in coming. Early this year, there were rumors within the community that MonoDevelop would be available by the O’Reilly Open Source Convention, but unfortunately that has not happened.

Review - Sample Applications Galore

For me, the stability and tight integration and implementation in Mono Live is superb. For one who has struggled with configuring Mono in the past, using the CD was a huge relief. With just a simple boot from CD, I had a rich Mono platform to explore and use. For that reason, I believe that Mono Live accomplishes what Joseph set out to provide. It especially excels in demonstrating the capabilities of the Mono platform. The CD comes with a rich collection of sample applications, both Gtk-Sharp GUI-based and ASP.NET. From the Mono community of applications, the CD includes the following Gtk-Sharp applications:

  • Tomboy - Tomboy is a desktop note-taking application for Linux and Unix. Simple and easy to use, but with potential to help you organize the ideas and information you deal with every day.
  • Muine - Muine is a music player for GNOME.
  • Blam - Blam is a tool that helps you keep track of the growing number of news feeds distributed as RSS. Blam lets you subscribe to any number of feeds and provides an easy to use and clean interface to stay up to date.
  • F-Spot - F-Spot is an application designed to provide personal photo management to the GNOME desktop. Features include import, export, printing and advanced sorting of digital images.
  • Beagle - Beagle is a search tool that ransacks your personal information space to find whatever you’re looking for. Beagle can search in many different domains.

These applications are currently available in binary form, but a future release of Mono Live will include source code as well. As mentioned, the CD also provides the leading sample ASP.NET applications for Mono. The sample ASP.NET application included are:

  • IBuySpy Portal - his project is a port of the original IBuySpy Portal Solution Starter kit from http://www.asp.net. The principal features of this version of the portal are that it adds support for Mono, and uses PostgreSQL for the database.
  • BlogX - Mono Blog is a Mono-compatible version of the BlogX weblog engine originally developed by Chris Anderson. Because BlogX is written in C# and uses XML to store content, it is one of the easiest complete, open-source .NET applications to get running on Mono. This project will attempt to make it even more simple by correcting all Mono incompatibilities in the source, and by maintaining all Makefiles needed to build the project.
  • nGallery - nGallery is a FREEWARE, OPEN SOURCE implementation of a image gallery written purely in managed .NET and C#. nGallery provides a solution to store and display your image galleries on your own Web site, as well as providing means for customizing and extending nGallery to your own personal likings.
  • ASP.NET Forums - The Mono Forums power the new GotMono forums at http://forums.gotmono.net and are a port of the original ASP.NET Forums from http://www.asp.net/Forums/. The principal features of this version of the Forums are that it adds support for Mono, and uses PostgreSQL for the database, so that it can be run entirely on Linux.
  • mojoPortal - MojoPortal is an Object Oriented web site framework written in C# that runs under ASP.NET on Windows or under mono on GNU/Linux or Mac OS X.

These sample applications run using the xsp server included with Mono. With desktop and menu links to each, running these sample applications is only a simple click away. In addition, in order to support these sample applications, Mono Live features the Postgres relational database management server. The CD comes pre-installed with all of the configuration necessary to access the pre-created databases. All of the ASP.NET applications include the full source code.

As with all Live Linux distributions, Mono Live features USB Flash compatibility allowing for creating and saving work. As with many other specialized Live Linux distributions, Mono Live inherents a broad level of functionality from the base Linux distribution. The Ubuntu Live CD provides complete network, file system, and device functionality.

Results

Reaction from the Mono and .Net community has been strong. After two months of availability, Mono Live has been downloaded more than 15,000 times. Novell Corporation, the host for the Mono project, has also demonstrated their support of the concept of a Live CD with Mono. During July of this year, they requested Joseph to assist in creating Mono Live DVD, a Live Linux DVD version based on the Novell Linux Desktop. This distribution should be available soon. Finally, interest in Mono Live continues to grow. Various user groups from the Dallas area, where Joseph resides, have invited him for demonstrations of the features of the Live CD and Joseph and i will host a Birds of a Feather session to discuss and demonstrate Mono Live. For those interested, the session will be Thursday August 4, 2005 in room E142. The session will begin at 8:30pm.

Roadmap

Building on the initial success, the Mono Live CD will naturally mature as the core Mono functionality matures. One challenge going forward, Joseph admitted,is resisting the temptation of the community to believe that the Mono Live is a “new” Linux distribution. Instead, Joseph believes that the future developments of the Mono Live CD should focus on providing an inviting experience from learning and using the Mono platform. However, as I have wrote previously I believe that special purpose distributions, like Mono Live, will serve an important role in the future of open source software development. The complexities of installing a stable working environment from an ever changing base of components and packages can be a huge obstacle for neophytes. I believe that having the luxury to install a well integrated and stable Mono platform is critical. For me, the moment I booted the Mono Live CD, I immediately wanted to replicate it onto a machine. I believe that many others will want the exact same thing.

What follows is an interview I did with Joseph Hill. His answers provide a clear picture of the origins, the obstacles over come, and the future of Mono Live. I originally intended on just including several quotes from the interview, but I decided that the entire interview would be of interest to everyone. I want to thank Joseph for his time and passion for bringing this project to fruition.

Interview

Kevin: Where did the idea come from?
Joseph: When I first saw Knoppix about a year and a half ago, the value of the CD as a tool to expose .NET developers to Mono was immediately apparent to me; however, when I researched the idea, I found that there were already a few flavors of Monoppix in the works, so I went to work on other things. I returned to the idea this spring when I was discussing with a friend how none of the existing projects seemed to be headed in the direction I had originally envisioned, and he pointed out to me how easy it was to customize the Ubuntu LiveCD.

Kevin: What were the objectives heading into the project?
Joseph: The primary objective of the project was to show developers what they can do with Mono. That means that not only did we need to make it as easy as possible for developers to get their feet wet with Mono development, but we also wanted to show off the many applications that already run on Mono.

Aside from that, we realized that a lot of our target audience would be coming from Windows, and that their impression of Mono would be closely tied to their impression of the Linux desktop, so we needed to make sure that the overall of experience of the CD from start to finish would leave them feeling good about the whole platform in general. We’ve tried to accomplish that by making the user experience something more like working on somebody’s active Linux installation, where they already have photos in F-Spot, music in Muine, notes in Tomboy, etc., rather than the typical LiveCD experience, which seems to be a little more like starting from scratch on a fresh Linux install.

Kevin: What were some of the biggest challenges?
Joseph: It seems like each major feature on the CD was a big challenge at the time. First, just proving the concept would work at all was daunting task “Can we get Mono on the CD? Can we get PostgreSQL to run right?” Then it was “Does MonoDevelop work? Will it run Beagle? Can all of this possibly work at the same time?”

Luckily, I was able to get a lot of help along the way. I sent Ben Maurer an early build when I thought I was getting close to done with it, and he had a lot of great ideas that really helped complete the experience. He also helped me get Brandon Hale to help us out by contributing custom Ubuntu packages of Mono and all of the applications built just for the CD.

Our most recent challenge has been that we were running out of space, but luckily someone put instructions for taking care of that on the Ubuntu wiki, so now we have plenty of spare room.

Kevin: Are any other application going to be included?
Joseph: Definitely. Now that we have the size issue addressed, we’re really searching for new content. We’re going to need some cool new apps to keep the content fresh, and to justify new releases beyond just getting the latest version of Mono. We already have a few Windows Forms examples picked out for the next release.

What we really need, though, is more documentation. Since we want to make experiencing Mono as easy as possible, and we know that we probably only have the users attention for a short while, it would be really nice to get some tutorials collected on there that will help developers hit the ground running.

Kevin: How has the reception been? Many comments? Like what?
Joseph: The reception has been far better than anything I could have imagined. Mono Live has appeared in a few news blurbs out there, and in the few months we’ve been out, we’ve seen at least 15,000 downloads (which seems phenomenal to me, considering the size of the CD).

Everyone I’ve talked to has been pleased with the CD, but there have been a lot of feature requests, too. That’s great news, though, because it shows that people have really been working with it, and it tells us where we need to go. The most popular requests have been for Samba support, Windows Forms support, and, of course, an installable version of the CD.

Kevin: What can you do with the CD, that would surprise people?
Joseph: I hope there aren’t that many surprises in there, because we really want it to be easy for users to use the CD to its fullest potential.

One thing that hopefully won’t come as a surprise, but seems to be often overlooked: If you put the CD in a machine that is already booted into Windows, you’ll be given the option to install Mono for windows, along with several other handy development tools. In upcoming releases, I want to focus on growing the experience on the Windows side of the CD so that we can really highlight the cross-platform capabilities of Mono.

Kevin: How goes the work to make the CD installable?
Joseph: Honestly, this is really a low priority to me, because I don’t think that’s where our efforts can be best focused. I don’t really want to build a new distribution. I just want to provide users with an inviting experience of the platform.

The real answer to the installation problem is that Mono and (all of the Mono applications) need to be just this easy to get going on any Linux distribution you pick up as they are on the CD. I think Mono is getting there.

Have you tried Mono Live? What do you think?

Kevin Shockey

AddThis Social Bookmark Button

It’s amazing to work in such a dynamic and rapidly changing industry. It was just last year during OSCON that the debate about whether Sun should release Java was all the rage. However as we head into this year’s convention, that debate has mostly died. It has been replaced with an active open source Java community that is becoming about more vocal and assertive.

To summarize briefly last year’s focus on this debate, first there was a panel session entitled “Open Source Java”. The panel included Tim O’Reilly, Bruno Ferreira de Souza, Simon Phipps, and Eric Raymond. I remember during that session having a distinct sense that nothing significant was accomplished in the session. Since that session I have researched all sides of the debate and lead a project focused on moving the open source Java forward. Now when I review my notes from that session I find that my original sense was accurate, no new ground was covered in the session.

Besides the panel session, Bruno Ferreira de Souza also lead a Birds of Feather session on “Java Livre: the discussion about Java and Open Source continues…”. For me, it was while listening to Bruno that I believe I caught the open source Java bug. From listening to Bruno’s impassioned discussion of the subject I finally understood why open source Java was so important and the potential role it must play in the future of Java. I think my partner at the SNAP Development Center, PJ Cabrera who also attended Bruno’s session, must have caught the bug too because following last year’s OSCON he lead our technical team in the creation of the SNAP Platform and SNAPPIX, both of which include an completely integrated open source implementation of the Java standard.

Now, as we arrive in Portland this weekend, we find, first, OSCON contains a rejuvenated interest in Java, with a significant increase in sessions in the Java track. We also find that the previous year’s debate is completely absent from the schedule. In its place are three sessions specifically about open source Java.

On Wednesday at 11:35am, Geir Magnusson will present “Open Source Java”. As leader of the newly formed Apache Harmony incubating project, Geir will provide an introduction to the Apache Harmony project, provide a status update, and present the near-term roadmap for the project.

On Thursday at 10:45am, Tom Tromey, of Red Hat, Inc. will present “The State of Free JVMs”. Tom’s talk will cover the successes of the recent past, the current state of affairs, and some insight into the developments you can expect in the next year, as well as the rationale for open source JVMs. There will also be cool demos.

Finally on Thursday evening at 7:30pm, the SNAP Development Center Team will present “The Reality of Open Source Java: SNAP Platform and SNAPPIX” Our session will build on these preceding two sessions and examine the myths and the realities of Open Source Java. With a clearer understanding of the realities, our session will establish the grounds for a new on-going discussion about the future of Open Source Java. We will also demonstrate version 0.9 of the SNAPPIX Live Linux CD featuring the SNAP Platform.

With these three sessions, it certainly seems to me that the last year has made quite a difference for open source Java. The debate which has raged on for years is quieting and and we are witnessing a shift in the momentum and visibility of the open source Java community.

What sessions are on your agenda?

brian d foy

AddThis Social Bookmark Button

A long time ago in a galaxy far, far away, Michael Schwern created a Perl module for objects to represent database queries. You didn’t need SQL or other fancy things. Through various magics, it figured it all out behind-the-scenes and it worked. He called it Class::DBI, and it was good.

Later, Tony Bowden took over the lead maintenance role, set up a mailing list and wiki, and that was good too. One of the hallmarks of a good open source project is that you can pass on the reins to someone else, not only because people want to work on it but because a lot of people want to use it (those always don’t go together ;)

This week, there was a bit of a dust-up on the Class::DBI mailing list. You can still find the archives, but Tony killed the list. (Fear not, there is a new one already, even if it is just temporary).

Sebastian Riedel and Tony apparently had some off-list as well as on-list scuffles. Tony kicked Sebastian off the list and Sebastian came right back onto the list. Rinse, repeat. Finally Tony threatens legal action.

Update: Wednesday morning In a show of his willingness to compromise, Sebastian voluntarily removed his post from use.Perl. I’m optimistic that this can defuse most of the situation.

Sebastian created used an his account on Use.perl (Correction: Sebastian tells me he had the account for a while, but hadn’t used it to post to the journal before) and posted to post his side of the story along with some private email between him and Tony in “What the hell is going on in Tony Bowden’s head?”. However crass that may be, he did it. He also disabled didn’t enable comments so and people couldn’t reply to his post (Correction: Sebastian tells me that this was uninentional. Indeed, whether comments are turned on or off is a preferences setting and not something you have to decide for each entry). From other posts and some private personal email with other people, I’ve gathered there were some disagreements about the feature set that would make it into the next release and how those would work. That seems to be the sort of thing that causes these sorts of problems: two people convinced they are right and unable to work together because of it.

Schwern replied in his own Use.perl journal that Sebastian fudged the story a little bit by linking to a seemingly innocent part of the email exchange. Schwern provided the links that show a lot of inflammatory language from Sebastian.

It gets worse though. Since Sebastian posted to Use.perl and Tony doesn’t like what Sebastian says, Tony threatens Use.perl (a VA project Correction: Chris Nador owns Use.perl, but VA sponsors the site infrastructure) with legal action. Tony, a formerly respected member of the Perl community, now seems to think he has to burn down the village to save it.

No matter who’s right, these things don’t help either side. Indeed, as sigzero points out, this is just more fodder for people who think Perlers are a bunch ill-tempered miscreants. Where a rational person might just take the weekend off and let things blow over (or at least not inflame the situation), both sides seem to want to fight it out. They’ve forgotten that they both want a really cool module to get better, and maybe that means they don’t have to kill each other to make it happen.

Who cares about these petty problems? A lot of people are using Class::DBI and they want to keep using it. It’s not going to disappear. Even if Tony decided to delete every version on CPAN, the BackPAN still has all of the current and previous versions. Someone will just take his place.

The mostly sane workers and users really just want to get on with business, I’ve heard rumblings of a fork in Class::DBI. The only way around this might be to just bypass the personality problem by removing the personalities. I think that would tragic, even if it ends up being unavoidable. Can Class::DBI do that without bifurcating?

Do you think Class::DBI should fork?

Andy Oram

AddThis Social Bookmark Button

Related link: http://www.edri.org/edrigram/number3.15/retention

The idea of collecting and mining enormous (unfathomably enormous)
amounts of data for information about crime goes back a long way, but
recent terror attacks have made it more appealing to many people.

I talked to one privacy rights advocate about the London bombings of
July 7, and asked whether he would re-evaluate the privacy community’s
stance against public surveillance cameras, since these cameras proved
critical in figuring out who did the bombings. He admitted that we’re
likely to see more and more cameras now–at the cost of millions and
millions of dollars that could go toward more effective anti-crime
initiatives.

But he also pointed out, “These cameras might help investigate and
prosecute terror after it happens, but they won’t be effective at
preventing terror, except for the deterrent effect.” (Well, there’s
also the gain of capturing people who helped terror.)

Now the call for the digital equivalent of surveillance cameras, data
retention on networks, is growing. A European Commission directive
wants all network operators to keep traffic information for one
year. This is not Echelon, slurping up everything you say or do. It
means that mobile telephone providers will record all the digits you
press, and that Internet providers will record the addresses you
go. This probably records such “traffic” as the search terms you enter
at web sites.

The objection to these practices has always been that they may be
turned against you. Safeguards such as warrants tend to get weakened
under political pressure; law enforcement either wins examptions from
oversight or just ignores laws about oversight. The data is also a
sitting duck for other malicious snoopers.

The article referenced above gives more information about a petition
against data retention. If you live in the European Union and want to
sign the petition, visit

the site for signing
.

I think that if we ever calm down and seriously talk about how to stop
terror, one of the major strategies will involve “human int” (having
people embedded in the organizations that are potentially
dangerous). This, of course, leads to its own human rights issues;
moles can also be used abusively. But it’s a very low-tech solution;
one that involves getting closer to and building trust with the
communities where terror is likely to grow. It requires holding back
from shooting dark-skinned men just because they act suspiciously, and
doing other things to show that society wants all its residents to be
full-fledged members.

Christopher Diggins

AddThis Social Bookmark Button

Related link: http://www.heron-language.com

I’m a programming language designer … okay, you can stop laughing. If you don’t believe me, you can look at my wallet … it’s empty. I quit my day job two years ago to pursue my programming language project (Heron) full-time. Since then I have been doing a lot of freelance writing about C++, while developing Heron.

Think of Heron as C++ meets Eiffel, they get drunk, take C out back, and shoot it.

I made some small progress on the language, and the last version of Heron wasn’t too bad. I was able to do some cool stuff with it like write an XML parser, but no one really cared. So I decided a few months ago to go back to the drawing board.

I realized that my big problem was that I lacked focus and I was trying to stuff every cool technology I could find into the language. As a result I was doing a mediochre job of everything, rather than a good job at anything. The new version of Heron focuses on its biggest advantages: generic programming and programming with contracts (PwC). Generic programming support allows Heron programs to be very efficient, while the embedded support for PwC makes for faster development and fewer defects.

At this point, I am preparing the first version of the standard library, and I am wondering what I should emphasize. So my question to you is this: what would it take for a programming language to get you excited?

What would you consider to be the viagra of programming language features?

Bruno Pedro

AddThis Social Bookmark Button

I’ve always been following the latest fads and I see a lot of technologies being used together to create a more interesting web. Take, for instance, RSS. RSS is not a new technology. So why was its global adoption so delayed?

A bit of history

I don’t want to bore you with all the facts so just check the RSS History for the whole thing. Bottom line: we now have different two RSS versions: 1.0 (RDF Site Summary) and 2.0 (Really Simple Syndication). Some websites use the first, some user the last. While it seems that RSS 2.0 is gaining popularity (because it descends directly from the original), RSS 1.0 is still sticking.

My personal experience: in 1999 I co-created a website and since the beginning I always tried to syndicate its content. First we deployed a series of javascript channels (very popular at that time) that allowed any website owner to display auction content. Then we deployed an index.rdf file and started publishing content readable by any feed reader. At that time there were few feed readers though, so it wasn’t very popular.

Syndicating is gaining popularity

Anyway, this website was bought by a large company and one of the first features to let go was, obviously enough, the javascript channels and the index.rdf thing. It didn’t make sense to them to let go content instead of attracting people to their own site. It didn’t make sense at that time, at least, because now it seems that the opposite is again the way to go. Or so we like to imagine because, you know, this is just another fad.

It seems to me that all the enthusiasm we are now witnessing is a product of the power of technology evangelism. People like Dave Winer and Tim O’Reilly are driving every CEO crazy when they talk about monetizing content by syndicating it. Wired and the long tail article also played a major role on this global change. When you see China People’s Daily syndicating their news sections, you can feel that something is moving your way, really fast.

People want content

You can stand still and wait for it to hit you hard, or you can start running now and hope that you don’t fall behind. Because when everybody else has their content syndicated (and maybe monetized, but that’s another story), people will run away from your website (no, really).

People want content and want to consume it at their own pace, in their own terms. They don’t want to view it through that layout you took three months to design and get approved by the board of directors. They don’t want to have to click twice to get to that news piece you just edited last night and took an entire morning to publish. They don’t want to wait for your website to load when there’s a traffic surge.

They just want the content, period. Don’t even bother trying to help them consume it, just make it available.

Why RSS is the way to go

RSS is now the best approach to this paradigm. With feed readers widely available, feed directories and search engines gaining popularity as you read this, rest assured that your content will be consumed.

You just have to let it go. Learning how to abandon your old-fashioned website is now your major concern. In a few months you won’t even look back, or reality (some people call it competition) will step on you.

Are you already syndicating your content? What are you waiting for?

Andy Oram

AddThis Social Bookmark Button

Spontaneous outbursts can reveal much about group behavior.
Advocates of open source showed such a moment on the first day of the
Ottawa Linux Symposium, about which I recently
reported
at length. But the incident I am thinking of was recorded for history
in a

Newsforge article by David “cdlu” Graham
:

He [Doug Fisher] wrapped up his presentation to the usual polite
applause and closed his slide show to reveal the message “Windows XP
has locked your desktop,” resulting in the single loudest and most
sustained booing by nearly everyone present I have ever heard,
followed by a member of the audience rushing to the front brandishing
a Linux installation CD to widespread applause.

I was present for this incident, and vouch that the noise and emotion
released was extraordinary. Wow! I felt like I was in the middle of a
scene from some Hollywood epic where the soldiers raise their spears
and roar their defiance to the enemy.

Graham makes a subtle but valuable comment on the incident while
describing the next speaker:

His laptop, in contrast to Fisher’s, ran Linux, but perhaps
demonstrated why Fisher’s didn’t. After a lengthy battle with X to
have an appropriate resolution for the overhead projector, he launched
his presentation entitled “How to talk to business people about the
value of open source,” which sparked the comment of an audience member
sitting near me: “not like this.”

So why was this audience of 800 hard-core Linux developers and
adopters so intolerant of a speaker who uses a Window platform? What
is the deep well from which such emotion comes?

They have legitimate anger, of course, at Microsoft’s illegal
anticompetitive behavior, which has been well established in several
courts, and the company’s continuing hounding of Linux by pressuring
governments, funding SCO, and spreading biased reports. The attendees
also have the same kind of familiar team spirit that breaks out
(sometimes quite violently) when different sports fans come together.

But that does not add up, in my view, to the display of anger I saw
that evening. Another ingredient needs to be added: insecurity.

Linux developers and users are aware that what they put together is
not yet convenient to install or easy to use. They resent Windows not
only because it has a dominating position, but because that position
is maintained by something more organic than the vaguaries of
computing history or corporate behavior. Microsoft (on the desktop, in
particular) awaits an open source challenge, and that challenge is not
yet strong enough.

I have prepared some fairly detailed slide presentations, trying out
Microsoft’s PowerPoint, OpenOffice.org’s Presenter, and KDE’s
KPresenter for that purpose. Presentation suites are either very hard
to develop or are the perennially neglected stepchildren of the office
suite, because I found all three products embarrassingly buggy.
PowerPoint bears the most shame because it’s been around the longest
and Microsoft promotes it as a professional tool worth a lot of money.

Still, if Doug Fisher has spent a career developing presentations with
PowerPoint, why is it a sin for him to use it for one more
presentation? It would certainly have been a smart move to feel out
the mood of his audience beforehand and to take the time to set up
Linux and a free software office suite. But if the Linux and open
source crowd felt more secure in the superiority of their product, his
gaffe would have been greeted with just a few snorts and giggles.

I see too much of this moralistic hypersensitivity among people whose
goals I respect. Environmentalists are telling us to replace our light
bulbs, take public transportation, and recycle everything we can–yes,
all wonderful goals. But some environmentalists also realize that
individual behavior change cannot be achieved on a mass scale through
moralizing; new technologies and institutional strategies must drive
progress.

The same goes for personal life choices, which contribute to the
health care crisis. It would be great for everybody to cut down on
tobacco, trans fats, chemical household products, and epic Hollywood
movies, but lecturing does little to help.

You can apply this principle even to nationalistic and religiously
close-minded political stances. These are tearing the world apart, but
we can’t get anywhere by telling people just to throw away their
commitments to these beliefs and to embrace a neutral, diverse
world. Those attempting change have to realize that people have
reasons for holding on to their stances.

Getting back to open source: the way forward is to build something so
great it compels everyone to use it, and to move institutions
(ironically, the topic of the second presentation that evening at
Ottawa Linux Symposium) to positions where they can make the switch.

The really great aspect of the Ottawa Linux Symposium is that its
attitude overall is in diametric opposition to the defensiveness
displayed toward the Windows-wielding presenter. The Linux developers
and their communities could easily waste time wallowing in excuses
such as “Vendors don’t give us their specs” or “Implementations don’t
conform to standards.” But they don’t do this. They say, “What can we
do to make this work?” And that’s the path to success.

brian d foy

AddThis Social Bookmark Button

Related link: http://www.theperlreview.com/Interviews/ian-ptdn-20050712.html?ora

I talk to Ian Langworth about his first book, Perl Testing: A Developer’s Notebook and what’s it’s like to be a first time author, what’s new in the testing world, and what he sees coming up.

Perl testing has been a hot topic for a while, and we finally have a book about it. Well, we almost have the book. It’s done, edited, checked, and just waiting to hit the streets. It’s a pretty exciting summer for Perl books.

Chris Tyler

AddThis Social Bookmark Button

I’ve been doing more and more work with XML, and my appreciation for that family of technologies is growing by the day. XML and open data standards solved a problem that arose with OpenOffice.org Writer a few weeks ago.

OpenOffice.org is (of course) an open source office suite. I’ve been using a pre-2.0 test version of the software, and it has demonstrated a few instabilities but also has some great new features.

I spent all of Tuesday evening using OOo to draft a detailed outline for a book. The outline contained nearly 200 entries, and while the resulting document was fairly short — only a few pages long — it represented a lot of work.

You can imagine my dismay when the document wouldn’t open the next morning. “Read Error,” the program whined. Something incomprehensible about a format error at (2,2847) in styles.xml.

Not a problem, I thought — I’ll just use the backup that I’d saved. Same error! The previous version of the file - same error!

If I’d written that document in WordPerfect or MS Word, that would have been the end of the story. I’d probably have to rewrite. I know it happens; I’ve been there.

But OOo 2.0 uses a document format that is an OASIS standard, which means that it’s publicly documented XML. Actually, an OOo document is a zip archive containing multiple XML files.

So I unzipped the OOo archive and checked the styles.xml file using xmlwf (checking to see if the XML was ‘well-formed’, which is step one of two on the road to correctness; the second hurdle is validity according to the schema). Sure enough, there was a duplicate element attribute at the line and column indicated in the cryptic OOo error message.

Edit it out, zip it back up, try again, and … same error, different location. But after a couple of iterations the problem was fixed.

Sure, it was a pain, and sure, it should never have happened. But in an imperfect world, I’d much rather have my data in an accessible format that can be manipulated by many different tools than locked up in an undocumented, proprietary format.

Have open data formats saved your day?

Ming Chow

AddThis Social Bookmark Button

My appreciation for Computer Science started very early in high school (circa 1995). My first computer course was an introduction to programming in BASIC. Then I took Advanced Placement Computer Science A and AB, both taught in Pascal. My first exposure to C/C++ was in my Senior year in high school. I did very well in the all courses. I completed programming assignments weeks before they were due. In college, I did very well in courses that had a substantial programming component.

Today, I still enjoy programming a great deal, while concentrating on other fields such as HCI and Security. I credit the many great teachers and professors I studied under over the years. But I feel that there is one other element that drives my interest in computer programming: I always look at it as an art.

When I was a kid, I had thoughts of becoming a scientist one day.

Then I wanted to be an artist.

I feel that I got the best of both worlds. I feel very deeply that computer programming is an art. Why? It is a challenging and creative process. There is always more than one way to solve any given problem. I have seen “Hello, world!” written in various languages, and in various ways –from the obvious to the obfuscated. There are many ways to write a loop. A program that is written in 20 lines of Java, can be be written in 5 lines of Perl. Of course, you can know a plethora of languages, but you have to choose the correct programming language for the job.

My high school teacher told me something that still sticks to me today: a computer program is no different than a novel. Source code should be read like a novel, and great programs should be planned so like any great novel.

Derek Sivers

AddThis Social Bookmark Button

Related link: http://www.vim.org/

Doing a new project in Rails, I started using vim when putting it together, then a couple weeks went by, and I never got out of vim!

I used to use GUI-based editors with syntax highlighting, code hints and such - until I found that vim can do all of that! Once I figured out how to make it automatically close all my parens, braces, and brackets, I was sold.

Here’s my favorite .vimrc thing that helped….

Put this in ~.vimrc

:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
function ClosePair(char)
  if getline('.')[col('.') - 1] == a:char
    return "<Right>"
  else
    return a:char
  endif
endf

The other thing that helped a lot was konsole. I like to full-screen all my terminal windows. Never fond of having lots of little boxes floating around. So, when in a Rails dev-mood, I open up a tab at the bottom for EACH of these:

  • project
  • model
  • view
  • controller
  • lang
  • database (pg/mysql console)
  • Rails/ActiveRecord console
  • misc
  • log

I just [SHIFT]-arrow back-n-forth between them, each one taking the full screen, and getting my full attention while working.

Andy Oram

AddThis Social Bookmark Button

Related link: http://www.linuxsymposium.org/2005/

It’s been another Ottawa Linux Symposium, and before it fades into a
daze, let’s see whether I can extract some themes and threads.

The appeal of large systems and Xen

The type of Linux deployment that dominated this symposium was that of
a large, mission-critical system. Xen virtualization in particular was
heavily featured and attracted large numbers of attendees. More than
one attendee joked that Friday was “Xen day.”

Xen lets one piece of hardware run multiple operating systems,
controlling their access to the hardware through a kind of
meta-operating-system called the Hypervisor.

There is nothing new about the idea of virtualization, of course. It
was associated with the IBM 360 further back than most of us can
remember (in fact, IBM executives have told me they think Linux has a
major role to play keeping old 360-series computers going by running
in their virtual machines), and it’s now making good money for
VMWare. (More about them a bit later.)

Like VMWare, the major uses of Xen seem to be server consolidation
(which means running several instances of Linux on one piece of
hardware, a useful deployment because Linux seems to work best running
only one server daemon) and virtual hosting. Speaker Mike D. Day also
showed that Xen could be used to deploy Linux quickly to a large array
of computers.

Ian Pratt gave a comprehensive overview of Xen’s goals and
implementation. He defined Xen’s main achievements as two-fold
(although his talk really focused on the first): isolating different
processes in a secure manner, and controlling resources so different
Quality of Service options could be offered to different processes.

Pratt then laid out some of the ingenuity that makes Xen more
efficient than VMWare or User Mode Linux. For instance, Xen divides
page tables among its guest operating systems and gives each guest
full control over its page tables, so that the hardware doesn’t slow
down under the load of two levels of page management (one by the guest
and one by the Hypervisor).

There is one necessary exception to Xen’s practice of handing full
control over paging to a guest: the guest is not allowed to write the
pages that contain its page tables. If it could do that, it could give
itself access to the other guests’ pages. On the other hand, the guest
must be able somehow to indicate that it needs a new page. So the Xen
team has found some tricks to make it easy for Xen to trap a guest’s
writes to the page tables, make sure they’re legitimate, and let the
guest go ahead with the writes.

Another tour de force Pratt illustrated was how Xen eases
failover. Whether scheduled or in a panic situation, hardware
sometimes has to go down. Xen can make it easier to migrate processes
to new systems with minimal downtime.

This is done by doing a series of pre-copies while the guest system
keeps running and updating its state. The first copy takes a long time
because it starts from scratch, but each subsequent copy has less
state information to transfer and thus takes less and less time. (One
weakness of Xen is that it maintains a lot of state and therefore has
a lot of information to copy.) The amount of CPU time devoted to the
copying can also be titrated to leave plenty of time for the process
to continue handling incoming requests. Pratt actually drew applause
when he showed the CPU utilization of a highly loaded Apache server
during transfer to another node, and added it was down for only 164
milliseconds during the transfer.

As I mentioned, Pratt really concentrated on Xen’s goal of isolating
processes, but the second goal of doling out resources was touched on
by a Rik van Riel in a BOF that evening. He divided the resources
worth tracking into four types: CPU utilization, memory, data I/O, and
network I/O. CPU utilization, he said, was easy to track without
intruding on the guest operating system. So was I/O. Memory, which a
Hypervisor could easily give too little or too much of to a guest
operating system, was a much harder nut to crack. He suggested clever
ways that patterns of waiting for reads, waiting for writes, and the
length of request queues (way-stations for reads and writes) could
tell the Hypervisor whether an operating system was underprovisioned
or overprovisioned with memory. But more experimentation is needed to
see whether these are valid measures.

Xen offers lot of features already on 32-bit x86 hardware, with 64-bit
x86 and AMD coming along too. A number of operating systems can be
guests, including Linux, Solaris, FreeBSD, and OpenBSD. An upcoming
facility called VT-x should allow Xen to run operating systems that
haven’t been instrumented for it–so even Windows will someday show up
on the list.

VMWare is not passively accepting the limits that have long been
assumed on virtualization. They know that if they can break down the
barrier between Hypervisor and guest operating system, and learn just
a bit about what the operating system is doing (taking a spin lock,
for instance, or releasing a disk block), they can achieve fantastic
speed-ups in virtualization. An unannounced speaker from VMWare
presented some of their innovations at van Riel’s BOF, under the name
para-virtualization.

Para-virtualization’s goal is to blur the barrier between operating
system and Hypervisor enough to obtain useful information, while
minimizing engineering costs and the risk of breaking the operating
system. VMWare knows that Linux developers would have little tolerance
for a development process that required them to slow down so VMWare
could keep up, and that Linux distributors would push back if VMWare
slowed down performance or introduced risk.

Their solution is to introduce a new layer (named VMI) that would
cause some 30 to 50 instructions in the operating system to trap into
the Hypervisor instead of executing as normal. This is reminiscent of
the trap instructions introduced by a debugger into a binary, but
would be even less intrusive, requiring no change to the binary of the
kernel.

The solution is unique to each processor being emulated, but could
apply to any operating system compiled for that processor. The speaker
claimed that para-virtualization had been easy to introduce into the
Linux development tree and could be maintained as open source with a
typical open source development and testing process.

A narrow range of other topics

Clustering–which, as speaker Bruce J. Walker pointed out, is the
converse of virtualization because it makes many systems act as
one–also turned up a lot at the symposium. Walker said the topic goes
well with virtualization, because if sites want to use virtualization
as an aid to handling failover, they need to coordinate the computer
nodes between which the operating system crosses. He presented a
proposal at the symposium for adding a pointer to the kernel’s task
structure that (with a very small footprint and no impact on
non-clustered systems) would help clustering systems handle the need
to discover which processes were running on remote systems and to
communicate with them.

The wide range of sessions on kernel changes–including solutions to
improve storage management, such as multipath device access–were part
of evidence that every kernel task (caching, filesystems, etc.) is
being examined under a microscope to determine how it can scale
better, adapt to future evolution, and shave off waste.

Other Linux deployments received less attention at this symposium. I
noticed nothing about interesting but arcane deployments such as
robotics or carrier grade (telephony) applications. Unlike the
symposium I attended four years ago, this one gave just a nod to the
desktop. Instead, the desktop formed the subject of its own two-day
conference preceding this one, as reported in
a recent blog of mine.
A bit more at the symposium was offered on embedded systems. The
developers give a lot of attention to power management, which I
suspect is done for the benefit of embedded developers, but also
benefits desktop users who have laptops.

Concerns about power management have a major impact on support for
hyperthreading, as discussed by Suresh Siddha in his talk on Chip
Multi Processing. The driving factor is that power consumption is the
same on a chip regardless of whether just one thread is active, or
both. If optimal performance is your goal, you want processes
distributed among all processors, even if only one thread is active on
each. But this maximizes power consumption. So if power management is
a concern as well, the algorithm must be quite different, and must try
to fill the threads of each active chip while leaving some chips idle.

I was told that the 2.6 kernel is much larger than the 2.4 version
because developers honored the feature request list of sites running
big iron. The losers in this exchange are embedded developers, many of
whom insist on sticking with 2.4. The 2.6 version’s slow boot-up is
particularly detrimental to adoption for embedded systems.

Several talks offered practical advice on the use of debugging and
instrumentation tools to make developers more effective.

I attended the Fedora and Gentoo BOFs partly to see whether I could
detect any demographic or cultural differences in the attendees, but
they seemed pretty comparable. The Fedora BOF was much larger, of
course. Gentoo has an impressive following, though; it’s BOF was led
by two IBM employees who say it’s gaining adherents among developers
at IBM, and someone pointed out that the Mozilla Project runs its
servers on Gentoo.

To capture some of Red Hat’s and SUSE’s followers, the Gentoo
developers are considering a slower moving, more stable Enterprise
edition, but an Enterprise edition seems like an oxymoron to me for a
distribution that is known as the most adventurous, cutting-edge of
the popular distributions, and for a team that prides itself on
letting each user customize his or her installation.

Summary

Some of the talks at this conference were the most information-rich
I’ve ever attended. When I look over my notes, I am amazed how much
valuable information the speaker conveyed in just one hour.

The detail could sometimes become tiresome, to be sure. I don’t think
an audience was well-served by a description of a feature that goes
field by field or function by function. What made the talks useful
were their summaries of a feature’s requirements, history, alternative
or rejected implementations, and subtle implications of the chosen
implementation.

I sensed less concern at this conference about political trends that
could have an impact on Linux and open source. I just didn’t hear much
talk about them. Perhaps the vote of the European Union against
patents eased the worries of attendees. New respect in the business
community and larger public for open source (note the groundswell of
praise for Firefox) and the gradual receding of the SCO case may also
contribute to this lull in political hyperalertness–although more
threats are likely to arise.

A lot of the folks here are extraordinarily intelligent and capable of
extreme levels of dedicated effort. We’re lucky they’re obsessed with
such things as reverse engineering old video games or getting every
feature of power management to work on Linux. If one of them set his
mind on evil, he could take over the world. (On the other hand, he
couldn’t be as evil as the people who are taking over the
world.)

The deeper theme at this symposium is that open source is constantly
being revitalized by the astonishing energy and intelligence of those
drawn to it for whatever reason. And it’s making inroads in
little-known places. I mentioned earlier the reverse engineering of a
game that runs on Windows: the hacker discovered along the way that
this game uses Ogg Vorbis files for audio and Python scripts to
implement many of its rules. It’s hard to imagine a computer field
without open source–but then, no such field will ever exist.

Earlier blog on this symposium:

Ottawa Linux Symposium, 2005: first day

Derek Sivers

AddThis Social Bookmark Button

Related link: http://www.adams1.com/pub/russadam/upccode.html

CD Baby has UPC or EAN barcodes in our database for most albums. Problem is : we let our clients enter their barcode themselves, and we had people entering invalid codes! (1234567890, etc)

Here’s a PL/pgSQL function for PostgreSQL databases that, when called in your table constraints, will not allow invalid barcodes in your database anymore.

CREATE OR REPLACE FUNCTION valid_barcode(barcode text) RETURNS boolean AS $function$
DECLARE
  b text;
  odd int;
  even int;
  s int;
BEGIN
  IF barcode IS NULL THEN
    return NULL;
  END IF;
  IF LENGTH(barcode) < 12 OR LENGTH(barcode) > 13 THEN
    return false;
  END IF;
  -- normalize UPC and EAN to both be 13 digits
  IF LENGTH(barcode) = 12 THEN
    b = '0' || barcode;
  ELSE
    b = barcode;
  END IF;
  -- sum of odd digits times 3, plus sum of even digits
  even = CAST(SUBSTR(b, 1, 1) AS int) + CAST(SUBSTR(b, 3, 1) AS int) + CAST(SUBSTR(b, 5, 1) AS int) + CAST(SUBSTR(b, 7, 1) AS int) + CAST(SUBSTR(b, 9, 1) AS int) + CAST(SUBSTR(b, 11, 1) AS int);
  odd = CAST(SUBSTR(b, 2, 1) AS int) + CAST(SUBSTR(b, 4, 1) AS int) + CAST(SUBSTR(b, 6, 1) AS int) + CAST(SUBSTR(b, 8, 1) AS int) + CAST(SUBSTR(b, 10, 1) AS int) + CAST(SUBSTR(b, 12, 1) AS int);
  s = (3 * odd) + even;
  -- remainder to nearest 10 should be same as last check digit
  IF (CAST((CEIL(CAST(s AS float8) / 10) * 10) AS int) % s) = CAST(SUBSTR(b, 13, 1) AS int) THEN
    return true;
  ELSE
    return false;
  END IF;
END;
$function$ LANGUAGE plpgsql;

In your database table, then, you just need two things:
barcode char(13) (of course)
… and at the end of the table definition …
CONSTRAINT bad_barcode CHECK (valid_barcode(barcode))

That will not allow any invalid UPC/EAN barcodes in your database.

I’m a PL/pgSQL newbie - lemme have it - how to improve this?

chromatic

AddThis Social Bookmark Button

Related link: http://www.oreillynet.com/linux/novell/register.csp?doc=getservices&sitesrc=LCHo…

Occasionally I skim a whitepaper. I feel a little bit guilty saying that;
I’m not a CIO or CTO — I think of myself as a developer and author. Still,
there are sometimes a few really good pieces of data to extract from even
press releases masquerading as tech marketing whitepapers.

(Vendors, beware. This isn’t a plea to e-mail me more whitepapers. I said
occasionally for a reason!)

One of the benefits from a liberal arts education ought to be the ability
to analyze a piece of writing and to understand the point of view of the
author. It’s interesting doing this with whitepapers because of how it can
reveal a vendor’s strategy. For example, take the linked Novell whitepaper
(registration required, sorry).

The paper starts by assuming that its readers already believe that
Linux-based systems have a place on the edges of their network, running web
servers or DNS, for example. It also assumes that the readers are considering
using Linux for more important services, such as in data centers or for
“mission critical” services.

That’s a big difference from seven years ago, when I had to scrounge a
spare PC to run a custom program I wrote to collect statistics on Tier 2
customer support requests for high-end laser printers. (A couple of years
later, the company started its own dedicated Linux strategy and floundered for
a while. I stopped paying attention.) The question is not “Can I run Linux
on a box under my desk for something I need?” or “Is LAMP a good option for
our internal or even external web sites?” but “What do I need to do to migrate
our most important internal systems to run on Linux?”

Of course, it’s always helpful to consider the audience. My guess is CIOs
and CTOs, based on the arguments about interoperability and vendor support.
Keep that in mind.

Another point is the quick assertion — as if to believers already — that
capable vendor support is as important as the openness of Linux-based systems.
(Robert Lefkowitz recently argued that the
true cost of software is a small part of its price tag
.) At first, these
might seem to be at odds, but the paper then goes on to compare Novell’s
support for heterogenous networks, running multiple Linux distributions, with
that of other vendors. While there are many free software business models
built around the idea of providing support, it’s interesting to see a vendor
take the idea of interoperability and offer support for competing products
without necessarily encouraging migration.

Interoperability may be the most important concept in the latter half of
the paper. While someone like me might argue that openness and freedom are
important reasons to choose free software and an open source person might
argue for improved development processes and quality, someone managing a large
existing network has more practical considerations — such as not replacing
everything all at once, or even much of anything in the near future.

That’s the image that the whitepaper tries to paint. I can imagine how
reassuring readers that this is not (necessarily) a migration path is very
important to keeping their trust.

The rest of the paper is as you might expect; here’s what Novell does and
can do for you. There are useful tidbits for trend watchers: the debate over
the purpose and goals of vendor certification and training, remote management
of multiple distributions from the same tool, and legal indemnification.

Maybe tracing through a whitepaper to uncover a vendor’s strategy and to
learn a few things about the intended audience isn’t the most fun way to spend
a Friday afternoon, but it can be enlightening. We have a few more
whitepapers in our Novell Learning Channel that I’ll skim and analyze. In the
meantime, you might pass them along to your CxOs and IT managers.

Linux-based OSes — fated to be one-of-many or open systems eventually render proprietary platforms irrelevant?

Derek Sivers

AddThis Social Bookmark Button

Being the owner of a company, I constantly get people coming to me saying they’ve got the “solution” to some problem.

But… I *LOVE* programming! I love creating. I love the process as much as (or more than) the result! I’d rather DO something than have it DONE.

In other words:

I don’t want the solution … I want the problem.

But hey - I’m weird like that.

Jono Bacon

AddThis Social Bookmark Button

I am a musician. I spend a reasonably large proportion of my life creating and recording music. My home studio has all the marks of a musician - guitars, drums, mics, mixers and of course a computer. Despite the fact that pretty much all of my computers run Linux, the studio box is running Windows 2000 so I can use my sound recording tool of choice; Cubase.

From a Open Source consultant and advocates perspective, that computer is obviously a chink in the armour. To replace it with a Linux box and achieve the same results is a real challenge though. There are simply no multi-tracking applications on Linux that provide a comparative experience in terms of functionality and integration. Don’t get me wrong, there are certainly efforts going in to this area and applications such as Ardour, Wired and Rosegarden, but these tools face a number of uphill battles in winning me over. The interesting point is that the challenge is not focused so much on features but on usability and integration.

It is fair to say that the requirements for audio engineering are fairly complex. The need to record audio at different levels of quality, layer on further tracks, mix them, apply effects, edit waves, perform overdubs and mix down are all essential requirements for the sound engineer and musician. Each of these features is no or less important than the other, and they all play a key role in creating a quality recording. When you read through the feature list for many of these tools, they offer the kind of features that I am talking about above. They certainly allow you to record tracks, cut them, adjust their volume and EQ in the mixer, apply some effects and mix them down. On a hard technical level, the feature list is largely satisfied - it is the ’soft’ requirements that are the issue.

When you are identifying the requirements in any kind of software development, it is always essential to prioritise both the hard technical issues and also the ’soft’ social issues. As much as supporting the above features is essential, it is also essential to match the mental mode of operation that the user operates in. When people are recording music, this mode is creative, and technology is typically relegated to unimportance - it should just work. When I am making music, I don’t care for technology. I don’t care about the spec of amps and guitars, I don’t care about the technical characteristics of the mixer; I just want to plug in and record. The time between the birth of a song and getting it down on disk must be short - the creative mind is hampered tiny technical issues, and these issues are unacceptable. As such, any technical barrier in front of creativity is a real issue, and this where the Open Source solution really needs focus. The problems here are not just for those who create the multi-track software applications, but for the entire software stack from the kernel up.

The two flaws; integration and usability

Integration is a key problem in the current Open Source offering, and this is a responsibility of both the application developers and the distributors. If you try to run one of the many multi-track applications, it will need to talk to one of any number of sound systems. This not only requires me to understand what a sound system is, but I also need to dig through the documentation and determine which one it is, how I run it and in which mode. As I am sat there with my guitar resting on my lap, this is one of those frustrating technical barriers.

The integration issue is proportionate throughout the entire system. If I plug in a USB sound card, I want all of my applications to make use of it. Not only that, but I want to be able to configure the sound card from within my application. If you have a simple single channel sound card, the audio mixer will suffice, but if you have a complex card with 10 ins and 10 outs and multiple recording modes, you need an application to manage this. This is where cards such as the M-Audio Delta range fly on Windows - they come with a little control application to manage these parameters. You can certainly control levels with the ALSA mixer, but it will not allow you to deal with the many other options for the card.

The components in the system that do not affect the production of a recording from an interaction perspective need to be fundamentally invisible from the user.

Usability

The second issue is usability. Multi-track tools are renowned for being complex to use. This complexity is not necessarily an issue with the concept of recording audio into tracks, but the issue of having the requisite knowledge to spit shine the track with EQ, dynamics an effects to get the best out if it. This knowledge sits outside of the application. The same can be said for IDE’s - creating a project in an IDE is fairly straightforward; the challenge lies with understanding the code - an entirely separate issue.

The solution to this problem is presets. The vast majority of users who record music are recording within the established remit of a genre. As an example, I record a lot of metal. This genre has some common traits when recording - the guitars are present and fairly scooped, the vocals are up front but slightly recessed in the mix, the bass drum plays a prominent role and requires a ‘clicky’ tone with high mid-range. I also record the entirely opposite ambient/classical style, which also has modes of practise - warm acoustic stringed instruments that are layered and panned throughout the stereo field, very present and up front vocals, plenty of reverb and delay etc.

Each of these modes of practise can be reasonably implemented in sensible defaults throughout the entire application. This not only applies to effects, but to other areas. Some ideas:

  • You could create a new song based on genre. As an example, for a rock band there are typically two guitars, a bass, vocals and guitar. This feature would create the tracks, name them and apply the default effects and panning.
  • All effects need sensible defaults. The common effects such as chorus, reverb, compression, limiting, wah, flanger and others can all have reasonable defaults, and tools such as Cubase do include some impressive defaults.
  • Mixing can also have reasonable defaults. EQ is a science that many don’t understand, and a solid set of defaults can satisfy both common mixing needs and special effects such as simulating AM radio and phone lines.

Many of the issues of usability can be easily solved by identifying the kind of steps required to achieve a common goal. For many people who record, they are often stood up holding an instrument in a small room filled by a band. Interactions with the computer need to be kept to a minimum. The kind of visual interface requirements for recording and the requirements for mixing are entirely different. Recording is simple - you need to manage the stream of audio coming into the computer and assign it to a track, with some minimum level management. Mixing is entirely different beast in which the entire range of features in the tool need to be readily at hand. Mixing is a process that you conduct on your own with a beer, recording is a process you conduct with amps, guitars and band members to contend with.

The application should also hook into the desktop be intuitive. Although Ardour has been touted as one of the tools with the greatest potential, a real sticking issue is the fact that it looks so drastically different from the rest of my GNOME driven desktop (Ardour uses GTK) and is rather unintuitive. With some experience behind me of using Cubase, Cakewalk and Magix Audio Studio, I suspected Ardour with be a cinch to pick up - unfortunately I found it impossible to be productive straight away. If I can’t use it, how is someone with no knowledge of audio recording supposed to use it? Ardour is certainly not the only offender here, and this seems to apply with a number of tools.

Finding a solution

The solution to the problem is integrating key, predictable components and making them work flawlessly. In all honestly, if I cannot download the software and make it work straight away without tinkering around with sound servers and such, it will not get a look in. Period. When you download and use Firefox it just works, when you use OpenOffice.org it just works, when you use The GIMP it just works - when you use Cubase it just works.

Part of this challenge is using comprehensive frameworks for building applications. It seems that GStreamer is becoming a very prominent framework with good support from a range of different applications for different desktops. In addition to this, HAL and DBUS are becoming the de-facto solution for managing hardware. with this in mind, hardware specific issues should really be directed to the kernel and HAL/DBUS teams. This will ensure that changes will propagate upwards through the stack and ease integration. From some discussions with the GStreamer and HAL teams, it seems that the kind of plug and play philosophy regarding hardware and software is becoming reality. With GStreamer and HAL shipping with all distributions, there is the opportunity for the application to just work. The work can then concentrate on being a great multi-tracker.

I am convinced the the problems discussed here have readily available solutions, but I think opening some dialog with the providers of different parts of the stack needs to happen to allow the solution to develop. Creating an integrated and usable system for audio engineering is something that will require cooperation from different parts of the community. This has worked elsewhere with other problem domains, and I see no reason why it cannot work here. Lets see how the story pans out…

What are your thoughts and experiences? Can audio production on Linux get easier? Can we achieve the simplicity experienced on other systems? Are there any interesting developments occurring that will solve these problems? Share your thoughts below…

brian d foy

AddThis Social Bookmark Button

Related link: http://perlcast.com/2005/07/21/perlcast-interview-with-brian-foy/

Josh McAdams from Perlcast interviews me about The Perl Review. We recorded the interview late one night at YAPC::NA, so I hope I don’t sound too sleepy.

brian d foy

AddThis Social Bookmark Button

Related link: http://www.perlmonks.org/index.pl?node_id=476730

A comment to an entry in Spidering Hacks says:

It is hopeless. This code never really worked and now Amazon has made it imposible to access their pages with Perl.

Oh really! It’s not so much that the poster thinks Perl can’t do it that he implies a computer program can’t do it.

So I wrote the program (in Perl) to do it.

I could probably use some Web Services API, but WWW::Mechanize turned out to be easier.

Andy Oram

AddThis Social Bookmark Button

Related link: http://www.linuxsymposium.org/2005/

I’ve finished the first day of the Ottawa Linux Symposium, and already
feel I’ve had enough conference to last a long while. The last time I
got to an OLS was four years ago. In the intervening time they’ve
grown a great deal, learned a lot, and become even more
professional. Some 800 attendees from 37 countries are here.

Already, two speakers have made wisecracks about OpenOffice.org,
tagging it as a bloated memory hog. I have the suspicion that some
attendees see Linux as something to run for its own intrinsic value,
rather than as a platform for useful applications that can actually
help people accomplish something.

The keynote speaker was Jonathan Corbet of the highly respected
LWN.net news site,
and lead author on the two latest editions of
Linux Device Drivers.
A few months ago, he ruminated at his LWN.net site on the critique
that Linux doesn’t have a road map. His retort was that
there is plenty of information in full view about where Linux is
heading, for those with the time and knowledge to put it together.

Jonathan’s keynote built on this assertion by providing some
predictions (with suitable caveats) about the upcoming course of
Linux. These predictions include the entrenched use of git for Linux
source control, more support for clustering filesystems, consensus on
the use of SELinux for security, and various enhancements to improve