|
|
||
N. Alex Rupp's BlogOpen Source ArchivesFinal Entry: Revisiting My First AssumptionPosted by n_alex on November 06, 2005 at 10:56 PM | Permalink | Comments (0)In my first blog entry at Java.net, I wrote on August 09, 2003 that "Logic is the foundation of philosophy." I now know that this is most untrue. This is as untrue as anything I've ever said or written, moreso because it undergirded two years of feverish research. Logic is a formal, mechanically limited contraction of reason. Mechanics and logic exist in what the geometer Bernhardt Riemann would call a limited, finite "manifold" of possible action. I've been reading a good amount of Kurt Gödel, particularly his essay in the Schilpp anthology for Einstein, his contributions to Robinson's "Non-Standard Analysis", and his earlier works on incompleteness theorem. Gödel successfully showed in his youth that no logical system could ever prove all of its own axioms, and thus all were incomplete if consistent. This incompleteness is especially true and evident in the discrete mechanical devices with which we compute. It becomes specifically poignant in the context of rule engine design. Reason, by contrast, is based on a geometry of a higher order. Put succinctly, if reason were a sphere, logic would be the shadow of that sphere on your desk. Rather than logic, reason brought to bear on the exploration of ignorance is the foundation of all philosophy. Logic is a fossil by comparison, as the water in my breath is a fossil. This research has set my feet in the last six months onto an unexpected course in mathematics and philosophy, after a brief (and fascinating) foray into rule engine design. Bearing in mind the inscription above the entrance of Plato's academy, "No one should enter who knows not geometry", I've thrown myself at the task of learning how to think in terms of actions taking place on n-dimensional surfaces. Anyone who wishes to understand what I mean by "mechanically limited contraction of reason" should read Gödel and probably Riemann as well. Of course there are others worthy of attention who lived and worked in this vein, all prior to 1900, but they're in the margins. These two should get you started. Don't ever rely on books about Gödel and Riemann, or web sites about them. To hell with contemporary analysis, stick to primary source materials. Just read them, and read what they read. As for me, I'm stepping back from logic and mechanics for a while, in order to work on something infinitely more important. I've reenrolled in a University, and have a new curriculum before me. Java was fun and I'll cross its path again eventually, but next time it'll be as a man to a chisel, not as a child to a sword. My rule engine work is concluded as well for the forseeable future. And so I sign off, and leave the following question for you to consider. Which generates more energy when destroyed? An atom, or an axiom? -- JPOX 1.1.0-beta-3 in MavenPosted by n_alex on June 02, 2005 at 09:09 AM | Permalink | Comments (7)For me, JDO is all about simplicity. I don't want to sit and worry too much about database schemes and such--I need a really quick solution to a simple persistence problem, and JDO's my personal favorite for that sort of thing. I can't (and won't) comment on solutions to more complex problems at this time. Overcoming JPox integration hurdles was slightly challenging for me--and I consider myself very competent in this sort of thing. I can imagine it being very frustrating for a new user, so here are some notes and tips. I rushed straight to their latest 1.1 beta 3 release, knowing full well the pitfalls of working with betas (Drools, anyone?). After an hour or so digging through their site, I'm not certain the documentation on is up-to-date with regards to the maven plugin. But I'm alright with that. The first thing I'd like to note for newcomers to JPox, especially those working with the new 1.1 betas, is that the instructions currently (06/02/05) up on the JPox maven plugin page (http://www.jpox.org/docs/1_1/tutorials/maven.html) make the maven build sound a lot easier than it actually is. First off, you'll need to manually install the jpox-maven-plugin You'll also need to download the jdo-2.0-beta.jar, and throw it either in your local maven repository, or put it up online somewhere. I keep two or three maven repositories squirreled away online, for my own personal use. Be sure to follow Sun's license guidelines when you do this, though. Now, even though I've satisfied all my dependencies, I run "maven jpox:enhance" and I still get a NoClassDefFoundError for org/jpos/metadata/ClassMetaData. This is slightly disturbing, because it means I'll probably have to walk through the JPox jars in my repository, to see if the class is actually there, or if I missed something (which is likely). So, I open up the jpox-1.1.0-beta-3.jar in WinRAR, or rather, try to. It seems the file is corrupted. This explains the strange error. I nuke the file and rebuild in Maven. BUILD SUCCESSFUL Woot. In conclusion, when you're working with JPox in Maven, be sure to download the jdo-2.0-beta.jar and to install the JPox plugin from JPox's sourceforge download page. All the hyperlinks should be listed above. Now, what I really want to know, is when will JPox support object arrays? Mark Proctor added Drools DRL schema to CVS today!Posted by n_alex on September 14, 2004 at 02:22 PM | Permalink | Comments (1)For more information on DRL schema, visit the Drools Project Site Drools is 100% JSR-94 compliant and an order of magnitude faster!Posted by n_alex on July 28, 2004 at 04:52 AM | Permalink | Comments (7)Also, in the last week we stripped bsh out of the core and replaced it with Janino. This change has made Drools an order of magnitude faster than it was (in the worst conditions--some of our tests actually ran a half an order faster than that!) We expect to tag a 2.0-final release sometime in the next month or two. Special thanks to Andy Barnett and Mark Proctor for their commitment to the project! I feel very comfortable using Drools in production systems, and the future of the project is looking very bright indeed. I landed my dream job: Open Technology SystemsPosted by n_alex on June 21, 2004 at 12:07 PM | Permalink | Comments (4)It's been a long haul since I started working with Open Source technology. There have been times when I've joked about the rice and lentils diet, only I wasn't really joking. I was putting a brave face on a pretty frightening and hungry lifestyle. I've never known for certain if my work in Open Source was going to pan out, and I've been just barely scraping by for longer than I care to admit. I figured if that's what it took to do what I really love, which is to write software and write about software, then that's what I was going to do. I had long since resigned myself to the "starving artist" mentality, because of my devotion to writing and poetry. I actually majored in writing and poetry in college, and there's an interesting story behind that. I was nearly expelled half-way through my senior year in high school (1997) for hacking past our school's security system (with a Mac, no less) and into the local bank. I had accidentally gained access to the district's payroll system (quite without knowing it, I swear!) In Saint Croix Falls Wisconsin they don't really know how to deal with that sort of thing. So, for the second half of my senior year in high school I wasn't allowed to use a computer at school unless a teacher was sitting next to me, watching my every move. No lie. It was a tremendously painful experience. I'd already taken almost every class I needed for graduation, and had very few electives to choose from (small school). So I doubled up on the independent art classes and took FOUR English classes with Mr. Beversdorf (sorry if I mangled your last name, sir--it's been a while), a weight lifting class and study hall. That's right. Full enforced immersion in the humanities for one semester, and I never quite recovered. I didn't have a computer at home (much less the internet), so this was a crippling blow to my hacking career. I learned during that semester that I wanted to study the liberal arts when I went to college, and not computer science. And that's what I did. I ended up taking a class on first and second order sentential logical languages my first semester, but didn't begin programming in earnest until I got a gig as a web designer at Dain Sundstrom's first company, Arcane Logic. (Here's a bit of trivia--one of Dain's parters at Arcane Logic was Charlie Demerjian, who writes for TheInquirer.net, and who is my roommate. Small world, eh?) By the time I took my first (and last) computer science class in college, I'd already been studying Frege and Russel's linguistic theory, and had made it and lost it in the boom. I could have been a better computer science student, but language theory itself is what commanded my interest, along with human-computer interface theory and language/literary theory. Also the University of Minnesota's computer science classes have upwards of 400 students in them, and the labs didn't have enough seats for all the students. I was bored stiff during lectures on control flow and when all was said and done I decided not to take up CSCI as a second major. I stuck with language and literary theory, and I'm still doing it (working with semantic modules in Drools right now). And when I had to choose a major I decided to go with learning how to write the perfect words in the perfect order, which is something that programming and poetry have in common. "Poet" just doesn't look as good on the resume as "M.S. CSCI", though. So for a while, Open Source has been my only shot at actually writing good software or working with smart developers. I kept at it, hoping it'd pay off in the long run, and decided that if I couldn't get a job as a developer that I'd start my own company and go after small clients. I don't need to tell you, bootstrapping a company on zero budget is no walk in the park. Very recently, I worried that I'd have to take a "bench" position at one of the giant, soul-crushing consulting firms here in Minneapolis, or give up the ghost (to borrow an expression from Hunter Thompson). And then, one day, while I was coding out loud on Drools at the Dunn Bros coffee shop on University Avenue, I met a guy who, by chance, knew some guys starting an Open Source company. . . He asked "are you a techie?" I nodded. He asked "do you do Open Source?" I nearly choked, and gave him an affirmative nod. He didn't waste any time. He asked me for my resume right there, and since I'd just applied for a job at the University I had a copy with me. He referred me to a company called Open Technology Systems (try googling that ; ) and made me promise I'd send an email to the company's VP. A week later I met with the company's President, Gregg Kloke and the VP, Randy Olson. Gregg's background was with a company called Simon Delivers, an online grocery deliver service here in Minneapolis. Randy had done consulting with Onyx (a bit before my time, I'm afraid) and they are both really into Open Source technology. Their business is based around providing Open Source solutions to small and medium sized businesses. After an hour with these guys, I knew I wanted to join their company. Last week they invited me to their office to sit in on a meeting with a local retailer and talk about Open Source in the context of their business. I thoroughly enjoyed myself and got along really well with the others I met there. It's been a sleepless weekend, but I got the offer letter last night, and I started this afternoon. The reasons I'm blogging about this is are pretty straightforward. First of all, I'd like to share the news of my good fortune with some of my friends out there, many of whom have been trying to help me land a regular gig for a while. Second, I'd like to thank Joe, Randy and Gregg (in order of introduction) for giving me a real chance to do what I love. Finally, it's to remind all the local guys I've met, who've studied computers because they thought there was a future in it, that there is a future in it, and that it's as bright as it ever was. And Open Source is going to play a huge role in it, perhaps bigger than anyone really knows. If you're a young developer (or language geek) and the times have got you down, stick with it anyway. Things will pan out. Now, lest I jinx my good fortune, I'm going to get some work done. Unit Testing EJBsPosted by n_alex on June 11, 2004 at 03:29 PM | Permalink | Comments (0)TechEd 2004, Day 03Posted by n_alex on May 27, 2004 at 09:15 PM | Permalink | Comments (1)Open standards allow multiple vendors to offer their own implementation of valuable technologies. The Sun and JCP open standards are particularly good at helping small vendors participate in the technology market. Competition makes software cheaper, forcing the vendors to improve the quality of their products and services. Open standards also lower the risk for the end users by at least providing for some common ground between technological platforms. Microsoft and Sun seem to have much different overall attitudes about the role that Open Standards have to play in the technology industry. Like any tool, Open Standards are good for certain jobs and not so good for other jobs. At first blush, Sun is a stronger advocate of open, community driven standards. They sponsor the Java Community Process, which allows major and minor players in the software industry to determine the future of the Java language and platform. Microsoft, on the other hand, seems at first blush to be more monopolistic in their intentions. I've written this myself about them several times in the past. They envision themselves as the ground upon which all of us should build our software. They also see themselves as the thought-leaders of the industry. In many ways, both of the last two paragraphs are uninformed. From my perspective here this week, both Microsoft and Sun have more in common than might be evident at first glance. For instance, Sun created its own standards body that allows it to excercise veto power over JSRs in the Java Community Process. This is intelligent, because while the community should be able to (and encouraged to!) inform and influence the future of the Java platform, it should not be able to force that future if Sun thinks it is bad for the technology, the industry or both. This strategy lets the community push for new technologies and come to compromises and agreements with each other, but also lets Sun cast the deciding vote and do what it can to protect the community from itself (let's face itsometimes we need it). We benefit from community participation and leadership as well as from Sun's unifying vision. On the other hand, Microsoft has turned their C# and Common Language Runtime specification over to the ECMA and ISO standards organizations in order to show the world that it didn't need to excercise absolute control over the technology. Of course, they hold on tight to their implementations. I was surprised at first that Microsoft would relinquish their specs to a third party standards organization, but I think they knew what would happen if they didn't. They've come under too much fire in the past decade, and I think they've realized the benefit of sharing. Now they can commit themselves to shipping the absolute best implementation of these specifications. But what is the process for moving the technology forward? How do future versions of the spec get ratified and become standards themselves? How can companies and individuals participate in future of the technology? I can't answer these questions tonight. By working through ISO, can Microsoft provide the same unified vision that Sun can with the JCP? Or do we need to worry about dozens of *mostly compatible* CLRs popping up in the next 20 years? Open standards can serve customers and vendors, but they require compromise from both ends. The alternative, proprietary and closed albeit ubiquitous technology, might lead to a rapid evolution of features, but it also comes with the risks associated with vendor lock-in and a significant limitation on the number of vendors who can participate in the market. Macromedia's Shockwave is a perfect example of this stagnation. Everyone has seen what it can do, but not many seriously consider developing smart UIs on it. I can't say for certain why that is, but my guess is that it's because there are so few tools available for working with it, and not many developers can afford them. In this case, Macromedia might have become too successful for its own (and our own) good. I was speaking with an IBM rep yesterday afternoon, and I mentioned the tradeoff between open standards and vendor lock-in. He pointed out that in the end, everyone customizes and tweaks out their implementations of a standard technology, and that customers always get locked in to some degree or another. But he insisted it's a moot point, because all the major vendors offer migration tools to overcome the differences, and that lock-in override is just another feature they can sell. The best of these custom extensions can end up driving the future of the spec. I'd have to say (and I think that the .NET and Java communities would agree with me on this one) that the best model for driving technology forward requires a degree of open standardization and community participation coupled with an executive force at the top to provide vision and leadership. Fortunately, both the Java and the .NET communities seem to be on this track. Hopefully this trend will help developers from each side play better together in the coming years, and crank out some fine software while we're at it Now, if only more of the Microsoft leadership could take the two hours to read the Open Source Definition, the Free Software Definition, grok the difference, and start acting like it. Microsoft spent a decade educating news reporters about technologydid they think they were done? They need to realize the role that real Open Source organizations have to play in uniting small vendor communities, driving innovation and enabling small businesses and vendors to get a foothold in our industry. Sun definitely gets the picture, but there are still too many in the Microsoft camp who mistakenly equate Open Source with rabid, viral anti-capitalism, and they're missing out on a very important community resource in the process. Communities of every size are improved when their members work together and form businesses. Likewise, businesses are strengthened when they form communities and voluntarily share knowledge. Open Standards and Open Source licenses contribute to this. I don't fault Microsoft's leadership for not taking more time to explore and communicate the distinction between Open Source and Free Software. And I'm not just talking BSD versus GPL hereit goes much deeper than that. Most mainstream Journalists certainly don't get it, yet they're the ones writing all the sensational articles about Open Source (who would ever trust a journalist about technology or law anyway?) Most Open Source developers don't even understand the difference. But that's alrightthere are many people who do get it, there are books and literature coming out on the topic, and those who have figured it out will be happy to explain the difference to anyone who asks. Those of us committed to real Open Source development know that we're doing so in order to open up more technological markets to more people, that innovation and hard work in software development should be rewarded, but also that there's much more to business than the bottom line. Not to imply that Microsoft is completely oblivious to these thingsthere are some in Microsoft's ranks who know exactly what I'm talking about. Hats off to them, and may they all rise quickly through the ranks. What about a Shockwave Community Process?Posted by n_alex on May 21, 2004 at 12:31 PM | Permalink | Comments (0)This is pure speculation on my part, but what if Macromedia were to assemble a community-driven process based on the JCP that they could use to extend the Shockwave platform and give companies and individuals around the world a chance to have a voice in the matter? It strikes me that Macromedia could do the same thing with Shockwave that Sun has done with Java. If they did, I have a feeling that Shockwave would achieve the true universal ubiquity they've been pursuing for so many years. I'm not certain, but it seems that the only thing preventing companies around the world from wholeheartedly embracing the SWF platform as the standard platform, and not just the de facto platform, for developing Rich UIs is a perception about Macromedia holding monopoly control over the platform, a shortage of vendors offering competitively priced tools for working with Flash technologies and the attending lock-in fears and paranoia that naturally follow from that train of thought. So I'm floating this idea out, just to see what people have to say about it. Suppose the Shockwave platform had more vendors developing tools for it, and suppose tool vendors could be involved in steering the future of the platform (of course Macromedia would still have veto rights for any specification requests, as Sun does with Java), do you think the community wants and could support this sort of arrangement? When it comes to Rich UIs, nothing even comes close to having the market penetration and feature capabilities of Shockwave media. Building an equivalent open platform from scratch would require a massive movement, and probably a decade to achieve the momentum, mindshare and market penetration that Shockwave currently has--it strikes me as a tremendous waste of time to pursue this goal, when the answer lies right in front of us. The largest challenge would be to bring the major players to the table and get them talking. Is it possible? It's been done before. And I think it could be done again. Conference SeasonPosted by n_alex on May 21, 2004 at 12:02 PM | Permalink | Comments (4)Why on earth would I choose TechEd over JavaOne? Well, I didn't exactly choose TechEd. It chose me. Or, rather, Microsoft did. They've invited me to come to the TechEd conference as their guest and as a community-minded Java evangelist sort of guy. Who could resist generosity like that? I think the Microsoft folks are hoping I'll find something on their side of the fence worth writing home about. And to be honest, I'm sort of hoping the same. I'm not signing any NDAs while I'm there, and still refuse to install MS Office on my computer. But I am going to hang up my blinders for a week, and devote some serious attention to .NET technologies. If Scott McNealy can extend the olive branch, then I can too. So, in short, expect some coverage from San Diego. Probably nothing earth-shaking, but you never know. I'll try to keep the topics pertinent to Java vs .NET, architectural styles, interesting patterns, Open Source potenials, integration points, common ground and the like. A few Java.NET fusion topics might give those of you who are going to JavaOne some helpful context. Open Source Flex alternatives require broad industry supportPosted by n_alex on May 18, 2004 at 12:36 PM | Permalink | Comments (9)"When a scientist says something is possible, they're probably underestimating how long it will take. But if they say it's impossible, they're probably wrong" --Nobel Prize Winner Richard Smalley. In this case they're definitely wrong. Four years ago, while working for marchFIRST, I helped build a Flash-XML-Java driven site for building and configuring skinnable rich media blog sites. We built this for Proctor & Gamble's Tremor.com project. I've not used Flex, specifically because I would like to bring similar products to the Open Source market. The licensing restrictions for the beta versions were a bit draconian, and I'm careful to avoid potential future legal enganglements when intellectual property law and Open Source software is concerned. At this time, there is no alternative product to Flex or Lazlo that offers a competitive feature set. Such a configurable suite could be assembled with Flash MX and the library of Open Source J2EE and XML technologies available from the Apache Software Foundation & The Codehaus. The problem with running an Open Source project to build a Flash-XML-based UI framework is that very few Open Source developers can afford the Flash MX development suite, and at the moment, I count myself among them. If a framework of this kind is ever to make it to the Open Source marketplace, broad industry support will be required. However much I'd like to personally fund a project to develop this technology, I cannot at this time, and have no desire to go it alone. Tomcat, Geronimo, Apache, none of these Open Source technologies would exist for us to use if companies like Sun, IBM, HP, Apple, BEA and the ASF weren't willing to cooperatively drive the standards, share ideas and contribute time and energy to providing the necessary development infrastructure. This strategy has proven to be extremely successful and practical. The reason we don't have Open Source products for developing Shockwave media is not because the shockwave format is top secret. It's not. OpenSWF.org is a good place to start if you're looking for Open Source SWF editors. But in terms of features, Macromedia has outperformed the competition and achieved a virtual monopoly status in the marketplace with their tool sets. To their credit they did this by delivering better products to the market before their competitors could. But the perception is that now they dictate the standards, can bring their reference implementations to market long before anyone else and in recent years, as one of my readers recently put it, "they've grown haughty". The world has been content to rest on their laurels while this happened. Now it seems that Macromedia can charge any sum they want for their products, because they're the only game in town. The prices of the MX 2004 product line illustrate this. Back in 1998, a small business could easily afford a handful of licenses for Flash 3. With Macromedia chasing the high end of the market, what are the little guys going to do? Communities are improved by the presence of strong business, and businesses are improved when they join together into communities. That's what Open Source is all about--it's what separates us from the Free Software crowd. Unfortunately, the talking heads in the technical press usually don't recognize the distinction, and Open Source gets all the bad press that Free Software rightly deserves. If you check out Gluecode's website, you'll see their motto is "Open for business." I've never seen a better phrase to sum up the relationship between Open Source and the marketplace. (Gluecode, by the way, is my pick for "Company most likely to destroy the JBoss Group") Macromedia's shown us what's possible with the technology, and they've done a fine job addressing the desires of the market. But there's also a gigantic and growing market for affordable alternatives. If we want affordable alternatives to Flex, then we need to generate them. Any successful effort to bring shockwave products to the Open Source market would greatly benefit from Macromedia's leadership and support. Macromedia is no bogeyman. They've recently broken their MX 2004 suite into two editions, but they still each cost over a thousand dollars. Their older products aren't getting much cheaper, either. I am going to be at the Microsoft TechEd conference next week in San Diego. Anyone who wants to meet with me there and discuss the possibility of developing Java and XML driven Shockwave technologies for the Open Source market should send me an email. Any help Macromedia can offer will be welcomed with open arms. Apache Geronimo milestone releasePosted by n_alex on April 28, 2004 at 11:31 AM | Permalink | Comments (4)I spoke with a couple of Geronimo's developers this morning, and I'm told the first version of the server (with all the pieces in place) is tagged in CVS and will soon be available for binary download. I'm also told the release notes caution users not to bet the farm on it in its early form. This will be a release for hackers, enthusiasts and 3rd party vendors who will be contributing major components and subsystems to it in the coming weeks and months. I've been keeping up with its development since the project's inception, and it'll be great to finally have a relatively stable version to develop against. I encourage anyone interested in it to visit the project's site in the Apache incubator. Please pass the StringBeans -- IoC-3 Components and String DependenciesPosted by n_alex on April 28, 2004 at 11:21 AM | Permalink | Comments (12)It boils down to this: You can use Picocontainer's constructor-dependency-injector strategy to automatically pipe an object instance into an action component, with the understanding that once the action is executed, it will alter the state of its dependency objects. This is one of the core principles of the WARS style. So, you create an object, invoke the execute() method on it, and assume that the dependency object has been altered. This strategy makes good sense and works very well in most cases. But what if the component's dependency is a I'm not positive, but I'd bet that this is a fairly common problem and with the rise of constructor-dependency-injector strategies will become more common. Assume for a moment that you can only pipe your string into a component by way of its constructor, and that its I want to be able to pass a String into an object, tell that object to operate on it, and have my version of the String change in turn. I can do this with any other object, just not a String. Has this problem arisen in any of the various finite-state machines or other state-processing engines? The obvious solution to this problem, then, is to wrap up the String in a simple component (I'm calling it StringBean). You can pass the wrapper object to the constructor (or method, in my simple example below). I'm fine doing this, but I don't want to create a stupid dependency if I can help it. Can anyone suggest a different / better way to overcome this problem (excluding the unacceptable solutions listed above)? It's a tricky problem, because strings are "separate but equal" with other objects in Java. (Here's a simple class with a main method to illustrate my point.)
public class StringTester {
public static void main(String[] args) {
String s = "Hello, World";
System.out.println("Starting state: " + s);
funk(s);
System.out.println("Trial 1 -- ending state: " + s);
System.out.println("--");
StringBean b = new StringBean(s);
soul(b);
System.out.println("Trial 2 -- ending state: " + b);
}
// does not alter the state of the incoming object
private static void funk(String s) {
s = s.toUpperCase();
System.out.println("in funk: " + s);
}
// alters the state of the incoming object
private static void soul(StringBean b) {
String s = b.toString();
b.setString(s.toUpperCase());
}
private static class StringBean {
private String s;
private StringBean(String s) {
this.s = s;
}
public String toString() {
return this.s;
}
private void setString(String s) {
this.s = s;
}
}
}
Dear Alex, tell me the futurePosted by n_alex on January 31, 2004 at 02:07 PM | Permalink | Comments (5)
Friends of mine have said they won't stop writing code until they've re-implemented all of the core unix services in Java. Others have said that until there is an Open Source (non-GPL) alternative to linux that there will continue to be work for us to do, and that once the nature of the GPL license gets tested in court and the public understands more about what it does, they will want to replace Linux with something they actually own. Or maybe not. I don't know the future. I do believe the research however,
If Open Source helps people channel their desire to feel useful and to do challenging and beautiful work until either the economy picks up or they pick up their lives, then I'll do everything I can to help them learn about it and to encourage them to participate in it. The American programmer is my fellow "Forgotten Man". And by Man I also mean Woman. I know too many nice and talented ladies in the field who deserve better just as much as the men. So, you want to know what "exactly" I see in the future. Sorry. I don't see the future--but I do have a poolside view of the present. I see books on Geronimo, Drools, Maven and Groovy coming down the pipe. I see people pushing the bounds of the J2EE platform. I see discussions about replacing servlet technologies. I see Tool designers having their day in the sun. I see a flurry of spontaneous activity. Like insects moving around to warm their hives in the winter, Open Source--as science for its own sake, for the fun of it--has the potential to keep the American programmers warm enough to survive the winter we're entering. I certainly see no reason for intelligent men and women to be contemplating suicide over the loss of a cube. There's just plain more to life than bits and chips. What I don't see is a US bull market in technology in the near future. For all I know we could be looking at Dow 4700 by June and the Nasdaq trading at 18 times earnings. I see that happening. I just don't *know*. I'm not in this field for the job security. I'm in it because I believe there is something big at stake in it. If I wanted job security I would have studied mortuary science. I try not to get too hung up on implementation details (.NET, J2EE, EJB) because those things come and go. I'm more concerned with the overall principles (making information more accessible and useful) and applications (building a network of like-minded people to do business with). There will be no beamings of Scotties unless someone figures out a way to get around the Heisenberg principle. Heisenberg applies to markets, too. As soon as you think you know how the market works, your new understanding of it alters it until your knowledge no longer applies. But, on the science-driving front, carbon nanotubes can be used to make Casimir plates, and there is a potential source of unbounded energy waiting to be tapped--all around us. Nanotech has incredible potential for medicinal uses as well. So nanotechnology will likely *not* be a fad. It's just something we the "unwashed masses" don't understand very well yet . I think the internet will continue growing. Demand for high-speed fiber optics will replace our copper networks It'll take decades to realize that, but it'll happen. I also think that spontaneously evolving P2P wireless networks will probably grow to address our need for mobility until a less expensive way to make and lay fiber networks becomes available. How far this all applies to you and me here in Minneapolis remains to be seen. We have the University as a gateway into nanotech. Perhaps you could look into a full time job there. For the rest of it, I'm no prophet. Just a cold-eyed optimist. Writing software is like driving a bus.Posted by n_alex on January 27, 2004 at 03:25 PM | Permalink | Comments (2)The best software engineers I know make writing code the central part of their day. Like playing a sport or a musical instrument, writing software requires first that you show up. While the three of us were having coffee, a friend of mine once asked Dain Sundstrom how long it would take to become a really good Java developer. Dain's answer was "six hours . . . every single day." You'd be amazed how many talented writers I know who don't succeed at writing (software or otherwise) simply because they don't sit down and write. Ultimately, the results are never as good as you want them to be, and what you want is never as good as people need it to be. So you've got to fall in love with the process as well as the product. You might not get paid for it. But if you love the process you'll get something to sustain you while you learn. You're not guaranteed to get better if you sit and write. But you're guaranteed not to get better if you don't. Also, don't get too attached to your work. You might be proud of it, but don't get so proud that you resist hacking it to pieces in order to improve it. This was a hard lesson for me early on. But now, I've learned to sustain myself creatively by rendering all of my work from the day before worthless, or at least trying to. It means I'm doing my job. I call this practice "eating your babies". Some corporations take this mentality to an extreme and hire a division whose sole purpose is to dream up ways to put the parent company out of business before the competitors do. Then they incorporate the findings into their business strategy. Baby eating requires you to simultaneously be more critical and more forgiving of your work. My two cents on becoming a better programmer: long hours and good-old Jonathan Swift style baby eating. I finally get IoC-3Posted by n_alex on January 27, 2004 at 02:37 PM | Permalink | Comments (2)It doesn't make sense to clutter the action API with accessor methods for these values in a class meant to abstract actions from the framework, so I just have a generic accessor for the mdbean. Then the classes that need it can just pull the values directly out of the MDBean. If there was a way to synch the internal values with the IDE, I'd be set. What I couldn't figure out before was how IoC-3 or "dependency injection" worked with subclasses. But you just have the subclass make a call to the superclass constructor (just like in Matt Albrecht's IFTC test package), which is so simple I had to laugh at myself for not using it earlier. I use interfaces so much that I don't know all the subclassing tricks yet. Every now and then something sneaks up on you that you realize you should have known earlier. Like thread local. And state coupling. Open Source UI framework comparable to LazloPosted by n_alex on December 10, 2003 at 09:56 AM | Permalink | Comments (6)Now, before I go on, I want to address a very strong prejudice that I've noticed in my dealings with Open Source developers. It's the old familiar sentiment that if it isn't built in Java, it ain't worth using. That might be true for a lot of people, and I have a lot of respect for that sentiment--it's an important one for our community. We're doing more than writing software in a certain language here. What we're doing is contributing to the development of a J2EE development platform. We're building tools for each other to use. If you've got the right tools, all the jobs in the world open up for you. For instance. There are precious minerals deep in the earth waiting to be harvested. These minerals are incredibly valuable and useful in industry. But if you're up on the surface walking around with only a stone axe and a loincloth you'll never be able to do that job. Another irony about tools is that sometimes you have to acquire and master the tools before you can even learn that a job exists. The creative reapplication of tools toward new industrial pursuits is what opens up entire new markets. Another example. When I was seven years old, nobody in the world could make a living as a multimedia internet programmer. There were no Flash designers, because there was no Flash. When I was 21, that had all changed. I knew a lot of people who were making big dollars just to play around with Flash. One of the reasons for this, perhaps the biggest reason, is that by the time I was 21, the tools had improved. That said, let's try to keep our input streams open to the possibility that Flash is still a very useful and cool piece of software (especially for those who know how to use it), and not relegate it to the status of "web designer's toy". I'll be the first to admit that the potentials of Flash have been largely squandered on sick cartoons and the infamous "Flashturbation" sites that every budding C-Corp and their brother launched in 1999 (you know--the ones with the contrived techno scores, who desperately wanted to be 2advanced?) Well, for a while I made a living chasing that ghost, then gave it up for a while, returned to school, read some John Milton, some Thomas Paine and some Robert LeFevre, and now I'm back at it, looking for ways to develop new and better tools. This time, however, to retain my sanity, I'm doing it without a host company (for-profit or otherwise). And this time it has proven to be a lot more fun. So here are some of my ideas. I want to build a manageable, rules-based J2EE development framework that enables the liquid UI capabilities of Flash on the presentation side. I want this thing to stream dyanically generated XML content to the client-side application and to completely automate the persistance layer. On the client side, I want to build an abstract UI engine in which users can plug in Swiff graphics libraries. Ideally, the UI engine would be able to digest swiff files and use them to skin the entire application. If this software is built correctly, it should allow Flash developers to design skins which overlay UI components. They wouldn't have to deal with data maintenence at all--just building innovative graphics libraries. The app should easily plug into J2EE persistence. A lot of the contrived Flash apps of the 90s were IMNSHO a result of the nigh impossibility of reaching the persistence layer without having to fork over 35,000 USD for Generator. The tools were the problem then, and the tools are the problem now. FlashMX costs a pretty nickel, and there seems to be a shortage of Open Source Java middleware developers in the world who know Flash like the back of their hand and have experience developing abstract application frameworks. To prove that point, I'm sounding out. If there are any more of you guys out there, for God's sake, drop me a line. We'll throw a party and write some new Flash tools, or maybe Macromedia will shoot us with the money gun and comp us FlashMX development suites in return for the fruits of our Open Source loins. In the meantime, 'll fork over the 75 bucks to launch a little non-profit company so we can get started right away. Barring that, I'd settle for SVG, but I'm not convinced yet that it's worth its spurs. Why I won't move my projects to ApachePosted by n_alex on November 22, 2003 at 11:05 AM | Permalink | Comments (2)Noel, Thanks for your concern about this. I license software under the AFL so I can avoid legal entanglements relating to collective ownership of my property and conflicts of control over that property which derive from collective ownership, and also to grant greater rewards and incentives to future developers and users. Future versions of the ASL might correct this problem and give me incentive to relicense and get more involved with the ASF. If so, that's great. But it's only one factor. I'm also trying to avoid political entanglements which threaten the development of software and (more importantly) the development of self-motivated, autonomous individual developers. What percentage of people get involved in Open Source because they want to improve their talents, their experience, their knowledge, so they can provide a better life for themselves and maybe for their families? Probably most of them. Possibly all of them. I think the need to develop a strong community can work to the detriment of individual development. There are hundreds of people on this list who are hungry to contribute and develop their skills through the improvement of the community but who simply don't have the experience or opportunity to function as autonomous individuals. The current structure of the ASF simply does not scale to meet the demand generated by this project. So the community has a couple of options, maybe more. They can either add more layers of management and tell people exactly what they should do in order to include more people in development and grow the active community (I wouldn't advise this), or they can develop some sort of mentoring or sponsoring program in which candidates are picked out of the list by one of the committers and sponsored for a period of time in order to train them about the workings of the technology and the community. The apprentices who show the most initiative and mastery over the technology and are socially able to perform as full members of the community could then graduate to committer status and can choose their own apprentice (or even two or three apprentices if they think they can handle it). This master/apprentice system has been used with great success for thousands of years. It contributes to the development of a strong community by creating the social incentives to lift up newcomers and to recognize talent before it gets frustrated and leaves. I don't know, Noel. I have a strong sense that what I'm doing for this project is good for the people around here and good for me. I don't need you guys breathing down my neck all the time with rules and politics. I'm here to write code and have fun, and with comments like those Roy made last night and which Greg has made from time to time, I don't feel I can do much of either unless I'm willing to go it alone. I consider this the failure of the ASF and wish that its members would do something to detoxify the environment. Roys reasons might have been genuine but his conduct was intolerable. I can't speak for anyone else around here, but I want to produce good software more than I need the approval of the ASF, and I'm not afraid to go it alone if it means I can work in peace. --
----- Original Message ----- From: "Noel J. Bergman" On Branding and Copyright--Open Source For EntrepreneursPosted by n_alex on October 21, 2003 at 06:46 PM | Permalink | Comments (2)There are two subtle but unique resources in open source which, if acquired and carefully leveraged, can give your business a leg up over some of the big players in the market. One of these resources is control over the copyright of the software. The other is control over the brand. Both of these resources are incredibly important over the lifetime of a successful software project but are often overlooked in the rush to set up a CVS tree and start committing. But later on, major problems can spring up when you find yourself locked in to somebody else's license scheme or (potentially worse), somebody else's brand. The Licensing question eventually always boils down to Copyright authority. If you've a warchest of developers from around the world who've committed software to your project over the course of a couple of years, and you want to make a change in the licensing, you're stuck. In order to change the license you need to get the signature of every developer who has ever worked on the software. Take JBoss for an example. Earlier this year when Core Developers Network forked the JBoss project, they knew full and well they could not change the license of the software from LGPL to Apache. They would have needed to get permission from every person who ever worked on JBoss if they wanted to do that. So they were bound to the LGPL, which is why the Apache Geronimo Project must completely rewrite the JBoss deployment system. Ironically, this has turned out to be a great excuse to overhaul and modernize a much-needed piece of technology. We're adding full JSR-77 and JSR-88 support, among other things. But what few people know is that the licensing matter was the smallest obstacle in forking the JBoss project. The biggest problem was the brand. The trademark to the word "JBoss" is owned by Dr. Fleury. Now before you gnash your teeth and curse the man, think about the benefit for him as an Entrepeneur. He is the sole owner of his trademark, which means he owns the brand. Nobody can use the JBoss trademark in their product without his approval--including in package declarations and imports in their software. Now that's an advantage that could also be yours, if you ever built a successful product. That degree of control over the brand gave Dr. Fleury an edge. Core Developers Network hacked the logic of the law and renamed every instance of the word JBoss to Elba, but go take a look at the Elba downloads from the last month and compare it with JBoss 3.2. The fact remains that Dr. Fleury controls the brand. He's invested a lot of time in that brand, and he'll no doubt reap the benefit of that investment someday. And more power to him for thinking ahead. It's really too bad that he didn't think ahead about the copyright issue. He admitted earlier this year in an interview that one of his largest regrets was not licensing the product under the full GPL. Why? Because then he could follow the MySQL business model and sell non-GPL licensing at a premium, without losing the good graces of academia and the free software community. Now consider the Apache Software Foundation. Here's an organization that really thought matters out. Not only does the Foundation have control over the brands of their respective projects, but they also require that all committers sign a contract assigning the ASF copyright authority over everything you commit to their projects. Now at first, this seems really bad, but once you realize you *always* have original copyright over your own creations and that you cannot just give it away, that the ASF really just has a copy of your copyright, you generally sign the form and bask in the glory of having committed code to the ASF. So where does this bring us? To you, dear reader. Your projects and the potential companies you might someday form in order to help you promote and reap the benefits of your open source endeavors. We've seen how a strong brand can drown out an anemic one how control over that brand can be a tremendous advantage in business. Strong brands are assets which cannot easily be measured, but whose effects are nevertheless extremely important. We've also seen how obtaining control over the copyright assignments for your software project can help that project leverage its license down the road, and how failure to do so can lead to license lock-in. Licensing is without a doubt a major concern of any software business. If you can't change your license over time to adapt to the changing needs of the market, you could find your company dead in the water. Plus, open source developers will respect you for bringing up the license issue before they start contributing their spare time to furthering your commercial success. People like to know what they're getting into, or at least they like to have some idea about it. So next time you come up with a fantastic idea with obvious benefits to the business community and you get serious about implementing it in Open Source, think for a while whether or not you'd like to stake a claim in the marketplace as a professional. Do some serious research on licensing and copyright law and if you decide to take the Entrepeneurial challenge give some serious thought to your branding strategy. If you don't, someone else might just come along, scoop up your good ideas and do it for you. Who wants to be a starving artist, anyway? Apache Geronimo is releasing a "State of the Project" announcement tomorrow.Posted by n_alex on September 04, 2003 at 08:12 PM | Permalink | Comments (6)So far, so good. First of all, traffic on the Geronimo-dev list has been incredible. Literally hundreds of developers have launched themselves into the Geronimo-dev mailing lists. Each week there are nearly five hundred posts to the dev list. Andy Oliver stirred up some trouble for us by calling up HONOR, an American Indian advocacy group located right here in Minneapolis. I'm currently talking with HONOR about the Apache Software foundation. The lady there is really nice. I'm planning to add i18n mechanisms in the JMX-console so that we can put out a Lakota Indian language option for it in the default downloads : ) I don't actually mind the whistleblowing that much. It's really not a big deal. I think it would be a great chance to introduce some American Indian communities to Open Source. It costs nothing, so it levels the playing field for small companies entering the market and educational institutions who want to train their students in software development / web development. Oliver might actually have done us (and HONOR) a great favor by opening a dialogue for this. I'd like to see computer science classes in Indian high schools be able to teach web development to their students in their native languages. How cool would that be for them? On the other hand, it is sort of curious that Oliver got so concerned about the name of our project considering his is named "Poi", which is the name of a ceremonial dance used by Maori tribes dating back 1000 years. Or is it the name of that Hawaiaan food made from the Taro plant? I always get that mixed up. In any case, there might be some grant money at the University here to cover the cost of learning Lakota, but I think it'd be fun regardless. Maybe someone on the project already knows Lakota (or maybe you know someone who knows Lakota. . . . ) Ojibwe would be fun as well. I wonder if they're at all related? Anyway, on my front, I've noticed some of the UI guys are organizing efforts to build the different JMX consoles the project needs. I know for certain there's Twiddle and my web console. Someone mentioned building a Swing GUI (Thick client, but hey--I like a little friendly competition) I think eventually I'm going to have to write an "ASF Newcomer's Guide" with suggestions on how to get involved with Open Source and Apache in particular. I'm no expert, but I'm taking copious notes for when that time comes around. Off to work on the JMX web console now. The State of the Project announcement comes out tomorrow and I've got a lot of work to do yet tonight for it : ) Total Government Awareness, Software and EthicsPosted by n_alex on August 20, 2003 at 11:02 AM | Permalink | Comments (10)Several years ago I was working on a system for modelling and simulating social pressure. The idea was that actions have repercussions and that I could build dynamic ecosystems staffed with characters of differing social power. The pressure system would stimulate social interaction between criminals, the wealthy corporate elite, impoverished citizens and various authorities in a cyberpunk RPG setting. I was discussing my ideas with a professor and friend of mine over lunch one day, when he posed a difficut question to me. "What do you think would happen if a totalitarian government got ahold of and modified your software, Norm?" We discussed it for some time, and I abandoned my ideas for the project because of its potential social repercussions. My caution at the time was inspired by fear. After a few years have passed, I think the fear was justified. Earlier this summer the Computing Culture Group at MIT's Media Lab announced a project titled "Open Government Information Awareness" project. It is an effort to turn the Defense Advanced Research Project Agency (DARPA) inspired "Total Information Awareness" project on its heels and point it back at the US government. In this information-inspired age the idea of a "Civilian Information Agency" which conducts espionage on its own government is a chapter right out a Neal Stephenson novel. The Computing Culture Group is doing with technology something which, in my mind, definitely needs to be done. They're using it in an open manner to address social and ethical concerns in their community. This project has nothing to do with entertainment or the enterprise. It is "Not Economically Viable". It generates no wealth, per se. But well-being extends so far beyond wealth. Especially when it comes to the well-being of a society, or a group of societies, for that matter. Some argue that a person's economic freedom will always lead them to greater liberty. That's a fine argument, supported by many scholars and successful people throughout the centuries. But economic freedom is a symptom of, not the reason for this liberty. There's an underlying pattern here. The concentration of social power has an inverse relationship to liberty. What does that mean? It means that social power--the ability to effect social change--has a natural tendency to concentrate and grow at the expense of freedom. That assertion deserves its own expanded essay, but this is just a blog entry, so I'll get to the point. Whether it concentrates as totalitarian authority in the hands of a government, as capital (social power) in the hands of private industry, as money in the control of a private monopolistic financier class or as societal dominance by institutions of religion, the effects are always the same. Poverty, disease and warfare. Capital, money and authority (whether the authority be mentally or physically coercive) are all forms of social power--they enable people to effect social change. Social power works to the detriment of liberty when it is concentrated into the hands of a few people. So, what does this have to do with Open Source software or the Total Government Awareness project? Because knowledge is also social power. The dissemination of knowledge hinders the concentration of social power. It enables a larger number of people to effect change in their society. It helps them recognize patterns of deception and corruption in their governments, their businesses, their institutions of faith. Because knowledge is social power, it too tends to concentrate and aggregate. Google News is a perfect example of this. So is the Total Government Awareness project. They have created "Cathedral" style software pinnacles which are vulnerable to corruption. Google has already assisted the Chinese government in filtering its search results to prevent Chinese citizens from reaching certain information resources on the internet. The question or study of ethics is not usually well recieved in any field. Throughout the twentieth century people have reviled and mistrusted any use of the term ethics. It has taken on a coercive role and the suspicion of many free thinkers. Geoffrey Galt Harpham in his essay "Ethics", writes a particulary chilling explanation of the return of ethics to the world of literary criticism; one which prompts one to reconsider the role of ethics in software:
The point of this experpt is that ethics (and their absence) do play a role in the work of academics and private sector software engineers. Whether we write software for the academy or for a corporation, we must eventually confront the repercussions of our actions and the effects that they will have on our community. Trying to deny this responsibility is, in Harpham's words "delusory". Just because we are engaged in theoretical pursuits in software engineering or because we are "trying to earn a buck" doesn't mean we are immune to consideration for ethics and principles. Yet the Open Source Initiative has repeatedly asserted the contrary. Earlier this summer, Lawrence E. Rosen, the general counsel for the OSI responded to a letter of mine inquiring about the potential for a non-military Open Source license that "Software is not viewed by the open source community as a valid way to address political or moral issues." It seems not everyone agrees with them and that I'm not alone in my belief that software is subject to the judgement of ethics just as surely as literature is. The Computing Culture Group at MIT has stepped out of the "software should be politically neutral because ethics play no role in science" myth which is actively propagated by the Open Source Initiative. They have taken an ethical stand and are working, in their own way and of their own free will, to oppose the concentration of social power in their society. As software developers, we have a responsibility to ourselves and to one another not only to write software for our economic progress, but also for social and ethical progress. The Computing Culture Group recognizes this, and hopefully their work will inspire software developers around the world to reconsider the conflict of interests they have as both scientists and as citizens of a free society.
Computer Science is PhilosophyPosted by n_alex on August 09, 2003 at 09:51 AM | Permalink | Comments (2)Logic is the foundation of philosophy. It's also the foundation of Computer Science. I think it's interesting how some in the IT industry try to brand IT as a purely pragmatic field, in that charming American "we don't trust academics" sort of way. But in reality, pragmatics seems to play a minor role in developer's minds. I've seen some pretty wild ideas just looking for a practical use. Many products (and much of the documentation surrounding them) fail miserably when it comes to user friendliness. Pragmatics are an afterthought for a lot of Open Source projects. There are some brilliant minds out there in the Open Source world, engaged philosophy and speculative inquiry. I don't know many of them in person, but I think the Open Source community (at least the part that doesn't focus all its attention on developing roleplaying games) is very philosophical. At least it is from my perspective. It's like a new generation of philosophers has risen out of nowhere, grown to maturity unannounced and are working to change history as we carry out our daily lives. I wonder what their effect will be on the field. It's certainly an interesting time to be around. | ||
|
|